接入指南
用 Python 與回測框架做研究的量化研究員。
把 TWMD 接進研究環境,而且回測不會看到未來。
以下每一步都標明它由哪一個介面提供,以及今天能不能做。標「今天就能做」的每一步,都在 2026-08-21 對線上 API 實際探測過;其餘的會說清楚缺什麼。沒有任何一項因為在規劃中就被寫成現在式。
在儀表板產生金鑰,以 X-API-Key 打 https://api.twmarketdata.com/v2/datasets/*。官網網域上那個舊的 /v2/datasets/* 代理已經退役,現在回 410 並在錯誤訊息裡指向這個位址——照著錯誤訊息走就會到對的地方。
as_of=YYYY-MM-DD 回傳的是「當天已經公布」的版本。回應的 request_context 會把這件事講清楚:point_in_time、as_of_applied,以及 knowledge_time_field——股價是 trade_date,月營收這類揭露型資料是 knowledge_date,所以 2026-07-05 查不到 7 月 10 日才公布的 6 月營收。不帶 as_of 就是現值,request_context 會標成 point_in_time: false。
自 2026-08-21 起,as_of 是在 limit 之前套用的:回應帶 as_of_filter_applied_before_limit: true,所以 limit=3 就是回 3 列。在那之前不是這樣——limit 先取 N 列、之後才用 as_of 濾掉,於是 limit=3 可能只回 1 列,而那並不代表「只有 1 列」。若你的程式是在那之前寫的,值得回頭看一眼。分頁請讀 rows_excluded_by_as_of 與 rows_excluded_after_the_page,而不是用回傳筆數推斷還有沒有資料。
coverage.missing(明確列出「要了但沒有」以及原因)、freshness.is_stale(依該資料集自己的頻率預算判定)與 meta.query_id 都在 MCP 層,不在 REST 信封裡。要那三樣就走 MCP;把 query_id 記在研究筆記裡,之後可以用 replay 取回當時實際送出的位元組。
REST 信封帶的是 request_context、lineage、source_role 與 data_as_of;它沒有 coverage、freshness 或 query_id。這一條在骨架裡原本掛在 REST 底下,實測後移到這裡。
日線系列以 Parquet 檔交付,DuckDB 或 pandas 可直讀,不必逐頁打 API。
這是 enterprise 方案的交付,公開探測驗證不到,所以這裡不標成「已提供」。要導入前請先向我們索取一份實際檔案清單與交付頻率。
把策略報酬送進體檢,取得 DSR、HAC-t 與 IS/OOS 報告。
工具存在於內部,對外介面尚未開放,沒有可呼叫的端點。
point-in-time 擋的是資料管線的洩漏。它擋不住模型權重裡的洩漏——如果你的語言模型在預訓練時看過那段歷史,那是模型的問題,不是資料交付能解決的問題。
證明機制如何對應到已發布的標準,見標準與相容性。