文件
資料更新與 lineage
平台不只提供資料存取,也提供資料的更新機制與來源追蹤能力。每一筆資料都包含明確的更新時間與來源資訊,讓你可以判斷資料是否可用,並在需要時回溯資料來源。這對於研究、回測與 production 系統非常重要。當結果需要被驗證或重現時,你必須知道資料來自哪裡、何時更新、是否經過轉換,以及是否與當時決策使用的資料一致。
資料更新機制#
不同資料主題具有不同的更新頻率與特性。平台會依據資料來源與資料類型,設計對應的 ingestion 與更新流程。
常見更新模式包括:
在設計系統時,不應假設所有資料都是即時的。應依據資料類型與更新頻率,決定是否可以直接用於策略或需要做額外處理。
- 即時或近即時更新:用於行情資料與部分市場指標,資料在發布後短時間內即可取得
- 定期更新:用於月營收、財報等資料,依據官方發布週期更新
- 事件驅動更新:用於公告與公司事件,資料在事件發布後即被擷取與處理
freshness(資料時效)#
每個 API 回應都包含 freshness 欄位,用於描述資料的時間狀態。
這個欄位可以用來:
實務上,應將 freshness 納入流程,而不是在應用邏輯中忽略。尤其在事件驅動或自動交易系統中,資料延遲可能直接影響結果。
- 判斷資料是否已更新
- 避免使用過期資料進行決策
- 在 pipeline 中設計條件(例如:資料未更新則暫停流程)
lineage(來源追蹤)#
lineage 描述資料從來源到 API 回應的完整路徑。每筆資料都會附帶 lineage 資訊,讓你可以追蹤:
這些資訊讓資料具備可審計性(auditability)。當你需要驗證某個結果時,可以回到原始來源,而不是依賴不可追蹤的中間資料。
- 資料來自哪個來源(例如 TWSE、TPEx、MOPS)
- 何時被擷取(ingested_at)
- 經過哪些處理流程
- 對應的 trace identifier(trace_id)
source_role(來源角色)#
平台會對資料來源進行分層標記:
這樣的設計可以避免不同來源混用造成的不一致問題。在實務上,你可以根據 source_role 決定資料是否適合用於關鍵決策。
- canonical:官方來源或最具權威性的資料
- fallback:當 canonical 資料缺失時使用的替代來源
- helper:用於補充或輔助計算的資料
為什麼這很重要#
在簡單的應用中,資料來源與更新時間可能不是主要問題。但在研究、策略開發與 production 系統中,這些資訊是必要條件。
幾個典型場景:
如果資料不可追溯,就無法驗證結果。這會讓系統在規模擴大時產生風險。
- 回測結果與實際交易不一致:需要確認當時使用的資料版本與來源
- 模型輸出異常:需要追蹤資料是否延遲或來自 fallback
- 多資料來源整合:需要確保欄位一致與時間對齊
- 團隊協作:需要明確資料責任與來源
實務建議#
在實際系統中,建議把資料更新與 lineage 當成設計的一部分,而不是附加資訊。
對於長期運行的系統,這些資訊會成為排錯與驗證的基礎。
- 在資料處理流程中保留 freshness 與 lineage
- 不要在轉換或存儲時丟棄來源資訊
- 在回測與 production 流程中使用相同資料條件
- 對關鍵資料建立監控(例如更新延遲)