Building an AI agent? Start with /llms.txt for the full site index.
Derivatives & Convertibles
TAIFEX institutional trading — daily net positions of the three major institutional investor groups in listed futures and options.
GET /v2/datasets/taifex-institutional-flowtaifex-institutional-flow returns one row per contract per trading day with the foreign, investment-trust and dealer net positions from the official TAIFEX institutional-trading report. Rows carry their source role so a figure is traceable to the exchange report rather than taken on trust.
| Field | Type | Description |
|---|---|---|
contract | string | Futures / options contract code (e.g. TXF, TXO). |
date | string | Trading date. |
foreign_net | number | Foreign investor net position (contracts). |
trust_net | number | Investment-trust net position (contracts). |
dealer_net | number | Dealer net position (contracts). |
source_role | string | official_taifex. |
| Rows | 303 |
| Window | 2024-01-03 – 2026-06-05 |
| Grade | Verified |
A real response from this endpoint. Rows are returned under "data", and provenance is carried in the shape shown below — it is not identical across datasets, so read this page's rather than assuming another's.
{ "dataset_id": "taifex_institutional_flow", "request_context": { "scope": "taifex_futures_options_institutional_flow_only", "coverage_type": "bounded_verified_snapshot_set", "filters": { "trade_date": null, "date_from": null, "date_to": null, "product_type": null, "contract_code": null, "investor_type": null, "source_family": null, "limit": 50 }, "min_trade_date": "2026-06-05", "max_trade_date": "2026-06-05" }, "quality": { "row_count": 50, "contract_count": 18, "sensitive_fields_exposed": false }, "lineage": { "source_providers": [ "taifex_official" ], "source_roles": [ "official_taifex_institutional_daily" ], "source_families": [ "official_taifex_derivatives_public_page" ] }, "error": null, "data": [ { "trade_date": "2026-06-05", "product_type": "futures", "market_type": "futures", "product_contract": "<Chinese value - see the zh page>", "expiry_month": "ALL", "investor_type": "<Chinese value - see the zh page>", "long_open_interest": 17842, "short_open_interest": 4475, "net_open_interest": 13367, "long_volume": 8418, "short_volume": 8978, "net_volume": -560, "source_provider": "taifex_official", "source_role": "official_taifex_institutional_daily", "source_family": "official_taifex_derivatives_public_page", "lineage": { "dataset": "futures_institutional_investors_daily", "trade_date": "2026-06-05", "official_first": true, "aggregate_scope": "all_expiries" }, "data_gaps": [ "{'reasons': ['optional_missing_currency', 'optional_missing_market_scope', 'optional_missing_settlement_type', 'optional_missing_unit', 'upstream_expiry_month_unavailable_aggregate_scope']}" ] }, { "trade_date": "2026-06-05", "product_type": "futures", "market_type": "futures", "product_contract": "<Chinese value - see the zh page>", "expiry_month": "ALL", "investor_type": "<Chinese value - see the zh page>", "long_open_interest": 4306, "short_open_interest": 50, "net_open_interest": 4256, "long_volume": 0, "short_volume": 0, "net_volume": 0, "source_provider": "taifex_official", "source_role": "official_taifex_institutional_daily", "source_family": "official_taifex_derivatives_public_page", "lineage": { "dataset": "futures_institutional_investors_daily", "trade_date": "2026-06-05", "official_first": true, "aggregate_scope": "all_expiries" }, "data_gaps": [ "{'reasons': ['optional_missing_currency', 'optional_missing_market_scope', 'optional_missing_settlement_type', 'optional_missing_unit', 'upstream_expiry_month_unavailable_aggregate_scope']}" ] } ], "data_count": 50, "known_gaps": [ "futures_options_institutional_flow_only", "no_settlement_price", "not_options_daily_price_table" ], "warnings": [ "not_investment_advice" ], "envelope": { "dataset_id": "taifex_institutional_flow", "scope": "taifex_futures_options_institutional_flow_only", "row_count": 50 }}Captured from the live API on 2026-07-20.
Chinese data values are shown as a marker here so this page stays in English; the /zh page shows them verbatim.
curl "https://api.twmarketdata.com/v2/datasets/taifex-institutional-flow?symbol=2330" \ -H "X-API-Key: sk_live_..."| Parameter | Required | Type | Description |
|---|---|---|---|
symbol | Yes | string | Ticker, e.g. 2330. |
start_date | No | string (YYYY-MM-DD) | Start of the query range. |
end_date | No | string (YYYY-MM-DD) | End of the query range. |
limit | No | integer | Maximum rows to return. |
A first call:
import requests resp = requests.get( "https://api.twmarketdata.com/v2/datasets/taifex-institutional-flow", params={"symbol": "2330"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()print(resp.json()["data"])With a date-range filter:
import requests # The full verified example — the same call with every supported filter set.resp = requests.get( "https://api.twmarketdata.com/v2/datasets/taifex-institutional-flow", params={"symbol": "2330"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()for row in resp.json()["data"]: print(row)This endpoint is GET /v2/datasets/taifex-institutional-flow. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.