預測方法論
我們的預測怎麼算、怎麼結算、怎麼判讀。
預測如何產生
- 勝負(Elo) — 兩隊 Elo 評分套標準公式得勝率,K-factor 控制單場波動:
P(A wins) = 1 / (1 + 10^((R_B − R_A) / 400)) - 大小分(Poisson) — 用每隊「已結束場次得分平均」當 λ,疊加成總分泊松分布:
projected_total = Σ Poisson(λ_team) for each team's finished-event mean - 每小時 generate-predictions cron 掃未來 6 小時的賽程,產出預測寫入 DB,並蓋上 generated_at 時戳。
結算規則
- 勝負 — 賽事 status='finished' 後,比對 score_json.winner 與 pick.side — 同邊 = hit、異邊 = miss。
- 大小分 — 計算 actual_total = home_score + away_score,與 projected_total 相減取 abs_error 和 signed_error。本欄一律標 scored(不是猜中而是有打到分數)。
- 作廢 — 賽事 postponed / cancelled 則整筆 predictions 標 void,不計入命中率或 MAE。
怎麼讀這些數字
- 結算筆數 < 30 時,勝率與 MAE 用「樣本不足」帶過 — 大數法則需要時間累積。
- Confidence 是模型對自己預測的信心,不是「市場/群眾信心」。70% 的場次若實際贏 70%,就是 well-calibrated。
- 預測 − 實際
所有預測在 generated_at 寫入 DB 後不可編輯。歷史頁面可往回讀,commit 紀錄公開於 git。