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 可重現。