🧪 全部 model 都放在同一個測試台
strict prior-only walk-forward; require_xg=True for a common sample。所有 variant 用同一批 xG-available 比賽。只有同時贏 baseline、贏市場 Brier、ROI CI 下限 > 0 才會是 candidate;其餘標 rejected。市場錨定(market shrink)只作校準上限,不是投注模型。
Variants tested
15
Active
1
Candidates
0
Rejected
10
Market O25 Brier
0.2422
📊 Leaderboard
正數 vs baseline / vs market = 比對方好| Model | O25 n | O25 Brier | Market Brier | vs baseline | vs market | O25 ROI | ROI 95% CI | 1X2 Brier | 1X2 ROI | Status / Reason |
|---|---|---|---|---|---|---|---|---|---|---|
| Baseline(xG blend 0.40,rho 0) baseline | 1311 | 0.2439 | 0.2422 | 0.0000 | -0.0018 | +0.1% | -6.7% / +7.0% | 0.6104 | -10.0% | active 現行上線模型;A/B/C 只限 HIL 2.5 系。 |
| League factor(全季固定係數,look-ahead) league_factor | 1311 | 0.2434 | 0.2422 | 0.0005 | -0.0013 | +0.4% | -6.6% / +7.3% | 0.6104 | -10.5% | rejected 固定全季係數有前視偏差;只作上限參考,不可上線。 |
| Dixon-Coles rho −0.05 rho_-0.05 | 1311 | 0.2439 | 0.2422 | 0.0000 | -0.0018 | +0.1% | -6.7% / +7.0% | 0.6107 | -9.6% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| Dixon-Coles rho +0.02 rho_+0.02 | 1311 | 0.2439 | 0.2422 | 0.0000 | -0.0018 | +0.1% | -6.7% / +7.0% | 0.6104 | -9.6% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| 純近 4 場 xG(blend 0.0) blend_0.0 | 1311 | 0.2449 | 0.2422 | -0.0010 | -0.0027 | -1.7% | -8.4% / +5.1% | 0.6141 | -10.9% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| 純賽季 Ridge anchor(blend 1.0) blend_1.0 | 1311 | 0.2443 | 0.2422 | -0.0003 | -0.0021 | -1.3% | -8.0% / +5.5% | 0.6101 | -10.6% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| Bivariate Poisson(common 0.05) bivariate_0.05 | 1311 | 0.2440 | 0.2422 | -0.0000 | -0.0018 | -0.3% | -7.6% / +6.9% | 0.6104 | -9.8% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| Bivariate Poisson(common 0.10) bivariate_0.10 | 1311 | 0.2440 | 0.2422 | -0.0001 | -0.0018 | +0.0% | -7.1% / +7.0% | 0.6105 | -10.7% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| Bivariate Poisson(common 0.20) bivariate_0.20 | 1311 | 0.2441 | 0.2422 | -0.0002 | -0.0019 | +0.5% | -6.1% / +6.9% | 0.6112 | -10.0% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| 用實際入球代替 xG 做 ratings actual_goals | 1311 | 0.2530 | 0.2422 | -0.0091 | -0.0108 | -5.0% | -11.2% / +1.6% | 0.6146 | -9.5% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| 實際入球 + Bivariate 0.10 actual_goals_bivariate_0.10 | 1311 | 0.2527 | 0.2422 | -0.0088 | -0.0105 | -5.0% | -11.1% / +1.4% | 0.6155 | -12.9% | rejected O25 Brier 未贏 baseline;O25 Brier 未贏市場;ROI CI 含 0 |
| 市場錨定 25%(benchmark) market_shrink_0.25 | 1311 | 0.2425 | 0.2422 | 0.0014 | -0.0004 | +0.5% | -6.1% / +6.7% | 0.5996 | -12.4% | benchmark 市場錨定/市場本身,只作校準上限,不是可投注 edge。 |
| 市場錨定 50%(benchmark) market_shrink_0.50 | 1311 | 0.2418 | 0.2422 | 0.0022 | 0.0004 | +0.4% | -6.8% / +7.8% | 0.5915 | -11.7% | benchmark 市場錨定/市場本身,只作校準上限,不是可投注 edge。 |
| 市場錨定 75%(benchmark) market_shrink_0.75 | 1311 | 0.2417 | 0.2422 | 0.0023 | 0.0005 | +1.3% | -8.3% / +12.0% | 0.5862 | -13.7% | benchmark 市場錨定/市場本身,只作校準上限,不是可投注 edge。 |
| 完全等於市場(benchmark) market_only | 1311 | 0.2422 | 0.2422 | 0.0018 | 0.0000 | — | — | 0.5837 | — | benchmark 市場錨定/市場本身,只作校準上限,不是可投注 edge。 |
🎯 CLV meta-model
walk-forward logistic regression · predicting beat-the-close用 prior bets 訓練,特徵:edge、log(price)、model probability、market probability、over/under。n=893;AUC=0.504;Brier 0.2482 vs base 0.2457。CLV meta-model has no stable out-of-sample advantage; keep it experimental/rejected.
| Threshold | Bets | ROI | CLV | Beat close |
|---|---|---|---|---|
| 0.45 | 345 | +0.8% | +0.6% | +42.0% |
| 0.50 | 86 | -8.4% | +0.9% | +41.9% |
| 0.55 | 44 | -17.2% | +0.9% | +43.2% |
| 0.60 | 11 | -19.1% | +0.2% | +36.4% |
📋 數據審計
邊個 model 有數據做,邊個未| 數據 | 數量 | 用途 | 狀態 |
|---|---|---|---|
| FotMob matches | 2198 | 球員/入球/陣容 | 可做球員入球 prototype |
| FotMob xG rows | 2182 | xG/射門 | 已用於主力模型 |
| FotMob goal rows | 6165 | 球員入球 | 可做 prototype |
| FotMob lineup rows | 93185 | 正選/後備 | 需要分鐘/可用性 |
| Flashscore matches | 16 | 角球/統計 | 樣本太少 |
| Flashscore corner rows | 18 | 角球模型 | 不足,先接新數據源 |
| Odds snapshot files | 1 | CLV / 市場走勢 | 收集中 |
| CLV meta-model AUC | 0.504 | beat-the-close | rejected(AUC ≤ 0.55) |
球員入球模型有 FotMob goals/lineups 可以做 prototype,但未有歷史 HKJC 球員盤賠率,所以未能夠做 market Brier 驗證。角球模型目前樣本不足。
🧭 結論
- Active:baseline xG + Ridge;A/B/C 只限 HIL 2.5 系。
- Candidate:暫時 0 個。要贏 baseline、贏市場、ROI CI 下限 > 0,三個條件同時成立。
- Rejected:rho、blend、bivariate、actual goals 等改動都未能通關;league factor 有前視偏差。
- Benchmark:market shrink 50–75% 的 Brier 看似比市場好,但因為用了市場價,唔係可投注 edge;只證明市場本身很難贏。
🔭 下一個 search
未通關,但值得試- 球員入球模型:FotMob 2,198 場、6,165 個入球、93,185 條陣容;可做 FGS/AGS/LGS/MSP prototype,但未有歷史 HKJC 球員盤賠率,暫時不能做 market Brier 驗證。
- 角球模型:Flashscore 只有 16 場 / 18 條角球;樣本不足,先接 FBref/SofaScore/Flashscore。
- 市場走勢 / CLV:已開始 snapshot;要累積 2–4 週 opening→closing 才有足夠樣本。CLV meta-model 初版 AUC 0.504,已 rejected。
- Bayesian hierarchical Poisson:未實作;下一個可以試的機率模型,重點是小型聯賽的 partial pooling。
- 走地 Markov / Gamma-Poisson:`live_engine.py` 已有;211 場半場回測 Brier 0.2404 vs 純時間 0.2361,暫時關閉。
▶️ 重跑
research 目錄cd ..\robhkjc-research python scripts/model_lab.py cd ..\robhkjc-app python build_site.py
FootballSense · model lab · 18+ · 只供研究,不構成投注建議