台湾先物・オプション API

12 個のエンドポイント

最終更新 2026-10
ベース URL
https://api.blave.org
認証
すべてのリクエストに api-key と secret-key ヘッダーを付ける
アクセス
API plan or Blave Agent plan
レート制限
キーごと・IP ごとに 5 分間 500 リクエスト

台湾先物 OHLCV

GET/studio/market/twfutures/ohlcv/<symbol>/<schema>
データ開始
TXF 2011-01-03、MXF 2020-03-22(1d)、個別株先物は銘柄ごと
更新頻度
ほぼリアルタイム

パラメータ

名称説明許容値デフォルト
symbol
string · path必須
期近のつなぎ足TXF(台指期)、MXF(小台)、または ohlcv/symbols に含まれる個別株先物のコード(大文字・小文字を区別しません)
schema
string · path必須
時間足1m, 5m, 15m, 30m, 60m, 1d
start
string · query
開始日YYYY-MM-DDend − その時間足の最大範囲
end
string · query
終了日YYYY-MM-DD今日(UTC)

リクエストあたりの最大範囲(end − start):1m 31 日 · 5m 62 日 · 15m 93 日 · 30m 186 日 · 60m 365 日 · 1d 3650 日。

例

レスポンス

{"symbol", "schema", "data": [...]}.

フィールド型単位説明
tsstringUTC の ISO 形式足の開始時刻
open / high / low / closefloat指数ポイント(個別株先物は価格)価格
volumeint枚(口)数量

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid symbol. Allowed: [...]"}対応していないシンボル
400{"error": "Invalid schema. Allowed: [...]"}時間足が不正
400{"error": "Invalid date format. Use YYYY-MM-DD"}日付の形式が不正
400{"error": "date_range_too_large", "message": "...", "max_days": <n>}範囲が上限を超過
503エラーメッセージデータソースを一時的に利用できません

備考

  • 2017-05-15 より前の日中足は日中セッションのみです(夜間セッション 15:00–05:00 台北時間はその日に始まりました)。そのため、一日あたりの足の数はその日を境に約 300 本から約 1,140 本に増えます。
  • この系列は月次の最終決済日に限月を乗り換え、価格調整は行いません。バックテストでは乗り換え部分を除外してください。
  • 乗り換えルール(すべての時間足。TXF、MXF、個別株先物に共通):月次の最終決済日(第 3 水曜日。その水曜日が休場の場合は翌取引日)は、終日、満期を迎える限月を使います。この限月は台北時間 13:30 の引けまで取引され、当日の台北時間 13:31–14:59 には足がなく、15:00 の夜間セッションから系列は翌限月になります。最終決済日の 1d の足は満期を迎える限月のものなので、その終値は当該限月の 13:30 の最終約定です。
  • 数年分の履歴は、JSON を分割して取得する代わりに ohlcv/<symbol>/export/<year> を使ってください。
  • データのない範囲は 200 と [] を返します。
  • 系列が直近の取引日まで続いていると想定しないでください。MXF と CAF はリクエスト日までのすべてを要求しても、どちらも最後の足が数か月前のものでした。data[-1]["ts"] を確認してください。
  • 1d の足の時刻部分は 16:00:00+00:00(台北時間 00:00)で、UTC の午前零時ではありません。タイムスタンプが日付に揃っていると想定せず、ts から日付を取ってください。
  • TXF の開始日は 1d と日中足に当てはまります。MXF の開始日は 1d のものです。個別株先物は銘柄ごとに異なり、CAF の 1d の足は少なくとも 2016-09-18 からあります。
  • 足はリクエスト時に更新されます。

台湾先物 分足の対応シンボル

GET/studio/market/twfutures/ohlcv/symbols
データ開始
スナップショット
更新頻度
リアルタイム

パラメータ

なし。

例

Python
symbols = requests.get(f"{BASE_URL}/studio/market/twfutures/ohlcv/symbols", headers=headers, timeout=30).json()["data"]

レスポンス

{"data": ["CDF", "DHF", "MXF", "TXF", ...]}:ohlcv、ohlcv/export、bid_ask_vol で使えるシンボルです。TXF、MXF に加え、流動性を基準に選んだ分足対応の個別株先物の一部が含まれます(231 銘柄ある個別株先物の大半は対象外です)。

エラー

共通エラーのみ。

台湾先物 1m 年次エクスポート

GET/studio/market/twfutures/ohlcv/<symbol>/export/<year>
データ開始
2011(TXF)
更新頻度
当年分はダウンロード時に更新

パラメータ

名称説明許容値デフォルト
symbol
string · path必須
シンボルohlcv/symbols と同じ
year
int · path必須
暦年2014 – 当年

例

Python
import ioimport pandas as pdr = requests.get(f"{BASE_URL}/studio/market/twfutures/ohlcv/TXF/export/2024", headers=headers, timeout=120)raw = pd.read_parquet(io.BytesIO(r.content))raw.index = pd.to_datetime(raw["ts"], utc=True)bars_60m = (raw[["open", "high", "low", "close", "volume"]]            .resample("60min")            .agg(open=("open", "first"), high=("high", "max"), low=("low", "min"),                 close=("close", "last"), volume=("volume", "sum"))            .dropna(subset=["open"]))

レスポンス

application/octet-stream。parquet ファイル(<SYMBOL>_<year>_1m.parquet)で、列は ts、open、high、low、close、volume です(1m の足)。

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid symbol. Allowed: [...]"}対応していないシンボル
400{"error": "Invalid year. Allowed: 2014-<current>"}年が範囲外
404{"error": "no_data", "message": "No 1m data on disk for <symbol> in <year>"}ファイルなし

備考

  • 一年につき一リクエストで、サーバー側の計算は一切ありません。リサンプリングはローカルで行ってください。
  • ohlcv/<symbol>/1m と同じ期近のつなぎ足で、最終決済日の乗り換えルールも同じです(月次の最終決済日には台北時間 13:31–14:59 の足がありません)。
  • 過去の年のファイルは変更されません。当年のファイルはダウンロード前に更新されます。

台湾先物 売り気配・買い気配別の約定数量

GET/studio/market/twfutures/bid_ask_vol/<symbol>
データ開始
2018-02-22(TXF)
更新頻度
ティックから集計し、リクエスト時に更新

パラメータ

名称説明許容値デフォルト
symbol
string · path必須
シンボルTXF、MXF(どちらもデータが返ることを確認済み)。他の ohlcv/symbols のシンボルは未検証
start
string · query
開始日YYYY-MM-DDend − 31 日
end
string · query
終了日。end − start ≤ 31 日YYYY-MM-DD今日(UTC)

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twfutures/bid_ask_vol/TXF", headers=headers,                    params={"start": "2026-05-29", "end": "2026-05-29"}, timeout=60).json()["data"]# [{"ts": "2026-05-29 00:45:00+00:00", "bid_vol": 669, "ask_vol": 447, "total_vol": 1156}, ...]

レスポンス

{"symbol", "start", "end", "data": [...]}、1 分ごとの行、日中セッションと夜間セッションを含みます。

フィールド型単位説明
tsstringUTC の ISO 形式足の開始時刻
bid_volint枚內盤:買い気配に当てた約定(売り主導)
ask_volint枚外盤:売り気配を取った約定(買い主導)
total_volint枚合計。分類できないティックを含みます

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid symbol. Allowed: [...]"}対応していないシンボル
400{"error": "Invalid date format. Use YYYY-MM-DD"}日付の形式が不正
400{"error": "date_range_too_large", "message": "...", "max_days": 31}範囲が 31 日を超過
503エラーメッセージデータソースを一時的に利用できません

備考

  • 行は期近のつなぎ足で、乗り換えルールは ohlcv と同じです。月次の最終決済日には、満期を迎える限月の台北時間 13:30 の引けから 15:00 の夜間セッション開始までの間に行がありません。夜間セッション以降の行は翌限月です。

台湾先物 限月別日次データ

GET/studio/market/twfutures/daily/<futures_id>
データ開始
TX 1998-07-21、MTX 2001-04-09、CDF 2010-01-25
更新頻度
毎日、台北時間 15:00 頃以降

パラメータ

名称説明許容値デフォルト
futures_id
string · path必須
商品英字 2–6 文字、大文字・小文字を区別しません。例:TX、MTX、TMF、TE、TF、または個別株先物のコード(例:CDF)
start
string · query
開始日YYYY-MM-DD1998-07-01
end
string · query
終了日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twfutures/daily/TX", headers=headers,                    params={"start": "2026-08-01"}, timeout=60).json()["data"]

レスポンス

{"futures_id", "data": [...]}。一日に複数行(限月 × 取引セッションごと)。

フィールド説明
date, futures_id日付、商品
contract_date限月(スプレッド取引は / を含みます)
open / max / min / close価格(max = 高値、min = 安値)
spread / spread_per前日比/前日比 %
volume枚数
settlement_price清算価格
open_interest建玉
trading_sessionposition(日中)または after_market(夜間)

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid futures_id"}形式チェックに失敗
404{"error": "No data found for futures_id: <id>"}データなし
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • TX/MTX/TMF の直近日のデータは TAIFEX の公式公表データから取得します。
  • TX が最も古い商品で、他はそれより後に始まります(CDF は個別株先物です)。
  • サーバーキャッシュ:5 分。

個別株先物 日次データ(バッチ)

GET/studio/market/twfutures/stock_futures/batch/daily
データ開始
銘柄の上場日ごと(CDF:2010-01-25)
更新頻度
twfutures/daily と同じ

パラメータ

名称説明許容値デフォルト
futures_ids
string · query必須
コードカンマ区切りの個別株先物コード、≤ 250
start
string · query
開始日YYYY-MM-DD1998-07-01
end
string · query
終了日YYYY-MM-DD今日

例

Python
body = requests.get(f"{BASE_URL}/studio/market/twfutures/stock_futures/batch/daily", headers=headers,                    params={"futures_ids": "CDF,DHF", "start": "2026-08-01"}, timeout=120).json()

レスポンス

{"data": {"<futures_id>": [...rows as /daily...]}, "failed": [...]}。failed = 取得に失敗したコード(再試行してください)。どちらにも含まれないコードは、実際にデータがありません。

エラー

ステータスレスポンスボディ条件
400{"error": "futures_ids parameter required"}未指定
400{"error": "futures_ids exceeds max 250 per request"}上限超過
400{"error": "Invalid stock futures_id(s): [...]"}個別株先物でないコードが含まれている
503{"error": "Stock futures symbol list temporarily unavailable. Please retry shortly."}シンボルリストを取得できません

台湾先物 三大機関投資家

GET/studio/market/twfutures/institutional/<futures_id>
データ開始
2018-06-05
更新頻度
毎日、台北時間 15:00 頃以降

パラメータ

名称説明許容値デフォルト
futures_id
string · path必須
商品指数先物:TX、MTX、TMF、TE、TF(すべてデータが返ることを確認済み)。個別株先物は非対応
start
string · query
開始日YYYY-MM-DD2018-06-05
end
string · query
終了日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twfutures/institutional/TX", headers=headers,                    params={"start": "2026-08-01"}, timeout=60).json()["data"]

レスポンス

{"futures_id", "data": [...]}、一日あたり 3 行(自營商/投信/外資)。

フィールド説明
date, futures_id日付、商品
institutional_investors投資家の区分
long_deal_volume / long_deal_amount買いの取引(枚数/千台湾ドル)
short_deal_volume / short_deal_amount売りの取引
long_open_interest_balance_volume / long_open_interest_balance_amount買い建玉
short_open_interest_balance_volume / short_open_interest_balance_amount売り建玉

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid futures_id"}形式チェックに失敗
404{"error": "institutional data not available for stock futures (<id>)"}個別株先物
404エラーメッセージデータなし
503アップストリームのレート制限/シンボルリストを取得できません後で再試行

備考

  • 直近日のデータは TAIFEX の公式公表データから取得します。
  • *_amount の単位は千台湾ドルです。これは桁数からの推定で、アップストリームには明記されていませんが、計算で裏付けられます。TX のある行で long_open_interest_balance_amount 722870036 を ..._volume 78292 で割ると一枚あたり 9,233 になります。TX の一枚は指数 × 200 なので、9,233 千 ÷ 200 ≈ 46,160 指数ポイントとなり、その日の指数の水準と一致します。台湾ドルとして読むと 1,000× 小さくなります。
  • サーバーキャッシュ:5 分。

台湾先物 大口取引者

GET/studio/market/twfutures/large_traders/<futures_id>
データ開始
2007-01-02
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
futures_id
string · path必須
商品指数先物。例:TX。個別株先物は非対応
start
string · query
開始日YYYY-MM-DD1998-07-01
end
string · query
終了日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twfutures/large_traders/TX", headers=headers,                    params={"start": "2026-08-01"}, timeout=60).json()["data"]

レスポンス

{"futures_id", "data": [...]}、一日あたり 3 行(contract_type:週/当月/全体)。

フィールド説明
date, futures_id, name, contract_type日付、商品、商品名、限月の範囲
buy_top5_trader_open_interest / buy_top10_trader_open_interest (+ _per)上位 5/10 取引者の買い建玉(枚数、市場全体に対する %)
sell_top5_trader_open_interest / sell_top10_trader_open_interest (+ _per)上位 5/10 取引者の売り建玉
buy_top5_specific_open_interest / buy_top10_specific_open_interest (+ _per)上位 5/10 特定法人の買い建玉
sell_top5_specific_open_interest / sell_top10_specific_open_interest (+ _per)上位 5/10 特定法人の売り建玉
market_open_interest市場全体の建玉

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid futures_id"}形式チェックに失敗
404{"error": "large_traders data not available for stock futures (<id>)"}個別株先物
404エラーメッセージデータなし
503アップストリームのレート制限/シンボルリストを取得できません後で再試行

備考

  • サーバーキャッシュ:5 分。

台湾オプション 三大機関投資家

GET/studio/market/twfutures/option/institutional/<option_id>
データ開始
2018-06-05
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
option_id
string · path必須
オプション商品TXO(英字 2–6 文字を受け付けます)
start
string · query
開始日YYYY-MM-DD2018-06-05
end
string · query
終了日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twfutures/option/institutional/TXO", headers=headers,                    params={"start": "2026-08-01"}, timeout=60).json()["data"]

レスポンス

{"option_id", "data": [...]}、一日あたり 6 行(投資家の区分 3 種 × コール/プット)。フィールド:date、option_id、call_put(買權/賣權)、institutional_investors、および先物の三大機関投資家と同じ long_*/short_* の取引と建玉の枚数/金額フィールド。

エラー

400 {"error": "Invalid option_id"}、404 データなし、503 アップストリームのレート制限。

備考

  • サーバーキャッシュ:5 分。

台湾オプション 大口取引者

GET/studio/market/twfutures/option/large_traders/<option_id>
データ開始
2007-01-02
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
option_id
string · path必須
オプション商品TXO(英字 2–6 文字を受け付けます)
start
string · query
開始日YYYY-MM-DD1998-07-01
end
string · query
終了日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twfutures/option/large_traders/TXO", headers=headers,                    params={"start": "2026-08-01"}, timeout=60).json()["data"]

レスポンス

{"option_id", "data": [...]}、一日あたり 6 行(コール/プット × 週/当月/全体)。フィールド:date、option_id、name、put_call、contract_type、先物の大口取引者と同じ上位 5/上位 10 の取引者と特定法人の建玉フィールド、および market_open_interest。

エラー

400 {"error": "Invalid option_id"}、404 データなし、503 アップストリームのレート制限。

備考

  • サーバーキャッシュ:5 分。

TXO プット・コール・レシオ

GET/studio/market/twfutures/option/pcr
データ開始
2001-12-24
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
start
string · query
開始日YYYY-MM-DD2001-12-24
end
string · query
終了日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twfutures/option/pcr", headers=headers,                    params={"start": "2024-01-01", "end": "2024-12-31"}, timeout=60).json()["data"]# [{"date": "2024-01-02", "put_volume": 309583, "call_volume": 404231, "volume_pcr": 76.59,#   "put_oi": 263673, "call_oi": 246495, "oi_pcr": 106.97, "pcr": 106.97},#  {"date": "2024-01-03", "put_volume": 622854, "call_volume": 729547, "volume_pcr": 85.38,#   "put_oi": 177203, "call_oi": 178062, "oi_pcr": 99.52, "pcr": 99.52}, ...]

レスポンス

{"data": [...]}、取引日ごとに一行。

フィールド単位説明
date—取引日
put_volume / call_volume枚プット/コールの出来高
volume_pcr%プット・コールの出来高レシオ
put_oi / call_oi枚プット/コールの建玉
oi_pcr%プット・コールの建玉レシオ(買賣權未平倉量比率)
pcr%oi_pcr と同じ(互換性のために残しています)

エラー

404 データなし、503 ストアが未準備またはアップストリームのレート制限。

備考

  • TAIFEX 公式のレシオです。オプションの三大機関投資家や大口取引者のデータから算出したものではありません。
  • サーバーキャッシュ:5 分。

台湾指数先物 三大機関投資家の建玉コスト

GET/studio/market/twfutures/carrying_cost/<identity>
データ開始
2023-10-18
更新頻度
毎日、台北時間 15:40 と 17:40

ある機関投資家の TAIEX 先物の差引建玉について、Blave が推定した平均コストと、含み損益・実現損益です。日次の集計値からの推定であり、その機関投資家の実際の約定ではありません。

算出方法:

  • 建玉 = 買い建玉 − 売り建玉。大台(TX)の枚数に換算します:TX × 1、MTX × 1/4、TMF × 1/20(scope=all)、または TX のみ(scope=tx)。
  • 建玉を積み増すときは、その機関投資家が当日に積み増した側の平均約定価格(TAIFEX の交易契約金額 ÷(口數 × 200))を使い、加重平均コストを更新します。建玉を減らすときは、反対側の平均価格で実現損益を計上し、コストは変えません。ドテンまたは建玉の解消では、それまでの建玉をすべて実現し、新しい方向は当日の価格から始まります。
  • 月次の最終決済日ごとに(第三水曜日。休場の場合は翌取引日)新しいサイクルが始まり、コストは評価価格に、実現損益は 0 にリセットされます。これにより、コストはデータの開始時点に左右されなくなります。
  • 評価価格 = TAIFEX による建玉の評価額(建玉の契約金額 ÷(枚数 × 200)、つまり各限月の清算価格ベース)。含み損益 =(評価価格 − コスト)× 差引枚数 × 200。

パラメータ

名称説明許容値デフォルト
identity
string · path必須
外資/投信/自營商foreign, investment_trust, dealer
start
string · query
最初の取引日(当日を含む)YYYY-MM-DD2023-10-18(全履歴)
end
string · query
最後の取引日(当日を含む)YYYY-MM-DD今日
scope
string · query
all = TX + MTX + TMF を TX 換算の枚数にしたもの、tx = 大台のみ(台湾の多くのサイトが引用する基準)all, txall

台帳は常に保存済み履歴の先頭から計算します。start/end は表示範囲を切り出すだけなので、どの範囲を指定しても同じ日の値は同じです。

例

Python
body = requests.get(f"{BASE_URL}/studio/market/twfutures/carrying_cost/foreign", headers=headers,                    params={"start": "2026-10-06"}, timeout=60).json()rows = body["data"]# Live capture 2026-10-07 (scope=all):# {"identity": "foreign", "scope": "all", "data": [#   {"date": "2026-10-06", "net_open_interest": -78570.7, "net_open_interest_change": -3923.5,#    "cost": 46527.57, "txf_close": 50060.0, "mark_price": 50088.51,#    "unrealized_pnl": -55957022956, "realized_pnl": -5893982992, "total_pnl": -61851005948,#    "cycle_start": "2026-09-16"},#   {"date": "2026-10-07", "net_open_interest": -78435.8, "net_open_interest_change": 134.9,#    "cost": 46527.57, "txf_close": 49979.0, "mark_price": 49974.38,#    "unrealized_pnl": -54070636128, "realized_pnl": -5988669182, "total_pnl": -60059305310,#    "cycle_start": "2026-09-16"}]}gap = rows[-1]["txf_close"] - rows[-1]["cost"]   # points the market is above (+) / below (−) their cost

レスポンス

{"identity", "scope", "data": [...]}、取引日ごとに一行、古い順 → 新しい順。"stale": true は、サーバーのデータが TAIFEX の直近公表日より遅れている場合にだけ付きます(最新の行が欠けている可能性があります)。

フィールド型単位説明
datestring—取引日(台北時間)
net_open_interestfloatTX 換算の枚数買い建玉 − 売り建玉(負の値 = 売り越し)
net_open_interest_changefloat枚前取引日比
costfloat | null指数ポイント差引建玉の加重平均コスト。建玉がない場合は null
txf_closefloat | null指数ポイントTX 期近の日中セッション終値(最終決済日は満期を迎える限月を除きます)
mark_pricefloat | null指数ポイントTAIFEX による建玉の評価額(清算価格ベース)
unrealized_pnlint台湾ドル(評価価格 − コスト)× 差引枚数 × 200
realized_pnlint台湾ドルcycle_start 以降の実現損益。最終決済日ごとに 0 にリセットされます
total_pnlint台湾ドルunrealized_pnl + realized_pnl
cycle_startstring—現在のサイクルが始まった最終決済日

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid identity. Allowed: ['dealer', 'foreign', 'investment_trust']"}不明な identity
400{"error": "Invalid scope. Allowed: ['all', 'tx']"}不明な scope
400{"error": "Invalid start date, expected YYYY-MM-DD"}(または end)/{"error": "start must not be after end"}日付が不正/範囲が逆転
503{"error": "Market data is not ready on this server. Please retry later."}ストアが未準備。後で再試行してください。「建玉なし」と読まないでください
500{"error": "Internal error"}予期しないサーバーエラー

備考

  • 先物のみです。オプションの建玉(自己売買部門のヘッジを含む)は台帳に含まれないため、ここでの自己売買部門の「損失」は別の場所で相殺されている可能性があります。
  • 最終決済日の直後は、仕組み上コストが評価価格と等しくなります。サイクルの最初の数日は、建玉が実際にどの水準で作られたかをほとんど示しません。
  • 他のサイトの外資成本は異なるルールを使っています(TX のみ、期近の終値を約定価格とする、または非公開)。数値は一致しません。同じ基準(scope=tx)で比較してください。
  • TAIFEX が公表するのは直近約三年分だけで、開始日はそれによって決まります。
  • TAIFEX の毎日の公表後に更新されます。
  • サーバーキャッシュ:5 分。