Horsorion

Horsorion

Methodology · Point-in-Time

Point-in-Time 數據儲存

所有排位資料、評分變動與賠率快照均以 point-in-time(PIT) 原則儲存:研究員回測歷史模型時,永遠只能睇到當時公開的資料,避免 look-ahead bias。

為何重要

賽馬數據的大部分欄位(評分、檔位、騎師、負磅、退賽情況)會於賽前多次修訂。如果用最終定案版本回測歷史模型,等於默認模型可以「預先」知道改動 — 所有結果都會嚴重高估。

儲存模型

Horsorion 對每張可變表(racecard、ratings、odds_snapshots、scratchings)採用 bi-temporal 設計:

  • valid_from / valid_to — 該紀錄反映的事實有效期。
  • recorded_at — 該紀錄被 Horsorion 寫入庫的時間(系統時鐘)。

查詢「賽事 X 開閘前 5 分鐘可見的 racecard」即等於:

sql
SELECT *
FROM racecard
WHERE race_id = 'ST-241110-08'
  AND valid_from <= jump_time - INTERVAL '5 minutes'
  AND (valid_to IS NULL OR valid_to > jump_time - INTERVAL '5 minutes')
  AND recorded_at <= jump_time - INTERVAL '5 minutes'
ORDER BY horse_no;

變更追蹤

每次 racecard、評分或賠率變動,Horsorion 寫入新一行(不覆寫舊行)。客戶可以重建任何過去時刻的完整快照。

賠率快照頻率

時序賠率以 固定間隔(每 10 秒) + 事件觸發(每筆莊家盤口變動) 雙策略採集,視乎客戶交付方式而定。

適用情境

  • 歷史模型回測,需要嚴格防 look-ahead。
  • 盤口微觀結構研究(market microstructure)。
  • 機器學習特徵工程,需要 feature snapshot 可重現。