12 個のエンドポイント
https://api.blave.orgapi-key と secret-key ヘッダーを付けるAPI plan or Blave Agent plan/studio/market/twfutures/ohlcv/<symbol>/<schema> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
symbolstring · path必須 | 期近のつなぎ足 | TXF(台指期)、MXF(小台)、または ohlcv/symbols に含まれる個別株先物のコード(大文字・小文字を区別しません) | |
schemastring · path必須 | 時間足 | 1m, 5m, 15m, 30m, 60m, 1d | |
startstring · query | 開始日 | YYYY-MM-DD | end − その時間足の最大範囲 |
endstring · query | 終了日 | YYYY-MM-DD | 今日(UTC) |
リクエストあたりの最大範囲(end − start):1m 31 日 · 5m 62 日 · 15m 93 日 · 30m 186 日 · 60m 365 日 · 1d 3650 日。
from datetime import date, timedeltadata = requests.get(f"{BASE_URL}/studio/market/twfutures/ohlcv/TXF/1d" , headers=headers, params={"start": "2024-01-01", "end": "2024-12-31"}, timeout=60).json()["data"]# [{"ts": "2024-01-01 16:00:00+00:00", "open": 17838.0, "high": 17920.0, "low": 17751.0, "close": 17798.0, "volume": 82820},# {"ts": "2024-01-02 16:00:00+00:00", "open": 17793.0, "high": 17817.0, "low": 17507.0, "close": 17546.0, "volume": 149638}, ...]def fetch_txf_chunked(schema, start, end, chunk_days=28): result, cur, end_date = [], date.fromisoformat(start), date.fromisoformat(end) while cur < end_date: chunk_end = min(cur + timedelta(days=chunk_days), end_date) resp = requests.get(f"{BASE_URL}/studio/market/twfutures/ohlcv/TXF/{schema}" , headers=headers, params={"start": cur.isoformat(), "end": chunk_end.isoformat()}, timeout=60) result.extend(resp.json().get("data", [])) cur = chunk_end return result{"symbol", "schema", "data": [...]}.
| フィールド | 型 | 単位 | 説明 |
|---|---|---|---|
ts | string | UTC の ISO 形式 | 足の開始時刻 |
open / high / low / close | float | 指数ポイント(個別株先物は価格) | 価格 |
volume | int | 枚(口) | 数量 |
| ステータス | レスポンスボディ | 条件 |
|---|---|---|
| 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 | エラーメッセージ | データソースを一時的に利用できません |
TXF、MXF、個別株先物に共通):月次の最終決済日(第 3 水曜日。その水曜日が休場の場合は翌取引日)は、終日、満期を迎える限月を使います。この限月は台北時間 13:30 の引けまで取引され、当日の台北時間 13:31–14:59 には足がなく、15:00 の夜間セッションから系列は翌限月になります。最終決済日の 1d の足は満期を迎える限月のものなので、その終値は当該限月の 13:30 の最終約定です。ohlcv/<symbol>/export/<year> を使ってください。200 と [] を返します。MXF と CAF はリクエスト日までのすべてを要求しても、どちらも最後の足が数か月前のものでした。data[-1]["ts"] を確認してください。1d の足の時刻部分は 16:00:00+00:00(台北時間 00:00)で、UTC の午前零時ではありません。タイムスタンプが日付に揃っていると想定せず、ts から日付を取ってください。1d と日中足に当てはまります。MXF の開始日は 1d のものです。個別株先物は銘柄ごとに異なり、CAF の 1d の足は少なくとも 2016-09-18 からあります。/studio/market/twfutures/ohlcv/symbols なし。
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 銘柄ある個別株先物の大半は対象外です)。
共通エラーのみ。
/studio/market/twfutures/ohlcv/<symbol>/export/<year> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
symbolstring · path必須 | シンボル | ohlcv/symbols と同じ | |
yearint · path必須 | 暦年 | 2014 – 当年 |
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 の足がありません)。/studio/market/twfutures/bid_ask_vol/<symbol> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
symbolstring · path必須 | シンボル | TXF、MXF(どちらもデータが返ることを確認済み)。他の ohlcv/symbols のシンボルは未検証 | |
startstring · query | 開始日 | YYYY-MM-DD | end − 31 日 |
endstring · query | 終了日。end − start ≤ 31 日 | YYYY-MM-DD | 今日(UTC) |
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 分ごとの行、日中セッションと夜間セッションを含みます。
| フィールド | 型 | 単位 | 説明 |
|---|---|---|---|
ts | string | UTC の ISO 形式 | 足の開始時刻 |
bid_vol | int | 枚 | 內盤:買い気配に当てた約定(売り主導) |
ask_vol | int | 枚 | 外盤:売り気配を取った約定(買い主導) |
total_vol | int | 枚 | 合計。分類できないティックを含みます |
| ステータス | レスポンスボディ | 条件 |
|---|---|---|
| 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 の夜間セッション開始までの間に行がありません。夜間セッション以降の行は翌限月です。/studio/market/twfutures/daily/<futures_id> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
futures_idstring · path必須 | 商品 | 英字 2–6 文字、大文字・小文字を区別しません。例:TX、MTX、TMF、TE、TF、または個別株先物のコード(例:CDF) | |
startstring · query | 開始日 | YYYY-MM-DD | 1998-07-01 |
endstring · query | 終了日 | YYYY-MM-DD | 今日 |
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_session | position(日中)または 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 は個別株先物です)。/studio/market/twfutures/stock_futures/batch/daily | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
futures_idsstring · query必須 | コード | カンマ区切りの個別株先物コード、≤ 250 | |
startstring · query | 開始日 | YYYY-MM-DD | 1998-07-01 |
endstring · query | 終了日 | YYYY-MM-DD | 今日 |
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."} | シンボルリストを取得できません |
/studio/market/twfutures/institutional/<futures_id> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
futures_idstring · path必須 | 商品 | 指数先物:TX、MTX、TMF、TE、TF(すべてデータが返ることを確認済み)。個別株先物は非対応 | |
startstring · query | 開始日 | YYYY-MM-DD | 2018-06-05 |
endstring · query | 終了日 | YYYY-MM-DD | 今日 |
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 | アップストリームのレート制限/シンボルリストを取得できません | 後で再試行 |
*_amount の単位は千台湾ドルです。これは桁数からの推定で、アップストリームには明記されていませんが、計算で裏付けられます。TX のある行で long_open_interest_balance_amount 722870036 を ..._volume 78292 で割ると一枚あたり 9,233 になります。TX の一枚は指数 × 200 なので、9,233 千 ÷ 200 ≈ 46,160 指数ポイントとなり、その日の指数の水準と一致します。台湾ドルとして読むと 1,000× 小さくなります。/studio/market/twfutures/large_traders/<futures_id> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
futures_idstring · path必須 | 商品 | 指数先物。例:TX。個別株先物は非対応 | |
startstring · query | 開始日 | YYYY-MM-DD | 1998-07-01 |
endstring · query | 終了日 | YYYY-MM-DD | 今日 |
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 | アップストリームのレート制限/シンボルリストを取得できません | 後で再試行 |
/studio/market/twfutures/option/institutional/<option_id> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
option_idstring · path必須 | オプション商品 | TXO(英字 2–6 文字を受け付けます) | |
startstring · query | 開始日 | YYYY-MM-DD | 2018-06-05 |
endstring · query | 終了日 | YYYY-MM-DD | 今日 |
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 アップストリームのレート制限。
/studio/market/twfutures/option/large_traders/<option_id> | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
option_idstring · path必須 | オプション商品 | TXO(英字 2–6 文字を受け付けます) | |
startstring · query | 開始日 | YYYY-MM-DD | 1998-07-01 |
endstring · query | 終了日 | YYYY-MM-DD | 今日 |
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 アップストリームのレート制限。
/studio/market/twfutures/option/pcr | 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
startstring · query | 開始日 | YYYY-MM-DD | 2001-12-24 |
endstring · query | 終了日 | YYYY-MM-DD | 今日 |
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 ストアが未準備またはアップストリームのレート制限。
/studio/market/twfutures/carrying_cost/<identity> ある機関投資家の TAIEX 先物の差引建玉について、Blave が推定した平均コストと、含み損益・実現損益です。日次の集計値からの推定であり、その機関投資家の実際の約定ではありません。
算出方法:
scope=all)、または TX のみ(scope=tx)。| 名称 | 説明 | 許容値 | デフォルト |
|---|---|---|---|
identitystring · path必須 | 外資/投信/自營商 | foreign, investment_trust, dealer | |
startstring · query | 最初の取引日(当日を含む) | YYYY-MM-DD | 2023-10-18(全履歴) |
endstring · query | 最後の取引日(当日を含む) | YYYY-MM-DD | 今日 |
scopestring · query | all = TX + MTX + TMF を TX 換算の枚数にしたもの、tx = 大台のみ(台湾の多くのサイトが引用する基準) | all, tx | all |
台帳は常に保存済み履歴の先頭から計算します。start/end は表示範囲を切り出すだけなので、どの範囲を指定しても同じ日の値は同じです。
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 の直近公表日より遅れている場合にだけ付きます(最新の行が欠けている可能性があります)。
| フィールド | 型 | 単位 | 説明 |
|---|---|---|---|
date | string | — | 取引日(台北時間) |
net_open_interest | float | TX 換算の枚数 | 買い建玉 − 売り建玉(負の値 = 売り越し) |
net_open_interest_change | float | 枚 | 前取引日比 |
cost | float | null | 指数ポイント | 差引建玉の加重平均コスト。建玉がない場合は null |
txf_close | float | null | 指数ポイント | TX 期近の日中セッション終値(最終決済日は満期を迎える限月を除きます) |
mark_price | float | null | 指数ポイント | TAIFEX による建玉の評価額(清算価格ベース) |
unrealized_pnl | int | 台湾ドル | (評価価格 − コスト)× 差引枚数 × 200 |
realized_pnl | int | 台湾ドル | cycle_start 以降の実現損益。最終決済日ごとに 0 にリセットされます |
total_pnl | int | 台湾ドル | unrealized_pnl + realized_pnl |
cycle_start | string | — | 現在のサイクルが始まった最終決済日 |
| ステータス | レスポンスボディ | 条件 |
|---|---|---|
| 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"} | 予期しないサーバーエラー |
scope=tx)で比較してください。