AI 預測的回測陷阱:為什麼線上命中率通常比回測低
Look-ahead bias、survivorship bias、賠率時間錯位 — 你的回測為什麼不準。
為什麼回測通常比上線表現好看
回測的命中率幾乎總是比上線後漂亮。差幾個百分點看似不大,對 ROI 影響卻很大。 舉個假設的例子:回測命中 60%、上線只有 55%,在賠率 1.90 下, ROI 從 +14%(0.60 × 1.90 − 1)掉到 +4.5%(0.55 × 1.90 − 1)。
差距通常來自幾個典型的 backtest 陷阱。任何用歷史資料驗證自己模型的玩家都會踩到。
陷阱 1:Look-ahead bias(未來資訊偷看)
什麼是 look-ahead bias
Backtest 用比賽當天的最終資料跑模型,包括開賽前才公佈的傷兵新聞、教練最終陣容、天氣即時資訊。 但實際線上玩家在開賽前 N 小時就要決定下注,部分資訊還沒揭露。
例子
假設回測用「比賽當天 18:00」的先發名單跑,但上線預測必須在開賽前 4 小時完成。 對晚上 19:00 開賽的場,上線預測在 15:00 就定案,比回測用的資料早了 3 小時, 這 3 小時內的先發變動或傷兵新聞,回測看得到、上線看不到。
對策
Backtest 嚴格用「預測時刻 t」之前的資料、不偷看 t+1 之後資訊,也就是 rolling cutoff。
陷阱 2:Odds timing mismatch(賠率時間錯位)
什麼是 odds timing mismatch
Backtest 通常用close odds(比賽前最後賠率)算 EV。但實際玩家在open / mid odds時下注,賠率可能不同。
數字示例
某場 open 主勝賠率 2.10。Sharp money 進場後 close 賠率 1.90。
- Backtest 用 close 賠率算:玩家「應該」拿到 1.90 → EV 偏低估
- 實際玩家在 open 拿到 2.10 → EV 偏高
但 close 賠率代表「最終市場 consensus」,更接近真實機率。所以:
- Backtest 用 open 賠率:EV 估高、但 close 賠率代表真實機率所以勝率 estimate 偏低
- Backtest 用 close 賠率:EV 估低、但勝率 estimate 準確
做法
統一用 open odds 估 EV,但勝率 estimate 用 close odds 校正。把這個錯位明確標出來,避免 backtest 自欺。
陷阱 3:Survivorship bias(倖存者偏差)
什麼是 survivorship bias
Backtest 用「資料完整的場次」測試。但實際線上玩家會遇到資料缺失場,例如:傷兵名單沒揭露、教練臨陣換陣型、API 拉資料失敗。 這些場次 backtest 從 dataset 篩掉,但線上跑必須做決定(用 fallback 邏輯)。
例子
回測如果自動篩掉先發資訊不完整的場次,上線時這些場次還是得用 fallback(例如沿用上一場先發)預測, 而 fallback 場次的表現通常比資料完整的場次差 —— 回測等於只考了自己會的題目。
對策
Backtest 不篩掉任何場次。資料缺失場用 fallback 邏輯,記錄 fallback 場次的命中率。 如果 fallback 命中率 <55%,避免線上跑這類場。
更多次要陷阱
- Data snooping bias:用同一資料反覆 tune 模型參數,overfitting 自己樣本
- 賠率 staleness:歷史賠率資料庫可能延遲幾分鐘,跟玩家實際拿的不一樣
- 排除特殊場(如延期 / 取消):但這些場線上會遇到,要設清楚規則
- Self-fulfilling backtest:模型基於 close odds 訓練,backtest 也用 close odds → 看起來超準但其實只是 reproducing input
如何做誠實的 backtest
- 嚴格 time-aware:cutoff 在每場合理時間點,不用未來資料
- Out-of-sample testing:訓練 / 驗證 / 測試集嚴格分開,最好用 walk-forward 滾動測試
- 記錄所有場次(含 fallback / 異常),不要 cherry-pick
- 用線上實際拿的賠率(open / mid)算 EV,不用 close
- 計算 paper vs live 的 gap,定期 review
陷阱 4:Selection bias 在數據蒐集
Backtest 用「歷史可拿到的賠率資料」回測。 但歷史資料來源(Football-Data、The Odds API archive)通常只記主流莊家賠率 —— recreational books / 軟莊家賠率可能根本沒記錄。
實戰問題:line shopping 是 sharp 玩家的核心技巧 —— 在 5+ 家莊家中找最佳賠率。 Backtest 沒這 5+ 家完整資料、必然低估「line shopping edge」。
對策:回測盡量用同時涵蓋 sharp 與 soft 莊家的賠率資料, 並承認小型莊家的 line shopping 優勢無法回測。
陷阱 5:Regime change(市場結構改變)
Backtest 用 2020-2024 資料訓練,但 2025-2026 市場結構可能變了:
- Pinnacle 演算法升級:2024 Q4 Pinnacle 升級了內部模型,sharp accuracy 提升 → 你的 edge 來源變少
- 新國家市場成熟:2025 美國運彩合法化、Bet365 退出某市場 → 賠率 dynamics 改變
- FIFA 賽制改:2026 世界盃 48 隊(vs 2022 的 32 隊),歷史 sample 不適用
對策:
- 每季 quarterly retraining 包含最新 3 個月資料
- 對主要事件(賽制改、市場開放)暫停預測 / 標 low confidence
- 追蹤 Brier Score 趨勢,上升表示模型過時、需要 retraining
更多次要陷阱
- Data snooping bias:用同一資料反覆 tune 模型參數、overfitting 自己樣本(解:嚴格 train/val/test split)
- 賠率 staleness:歷史賠率資料庫可能延遲幾分鐘、跟玩家實際拿的不一樣(解:用 The Odds API live snapshots)
- 排除特殊場(如延期 / 取消):但這些場線上會遇到、要設清楚規則
- Self-fulfilling backtest:模型基於 close odds 訓練、backtest 也用 close odds → 看起來超準但其實只是 reproducing input(解:用不同資料源 cross-validate)
- Skipping period bias:某些賽季(如 COVID 期)資料異常、backtest 不能無腦平均(解:分賽季拆解、weight 調整)
如何做誠實的 backtest(業界 best practice)
- 嚴格 time-aware cutoff:每場 cutoff 在「實際預測時刻」、不用未來資料
- Out-of-sample testing:train / val / test 嚴格分開,最好用 walk-forward 滾動測試
- 記錄所有場次(含 fallback / 異常)、不要 cherry-pick
- 用線上實際拿的賠率(open / mid)算 EV、不用 close
- 計算 paper vs live 的 gap、定期 review
- Multiple data sources cross-validation
- 對 regime change 暫停預測 / 重 retraining
- 追蹤模型 calibration(Brier Score、Log Loss)長期趨勢
OddsForge 自己的情況
坦白說:我們沒有可公開驗證的命中率回測,所以這裡沒有自家的 paper-to-live 數字可以拆。 公開過的只有注碼策略回測,原始資料與結果都在 注碼策略回測; 上線後的每一筆結算則公開在 /performance。
給玩家:怎麼判斷一個運彩 AI 站的 backtest 可不可信
多數運彩 AI 站 marketing 「backtest 75% accuracy」吸引玩家。 但 75% 通常是糖衣 backtest。 問這幾個問題:
- 是否 out-of-sample testing?(不是、就是 in-sample overfitting)
- 是否用 open odds 算 EV?(用 close odds 就是 self-fulfilling)
- 是否公開 walk-forward 結果?(沒 walk-forward 就 cherry-pick 風險高)
- live 公開戰績是否跟 backtest 落差 ≤ 10%?(> 10% 就是 backtest 有問題)
- live sample size 足夠嗎?(< 100 場無統計顯著性)
- 每月 Brier Score / Log Loss 追蹤嗎?(沒追蹤 = 沒在維護)
任何一個答 no = 對 backtest 數字打 30% 折扣。
結語:相信 live 表現 > backtest
我們的做法:live 結算公開在 /performance,做過的注碼回測也連同原始資料公開。 玩家應該信 live 數字、對 backtest 數字保持懷疑 —— 包括我們的。
理解這 5 個陷阱後,你能對任何聲稱「85% 命中率」的運彩 AI 站合理懷疑。
更多 AI 預測方法論相關文章、可以從 AI 預測方法論 開始看起。
延伸閱讀:
資料來源與延伸查證
以下為本文定義、公式與數據的公開出處。查證日期:2026-08-26。
- Wikipedia|Backtesting — 回測方法與偏誤
- scikit-learn|Probability calibration — 機率校準方法
- arXiv — 運動預測相關論文預印本庫
相關深度文章
想看 AI 怎麼算今晚的場?
/daily-picks 每天 5 場 AI 精選,免費看不用註冊。下方任選一個導口開始跟單。
每天 5 場 AI 精選,第一場免費看、不用註冊。