文件
資料存取
所有資料透過一致的 REST API 提供,設計重點在於穩定性、可預測性與可組合性。每一個 endpoint 都遵循相同的回應結構與欄位命名規則,讓資料可以直接接入研究流程、策略系統與自動化 agent。
資料主題分類#
平台的目標不是提供一次性的資料查詢,而是建立一個可以長期維運的資料層。當你的系統需要跨資料主題整合、回測、或進入 production 環境時,資料存取方式必須保持一致且可追溯。
資料依照主題(dataset)進行組織,每個主題對應一組 API endpoints。不同主題之間共用相同的 request / response 結構,避免在整合時需要針對每個資料來源做客製解析。
目前主要資料主題包括:
- 行情資料:即時與歷史價格、成交資訊與市場指標
- 財報資料:損益表、資產負債表與現金流量表
- 營運資料:月營收與公司揭露的營運數據
- 公司基本資料:公司資訊、產業分類與基礎識別資料
- 公司事件:公告、重大訊息與事件型資料
- 籌碼與資金流向:法人資金流與市場資金動向
- 利率與總體資料:利率快照與部分總體指標
endpoint 使用模式#
每個 dataset 都可以獨立查詢,也可以在同一個流程中組合使用。這樣的設計可以降低跨資料整合的成本,並避免資料結構不一致帶來的風險。
API 設計偏向可組合,而不是高度封裝的單一功能接口。建議的使用方式如下:
- 先以單一 ticker 與短時間範圍進行驗證,確認欄位與回應結構符合預期後,再擴大查詢範圍
- 將不同 dataset 的查詢拆成多個 request,在應用層做整合,而不是依賴單一複雜 endpoint
- 對於大規模資料需求,使用分批查詢(batch)與適當的速率控制,避免觸發限制
- 避免把 API 當作資料庫查詢語言;API 的設計是資料傳輸層,而不是即時分析引擎
一致的回應結構#
所有 API 回應都遵循同一個結構,讓資料可以被統一處理:
這個設計讓你可以在 parser 或資料處理層先統一處理 metadata(dataset、freshness、lineage),再針對 data 欄位做具體解析。當系統規模擴大時,這種分層會大幅降低維護成本。
- dataset:資料集識別名稱
- source_role:資料來源角色(canonical / fallback / helper)
- freshness:資料更新時間或有效時間
- lineage:資料來源與處理流程資訊(可用於追溯)
- data:實際資料內容
查詢與擴展策略#
當資料需求從單一查詢成長為系統級使用時,建議採用以下策略:
這些策略能讓 API 從「查資料工具」升級為「資料基礎設施」。
- 建立中間層(data access layer),將 API 呼叫集中管理,而不是散落在不同服務中
- 統一 ticker 與時間格式,避免不同資料源使用不同 key 導致錯誤匹配
- 對常用查詢做快取(cache),降低重複請求與速率壓力
- 將長期資料(如歷史價格、財報)落地;API 適合做資料同步,不適合每次即時查詢
- 對重要流程加入資料版本與時間標記,確保回測與實際交易使用相同資料狀態
錯誤處理與限制#
在實務使用中,最常見的問題來自於速率限制與資料邊界。
建議在系統中對不同錯誤類型做分類處理,對 rate limit 加入 retry 或 backoff 機制,並對關鍵流程加上監控與警示。
- 請求過於頻繁:會觸發 rate limit,需要調整節奏或分批處理
- 查詢範圍過大:可能導致回應時間增加或資料不完整
- 使用未授權的 dataset:不同方案可用資料範圍不同
- 資料尚未更新:freshness 欄位應作為判斷依據,而不是假設資料即時
實務建議#
在開發初期,可以直接從 API 讀取資料進行實驗。但當進入穩定運行階段,建議將資料存取納入整體系統設計。
當資料存取被正確設計後,後續的策略開發、分析與產品化會變得更穩定。
- 將 API 當作資料來源,而不是最終資料存放位置
- 為不同用途建立明確的資料流(research / backtest / production)
- 保留 lineage 與 freshness,用於驗證與排錯
- 避免在 production 流程中依賴不可預測的即時查詢