← FootballSense · 全部盤口 · Model Lab
# RobHKJC 嚴格 Walk-Forward 回測(中文摘要) 生成日期:2026-11-16 數據截止:2026-11-09(各聯賽 11-03 至 11-09) 樣本:**2,007 場、18 個聯賽**,**1,311 場**有足夠歷史可預測 來源:baseline run;機器可讀數字見 `reports/backtest_summary.json` ## 模型 - 60% 近 4 場 xG/xGA + 40% 賽季 Ridge 錨點 - 主場 1.15 / 客場 0.85 - Dixon-Coles rho = 0(另外做了 -0.05 敏感度測試) - **嚴格 prior-only**:每場只用該日期之前的比賽;同一天所有比賽先預測,之後才一起揭示賽果 - 今次已擴展到 18 個 football-data 聯賽(五大聯賽 + 英冠/英甲/英乙/蘇超/德乙/意乙/西乙/法乙/荷甲/比甲/葡超/土超/希超) ## 核心結果:模型 vs 去水市場 | 市場 | n | 模型 Brier | 市場 Brier | 模型 − 市場 | 模型 LogLoss | 市場 LogLoss | |---|---:|---:|---:|---:|---:|---:| | O25 | 1,311 | 0.2439 | **0.2422** | +0.0018 | 0.6809 | **0.6771** | | 1X2 | 1,311 | 0.6104 | **0.5837** | +0.0268 | 1.0181 | **0.9806** | > 正數 = 模型較差。大樣本下,O25 仍然輸市場;1X2 輸更多。 ## O25 校準 | 模型概率區間 | n | 模型均值 | 實際大 2.5 命中 | 差距 | |---|---:|---:|---:|---:| | 0–35% | 22 | 0.312 | 0.318 | +0.006 | | 35–45% | 209 | 0.412 | 0.474 | +0.061 | | 45–50% | 209 | 0.477 | 0.507 | +0.031 | | 50–55% | 271 | 0.525 | 0.568 | +0.043 | | 55–60% | 248 | 0.575 | 0.516 | −0.058 | | 60–65% | 181 | 0.622 | 0.646 | +0.024 | | 65–70% | 104 | 0.670 | 0.615 | −0.055 | | 70–80% | 65 | 0.732 | 0.692 | −0.040 | | 80%+ | 2 | 0.830 | 1.000 | +0.170 | 大樣本下,55–60%、65–80% 都係高估;「黃金區」並不是穩定的 calibration。 ## 投注模擬(pre-closing `B365>2.5`,edge ≥ 2%) | 指標 | O25 | 1X2 | |---|---:|---:| | 注數 | 1,021 | 1,193 | | 命中率 | 49.9% | 30.3% | | ROI | **+0.1%** | **−10.0%** | | ROI 95% CI(按比賽日 bootstrap) | **[−6.7%, +7.0%]** | **[−18.9%, −0.9%]** | | 平均賠率 | 2.10 | — | | 平均 edge | +7.0% | — | | 平均 CLV | +0.6% | +1.0% | | Beat-close rate | 43.9% | 45.2% | O25 的 +0.1% 基本上係零;CI 包括 0。1X2 的 negative ROI CI 全負,應該繼續禁用。 ## 最後 30% 預測日期(2026-10-23 起) | 市場 | n | 模型 Brier | 市場 Brier | 注數 | ROI | ROI 95% CI | |---|---:|---:|---:|---:|---:|---| | O25 | 533 | 0.2454 | 0.2444 | 416 | **+4.2%** | **[−8.5%, +14.2%]** | 之前 500/640 場樣本見到的 +26.1% / +13.4% signal,在 2,007 場樣本下變成 +4.2%,CI 包括 0。呢個係最清楚的結論:**細樣本的「edge」在大樣本下消失。** ## 按聯賽(O25,節錄) | 聯賽 | n | 模型 Brier | 市場 Brier | 模型 − 市場 | |---|---:|---:|---:|---:| | EPL | 60 | 0.2580 | 0.2621 | −0.0040 | | F2(法乙) | 72 | 0.2370 | 0.2463 | −0.0093 | | N1(荷甲) | 70 | 0.2288 | 0.2334 | −0.0046 | | SerieA | 70 | 0.2360 | 0.2490 | −0.0129 | | LaLiga | 78 | 0.2296 | 0.2113 | +0.0183 | | G1(希超) | 41 | 0.2682 | 0.2305 | +0.0377 | | SP2(西乙) | 96 | 0.2617 | 0.2527 | +0.0090 | | T1(土超) | 63 | 0.2350 | 0.2285 | +0.0065 | 有幾個聯賽模型略好,但 LaLiga / 希超 / 西乙 / 土超 明顯較差;整體 mixed,未有一致 edge。完整 18 聯賽表見 `reports/backtest_report.md`。 ## 敏感度 / ablation | 變體 | O25 模型 Brier | O25 市場 Brier | O25 注數 | O25 ROI | O25 ROI 95% CI | |---|---:|---:|---:|---:|---| | baseline (blend 0.40, rho 0) | 0.2439 | 0.2422 | 1,021 | +0.1% | [−6.7%, +7.0%] | | blend 0.00(純近 4 場) | 0.2449 | 0.2422 | 1,073 | −1.7% | [−8.4%, +5.1%] | | blend 1.00(純賽季錨點) | 0.2443 | 0.2422 | 970 | −1.3% | [−8.0%, +5.5%] | | rho −0.05 | 0.2439 | 0.2422 | 1,021 | +0.1% | [−6.7%, +7.0%] | | 聯賽係數(look-ahead) | 0.2434 | 0.2422 | 1,047 | +0.4% | [−6.6%, +7.3%] | 即使使用**全季聯賽係數**(有 look-ahead),O25 仍然輸 Brier,ROI 只有 +0.4%,CI 包括 0。呢個確認咗:問題唔係「差一個聯賽係數」,而係模型本身未有穩定、可證實的 edge。 ## 結論 **大樣本(1,311 場預測)下,O25 沒有 edge;1X2 明顯 negative。** - O25 ROI +0.1%,95% CI [−6.7%, +7.0%];Brier 亦輸市場。 - 最後 30% 的 +4.2%(CI [−8.5%, +14.2%])包括 0;之前 +26.1% / +13.4% 的 signal 已經消失。 - 1X2 ROI −10.0%(CI [−18.9%, −0.9%])應該繼續禁用。 - 「A/B/C 級 = 主注」目前應該降級為「觀察 / paper trade」;唔好加大注碼。 ## 下一步 1. 每次用 `data_update.py --season 2627` 更新 football-data(18 聯賽),再重跑 backtest。 2. 用 `paper.py log --stake-mode shadow` 每日記錄 A/B/C 預測,累積 3–6 個月 forward record。 3. 每次下注記錄 bet price 和 closing price,report CLV;CLV 比短期 ROI 更早反映有冇 edge。 4. 加多季數據(2024/25、2025/26)再做 walk-forward;不要在同一季調參再同一季測試。 5. 先換 `betting.py` 的結算/EV/Kelly,再考慮 Dixon-Coles、lineups、xG 模型等新 feature。