Track record
Every prediction timestamped before kick-off and settled automatically. Hit rate, calibration and return are measured against the closing market price.
Window Jun 7 – Oct 20
- Hit rate
- 49.8%
- 558 of 1120 picks
- Return · Closing price
- -12.8%
- flat stake, closing odds, 585 bets
- Settled
- 1,120
- 1X2 picks with a final score
- Longest losing run
- 5
Monthly hit rate
Small months swing wildly; read them with the sample size in view.
Latest results
57 matches rated today
Create a free account and see every prediction for 7 days. No card needed.
Calibration, leagues and marketsThe full report — calibration curves, per-league and per-market records, return at opening and closing market prices, weekly review.
1,120 decided matches · model version dc-1.0, dc-1.2-cal. 0 rows had no stored outcome flag and were re-derived from the score. 1X2 Brier is multi-class (0 best, 2 worst; 0.667 is a uniform guess). Over/Under and BTTS Brier are binary (0 to 1; 0.25 is a coin flip). The two scales are not comparable.
Monthly hit rate
| Month | n | W–L | Hit rate | Brier |
|---|---|---|---|---|
| Oct 2026 | 258 | 150–108 | 58.1% | 0.565 |
| Sep 2026 | 352 | 154–198 | 43.8% | 0.628 |
| Aug 2026 | 398 | 199–199 | 50.0% | 0.602 |
| Jul 2026 | 87 | 42–45 | 48.3% | 0.605 |
| Jun 2026 | 25 | 13–12 | 52.0% | 0.607 |
Small months swing wildly; read them with the sample size in view.
Calibration
| Confidence | n | Predicted | Observed | Gap |
|---|---|---|---|---|
| 30–40% | 224 | 35.5% | 37.9% | +2 |
| 40–50% | 434 | 47.2% | 49.1% | +2 |
| 50–60% | 98 | 51.0% | 51.0% | −0 |
| 60–70% | 98 | 68.8% | 67.3% | −1 |
| 70–80% | 119 | 76.2% | 77.3% | +1 |
| 90–100% | 2 | 100.0% | 100.0% | +0 |
Retrospective (today's curve). A well-calibrated model sits on the diagonal: picks published at 60% should land about 60% of the time. Gaps beyond 10 points are marked. Bins with fewer than 10 picks are listed but not plotted. Calibration curve: covered, 1,098 matches, fitted Oct 19.
Walk-forward (earlier months only)
| Confidence | n | Predicted | Observed | Gap |
|---|---|---|---|---|
| 30–40% | 128 | 34.3% | 45.3% | +11 |
| 40–50% | 113 | 44.2% | 59.3% | +15 |
| 50–60% | 146 | 54.1% | 39.0% | −15 |
| 60–70% | 69 | 66.2% | 78.3% | +12 |
| 70–80% | 41 | 74.4% | 78.0% | +4 |
| 80–90% | 3 | 81.8% | 66.7% | −15 |
| 90–100% | 2 | 100.0% | 50.0% | −50 |
Each month is scored with a curve fitted on the months before it. 510 early matches form the warm-up and are not scored; first scored month: Sep 2026. Pick Brier raw 0.2332 → calibrated 0.2404 (binary scale).
By league
| League | n | 1X2 | Over/Under 2.5 | Both teams to score | Brier |
|---|---|---|---|---|---|
| 1. Divisjon | 136 | 55.1%75–61 | 71.3%97–39 | 69.1%94–42 | 0.578 |
| Brasileirão | 115 | 47.8%55–60 | 47.0%54–61 | 50.4%58–57 | 0.606 |
| Championship | 109 | 37.6%41–68 | 46.8%51–58 | 52.3%57–52 | 0.692 |
| Ekstraklasa | 95 | 52.6%50–45 | 55.8%53–42 | 60.0%57–38 | 0.596 |
| Eliteserien | 93 | 52.7%49–44 | 67.7%63–30 | 61.3%57–36 | 0.559 |
| LaLiga | 78 | 51.3%40–38 | 67.9%53–25 | 53.8%42–36 | 0.567 |
| Eredivisie | 73 | 46.6%34–39 | 75.3%55–18 | 74.0%54–19 | 0.629 |
| Liga Portugal | 67 | 52.2%35–32 | 52.2%35–32 | 55.2%37–30 | 0.547 |
| Superligaen | 66 | 47.0%31–35 | 40.9%27–39 | 51.5%34–32 | 0.652 |
| Süper Lig | 63 | 46.0%29–34 | 58.7%37–26 | 46.0%29–34 | 0.592 |
| Premier League | 61 | 47.5%29–32 | 52.5%32–29 | 52.5%32–29 | 0.617 |
| Serie A | 61 | 59.0%36–25 | 52.5%32–29 | 54.1%33–28 | 0.551 |
| Ligue 1 | 57 | 52.6%30–27 | 61.4%35–22 | 50.9%29–28 | 0.613 |
| Bundesliga | 46 | 52.2%24–22 | 69.6%32–14 | 58.7%27–19 | 0.618 |
Only leagues with settled matches are listed. Hit rate and W–L per market; Over/Under 2.5 and both-teams-to-score are settled from the score. Green from 60%, red under 45% for 1X2 and under 50% for goal markets (10+ matches).
Strong markets
| Market | League | Zone | W–L | Hit rate |
|---|---|---|---|---|
| Over 2.5 | EliteserienNOR | ≥75% | 14/15 | 93% |
| 2. Divisjon Avd. 2NOR | ≥75% | 25/29 | 86% | |
| 3. Divisjon Avd. 2NOR | ≥75% | 37/43 | 86% | |
| Highland / LowlandSCO | ≥75% | 22/27 | 81% | |
| Major League SoccerUSA | ≥75% | 12/15 | 80% | |
| BTTS Yes | Super LeagueSUI | ≥70% | 13/16 | 81% |
| Major League SoccerUSA | ≥70% | 20/27 | 74% | |
| 3. LigaGER | ≥70% | 16/22 | 73% | |
| Tweede DivisieNED | ≥70% | 23/32 | 72% | |
| Under 2.5 | Liga Profesional ClausuraARG | ≥75% | 21/27 | 78% |
| 1X2 | EliteserienNOR | ≥70% | 16/17 | 94% |
| Liga PortugalPOR | ≥70% | 15/17 | 88% | |
| National DivisionLUX | ≥70% | 13/15 | 87% | |
| 1. DivisjonNOR | ≥70% | 12/15 | 80% | |
| 2. Divisjon Avd. 2NOR | ≥70% | 12/15 | 80% |
Uncovered leagues included; women's, youth, friendly and cup matches are not showcased. A league drops off at the Monday refresh when it falls below the threshold.
By market
| Market | n | W–L | Hit rate | Brier |
|---|---|---|---|---|
| 1X2 | 1120 | 558–562 | 49.8% | 0.602 |
| Over/Under 2.5 | 1120 | 656–464 | 58.6% | 0.240 |
| Both teams to score | 1120 | 640–480 | 57.1% | 0.243 |
Over/under 2.5 and both-teams-to-score are scored on the raw model probability and settled from the final score. Their Brier is binary (0.25 = coin flip).
Flat-stake return
- Bets
- 585 · 285–300
- Odds coverage
- 52% · 585 of 1120 decided matches have a price for this phase; 535 without a snapshot are outside the ROI denominator.
- Staked
- 585.00
- Returned
- 510.32
- Profit
- -74.68 (-12.8%)
- Bookmaker favourite
- 52.3% · Brier 0.584
- Providers
- 1xBet_Spain, API-Football/Bet365, Bet365_Brazil, Bet365_Spain, Bet365_UK CPM, Bet365_UK affiliate, Bet365_default, Betfair UK Sportsbook_UK, Betfred_United Kingdom, Bwin_France, Marcaapuestas_Spain, Paddy Power_UK, Sky Bet_UK, Spreadex_UK, SuperBet_Poland, Unibet_France, unknown
- Bets
- 638 · 317–321
- Odds coverage
- 57% · 638 of 1120 decided matches have a price for this phase; 482 without a snapshot are outside the ROI denominator.
- Staked
- 638.00
- Returned
- 568.31
- Profit
- -69.69 (-10.9%)
- Bookmaker favourite
- 52.7% · Brier 0.578
- Providers
- 1xBet_Spain, Bet365_Brazil, Bet365_Spain, Bet365_UK CPM, Bet365_UK affiliate, Bet365_default, Betfair UK Sportsbook_UK, Betfred_United Kingdom, Bwin_France, Marcaapuestas_Spain, Paddy Power_UK, Sky Bet_UK, Spreadex_UK, SuperBet_Poland, Unibet_France, unknown
One unit on the model's 1X2 pick at the last captured odds before kick-off (closing, else opening). Only matches with an odds snapshot count, so this window is shorter than the full record. The bookmaker line shows how often the market favourite won over the same matches, with its margin-free Brier. The closing price is a benchmark of what the market knew at kick-off; the opening price is closer to what was available when the prediction was published. Neither is a realised return.
Signal report
When the model says 70% for a selection, does it hit 70%? When it disagrees with the market by 10 points, is it right? For each market these tables bucket the model probability of the chosen side (level) and the gap between model and margin-free bookmaker probability (edge, percentage points) and show the hit rate. Green from 65%, red under 50%; buckets with fewer than 10 matches are faded.
1X2 · model level
| League | <50% | 50–60% | 60–70% | ≥70% |
|---|---|---|---|---|
| All leagues | 41.7%258–360 | 48.8%126–132 | 67.8%101–48 | 76.8%73–22 |
| 1. Divisjon | 49.2%30–31 | 48.6%17–18 | 64.0%16–9 | 80.0%12–3 |
| Brasileirão | 37.9%25–41 | 53.1%17–15 | 81.8%9–2 | 66.7%4–2 |
| Championship | 36.5%27–47 | 45.5%10–12 | 40.0%4–6 | 0.0%0–3 |
| Ekstraklasa | 47.2%34–38 | 64.7%11–6 | 80.0%4–1 | 100.0%1–0 |
| Eliteserien | 40.0%18–27 | 47.4%9–10 | 50.0%6–6 | 94.1%16–1 |
| LaLiga | 37.2%16–27 | 41.2%7–10 | 92.3%12–1 | 100.0%5–0 |
| Eredivisie | 37.0%10–17 | 44.0%11–14 | 57.1%8–6 | 71.4%5–2 |
| Liga Portugal | 32.3%10–21 | 46.2%6–7 | 66.7%4–2 | 88.2%15–2 |
| Superligaen | 46.7%14–16 | 50.0%11–11 | 44.4%4–5 | 40.0%2–3 |
| Süper Lig | 26.5%9–25 | 50.0%6–6 | 85.7%12–2 | 66.7%2–1 |
| Premier League | 41.5%17–24 | 50.0%4–4 | 62.5%5–3 | 75.0%3–1 |
| Serie A | 52.8%19–17 | 41.7%5–7 | 88.9%8–1 | 100.0%4–0 |
| Ligue 1 | 51.4%19–18 | 57.1%8–6 | 60.0%3–2 | 0.0%0–1 |
| Bundesliga | 47.6%10–11 | 40.0%4–6 | 75.0%6–2 | 57.1%4–3 |
1X2 · edge vs market
| League | ≤−5 | −5…0 | 0…+5 | +5…+10 | >+10 |
|---|---|---|---|---|---|
| All leagues | 60.3%105–69 | 53.7%73–63 | 49.3%70–72 | 42.2%38–52 | 33.0%33–67 |
| Championship | 36.8%7–12 | 66.7%12–6 | 38.1%8–13 | 21.4%3–11 | 16.7%4–20 |
| LaLiga | 68.0%17–8 | 56.3%9–7 | 61.1%11–7 | 18.2%2–9 | 12.5%1–7 |
| Brasileirão | 61.9%13–8 | 50.0%9–9 | 53.3%8–7 | 54.5%6–5 | 33.3%3–6 |
| Eredivisie | 57.1%16–12 | 33.3%2–4 | 53.8%7–6 | 40.0%2–3 | 25.0%3–9 |
| Premier League | 64.7%11–6 | 40.0%6–9 | 50.0%7–7 | 57.1%4–3 | 12.5%1–7 |
| Liga Portugal | 52.9%9–8 | 44.4%4–5 | 63.6%7–4 | 80.0%8–2 | 36.4%4–7 |
| Ligue 1 | 66.7%10–5 | 52.9%9–8 | 45.5%5–6 | 50.0%2–2 | 33.3%3–6 |
| Bundesliga | 40.0%2–3 | 75.0%9–3 | 42.1%8–11 | 55.6%5–4 | 0.0%0–1 |
| Serie A | 71.4%5–2 | 42.9%3–4 | 60.0%3–2 | 20.0%1–4 | 60.0%3–2 |
| Süper Lig | 85.7%6–1 | 60.0%3–2 | 0.0%0–1 | 50.0%2–2 | 71.4%5–2 |
| 1. Divisjon | 77.8%7–2 | 75.0%3–1 | 66.7%2–1 | 40.0%2–3 | 100.0%3–0 |
| Eliteserien | 33.3%1–2 | 33.3%1–2 | 50.0%3–3 | 0.0%0–2 | 100.0%2–0 |
| Ekstraklasa | 100.0%1–0 | 50.0%2–2 | 25.0%1–3 | 0.0%0–1 | 100.0%1–0 |
| Superligaen | – | 50.0%1–1 | 0.0%0–1 | 50.0%1–1 | – |
Over/Under 2.5 · model level
| League | <50% | 50–60% | 60–70% | ≥70% |
|---|---|---|---|---|
| All leagues | – | 53.0%282–250 | 61.9%232–143 | 66.7%142–71 |
| 1. Divisjon | – | 73.3%11–4 | 76.5%26–8 | 69.0%60–27 |
| Brasileirão | – | 49.4%40–41 | 40.6%13–19 | 50.0%1–1 |
| Championship | – | 48.6%35–37 | 42.9%12–16 | 44.4%4–5 |
| Ekstraklasa | – | 42.6%23–31 | 78.1%25–7 | 55.6%5–4 |
| Eliteserien | – | 59.4%19–13 | 69.4%25–11 | 76.0%19–6 |
| LaLiga | – | 65.9%27–14 | 70.8%17–7 | 69.2%9–4 |
| Eredivisie | – | 61.1%11–7 | 82.4%28–6 | 76.2%16–5 |
| Liga Portugal | – | 54.8%17–14 | 51.6%16–15 | 40.0%2–3 |
| Superligaen | – | 32.4%11–23 | 52.4%11–10 | 45.5%5–6 |
| Süper Lig | – | 57.9%22–16 | 58.8%10–7 | 62.5%5–3 |
| Premier League | – | 57.5%23–17 | 45.0%9–11 | 0.0%0–1 |
| Serie A | – | 54.5%18–15 | 48.0%12–13 | 66.7%2–1 |
| Ligue 1 | – | 62.1%18–11 | 63.6%14–8 | 50.0%3–3 |
| Bundesliga | – | 50.0%7–7 | 73.7%14–5 | 84.6%11–2 |
Over/Under 2.5 · 1X2 disagreement (above threshold)
| League | <5 | 5–10 | ≥10 |
|---|---|---|---|
| All leagues | 65.7%46–24 | 71.9%23–9 | 83.7%36–7 |
| Eredivisie | 73.3%11–4 | 75.0%3–1 | 94.4%17–1 |
| Bundesliga | 71.4%10–4 | 100.0%6–0 | – |
| LaLiga | 55.6%5–4 | 60.0%3–2 | 100.0%5–0 |
| 1. Divisjon | 100.0%5–0 | 60.0%6–4 | 66.7%2–1 |
| Ligue 1 | 60.0%3–2 | – | 50.0%2–2 |
| Liga Portugal | 50.0%1–1 | 60.0%3–2 | 100.0%2–0 |
| Championship | 33.3%1–2 | 100.0%1–0 | 75.0%3–1 |
| Premier League | 0.0%0–3 | 100.0%1–0 | 100.0%2–0 |
| Eliteserien | 80.0%4–1 | – | 100.0%1–0 |
Both teams to score · model level
| League | <50% | 50–60% | 60–70% | ≥70% |
|---|---|---|---|---|
| All leagues | – | 53.1%340–300 | 60.6%223–145 | 68.8%77–35 |
| 1. Divisjon | – | 68.8%11–5 | 71.7%38–15 | 67.2%45–22 |
| Brasileirão | – | 50.5%48–47 | 50.0%10–10 | – |
| Championship | – | 51.9%42–39 | 52.0%13–12 | 66.7%2–1 |
| Ekstraklasa | – | 58.5%38–27 | 60.7%17–11 | 100.0%2–0 |
| Eliteserien | – | 55.6%20–16 | 60.4%29–19 | 88.9%8–1 |
| LaLiga | – | 53.1%26–23 | 56.0%14–11 | 50.0%2–2 |
| Eredivisie | – | 75.0%15–5 | 70.2%33–14 | 100.0%6–0 |
| Liga Portugal | – | 53.1%26–23 | 68.8%11–5 | 0.0%0–2 |
| Superligaen | – | 57.9%22–16 | 38.1%8–13 | 57.1%4–3 |
| Süper Lig | – | 43.6%17–22 | 47.6%10–11 | 66.7%2–1 |
| Premier League | – | 56.3%27–21 | 38.5%5–8 | – |
| Serie A | – | 52.1%25–23 | 61.5%8–5 | – |
| Ligue 1 | – | 42.9%15–20 | 68.4%13–6 | 33.3%1–2 |
| Bundesliga | – | 38.1%8–13 | 73.7%14–5 | 83.3%5–1 |
Both teams to score · edge vs market
| League | ≤−5 | −5…0 | 0…+5 | +5…+10 | >+10 |
|---|---|---|---|---|---|
| All leagues | 60.0%30–20 | 58.8%80–56 | 62.7%131–78 | 46.5%73–84 | 40.0%30–45 |
| Championship | 100.0%3–0 | 58.8%10–7 | 63.0%17–10 | 33.3%12–24 | 38.5%5–8 |
| LaLiga | 100.0%1–0 | 62.5%5–3 | 56.3%18–14 | 48.0%12–13 | 45.5%5–6 |
| Brasileirão | 66.7%2–1 | 43.8%7–9 | 48.0%12–13 | 45.0%9–11 | 57.1%4–3 |
| Eredivisie | 50.0%3–3 | 70.6%12–5 | 86.2%25–4 | 80.0%8–2 | 100.0%2–0 |
| Premier League | 100.0%2–0 | 57.1%12–9 | 52.4%11–10 | 43.8%7–9 | 0.0%0–1 |
| Liga Portugal | 100.0%1–0 | 85.7%6–1 | 50.0%12–12 | 53.3%8–7 | 50.0%5–5 |
| Ligue 1 | 66.7%4–2 | 64.3%9–5 | 69.2%9–4 | 33.3%4–8 | 27.3%3–8 |
| Bundesliga | 50.0%5–5 | 38.5%5–8 | 86.7%13–2 | 50.0%3–3 | 50.0%1–1 |
| Serie A | 66.7%2–1 | 33.3%2–4 | 57.1%4–3 | 83.3%5–1 | 28.6%2–5 |
| Süper Lig | 40.0%2–3 | 25.0%1–3 | 50.0%2–2 | 25.0%1–3 | 28.6%2–5 |
| 1. Divisjon | 66.7%2–1 | 85.7%6–1 | 57.1%4–3 | 50.0%1–1 | 50.0%1–1 |
| Eliteserien | 100.0%2–0 | 75.0%3–1 | 75.0%3–1 | 0.0%0–1 | 0.0%0–1 |
| Ekstraklasa | 0.0%0–4 | 100.0%2–0 | 100.0%1–0 | 66.7%2–1 | 0.0%0–1 |
Both teams to score · 1X2 disagreement (above threshold)
| League | <5 | 5–10 | ≥10 |
|---|---|---|---|
| All leagues | 62.8%54–32 | 64.0%32–18 | 78.3%47–13 |
| Eredivisie | 75.0%12–4 | 71.4%5–2 | 87.0%20–3 |
| Bundesliga | 77.8%14–4 | 71.4%5–2 | – |
| LaLiga | 50.0%5–5 | 50.0%3–3 | 66.7%4–2 |
| 1. Divisjon | 50.0%3–3 | 75.0%9–3 | 66.7%2–1 |
| Championship | 42.9%3–4 | 100.0%1–0 | 88.9%8–1 |
| Ligue 1 | 62.5%5–3 | 66.7%2–1 | 80.0%4–1 |
| Brasileirão | 75.0%3–1 | 100.0%2–0 | 60.0%3–2 |
| Premier League | 33.3%1–2 | 25.0%1–3 | 66.7%2–1 |
| Eliteserien | 66.7%4–2 | 50.0%1–1 | 100.0%2–0 |
| Süper Lig | 0.0%0–2 | 0.0%0–2 | 33.3%1–2 |
How to read it (as of 2026-09-12): in 1X2 the hit rate falls as the edge grows, so a model drifting away from the market is not being proven right; in the goal markets the level works: Over 2.5 and both-teams-to-score selections above 60% hit, no edge required. Edge tables only include matches with recorded odds (no bookmaker price is stored for Over/Under). Today's picks are built on this report. Disagreement tables: absolute gap (percentage points) between the model's 1X2 pick and the vig-free market, only for Over 2.5 ≥ 65% and BTTS Yes ≥ 60% picks. As of 13 Sept, goal markets hit markedly better at ≥10 points of disagreement (Over 13/13, BTTS 22/24), but most of the sample is Eredivisie; it joins the rule once non-Eredivisie data accumulates.
Showcase record
The showcase pick filters the raw engine output through one rule: goal market first (Over 2.5 model at 65%+ or both-teams-to-score at 60%+), otherwise 1X2 only when the model sits less than 5 points above the market, never 1X2 in weak leagues; everything else is 'no pick'. Picks freeze 3 hours before kick-off and are scored here as frozen.
| Market | n | Hit rate |
|---|---|---|
| All picks | 115 | 0.6173913043478261 |
| 1X2 | 42 | 0.5714285714285714 |
| Over/Under 2.5 | 21 | 0.6666666666666666 |
| Both teams to score | 52 | 0.6346153846153846 |
| No pick | 85 | 0.425 |
| League | n | Hit rate | No pick |
|---|---|---|---|
| Eredivisie | 20 | 0.7 | 0 |
| LaLiga | 14 | 0.7857142857142857 | 9 |
| Serie A | 13 | 0.5384615384615384 | 5 |
| Bundesliga | 12 | 0.6666666666666666 | 1 |
| Süper Lig | 11 | 0.5454545454545454 | 6 |
| Championship | 10 | 0.4 | 2 |
| 1. Divisjon | 8 | 0.625 | 0 |
| Ligue 1 | 5 | 1 | 12 |
| Brasileirão | 4 | 0.75 | 23 |
| Ekstraklasa | 4 | 0.75 | 0 |
| Premier League | 4 | 0.25 | 14 |
| Eliteserien | 4 | 0.5 | 1 |
| Liga Portugal | 3 | 0.3333333333333333 | 10 |
| Superligaen | 3 | 0.3333333333333333 | 2 |
Rule from the 13 Sept 2026 backtest (231 matches with odds): combined rule 113/183 = 62%, coverage 79%; 1X2 alone 43%, bookmaker favourite 47%. Moves to the showcase after one week of live observation.
Weekly progress
| Week | 1X2 | Over/Under 2.5 | Both teams to score | ||||||
|---|---|---|---|---|---|---|---|---|---|
| n | Hit rate | Log-loss | n | Hit rate | Log-loss | n | Hit rate | Log-loss | |
| 2026-W42 | 133 | 54.9% | 0.968 | 133 | 54.1% | 0.682 | 133 | 54.1% | 0.692 |
| 2026-W41 | 97 | 61.9% | 0.924 | 97 | 61.9% | 0.664 | 97 | 57.7% | 0.673 |
| 2026-W38 | 81 | 48.1% | 1.028 | 81 | 61.7% | 0.689 | 81 | 55.6% | 0.688 |
| 2026-W37 | 67 | 35.8% | 1.044 | 67 | 49.3% | 0.714 | 67 | 49.3% | 0.711 |
| 2026-W36 | 85 | 49.4% | 1.052 | 85 | 64.7% | 0.658 | 85 | 60.0% | 0.647 |
| 2026-W35 | 68 | 52.9% | 0.985 | 68 | 63.2% | 0.653 | 68 | 61.8% | 0.655 |
| 2026-W34 | 50 | 44.0% | 1.105 | 50 | 62.0% | 0.659 | 50 | 46.0% | 0.692 |
| 2026-W33 | 27 | 37.0% | 1.169 | 27 | 66.7% | 0.614 | 27 | 74.1% | 0.589 |
| 2026-W32 | 13 | 46.2% | 1.001 | 13 | 38.5% | 0.710 | 13 | 61.5% | 0.712 |
| 2026-W31 | 3 | 33.3% | 1.082 | 3 | 33.3% | 0.670 | 3 | 33.3% | 0.723 |
| 2026-W30 | 3 | 33.3% | 0.973 | 3 | 66.7% | 0.691 | 3 | 33.3% | 0.683 |
| Last 11 weeks | 627 | 50.1% | 1.011 | 627 | 59.0% | 0.673 | 627 | 56.1% | 0.677 |
Each row is the matches played and settled in that ISO week; the numbers never change afterwards. Lower log-loss is better (1X2 random = 1.099; binary markets = 0.693). ECE is the mean gap between predicted and observed probability over 10 bins. A single week is noisy; decisions are taken on the rolling window. On the 477 matches with a closing price: model 48.0%, bookmaker favourite 51.8%, ROI -13.5%. Display calibration (curve fitted one week earlier): confidence Brier raw 0.2351 → calibrated 0.2420.
- 1X2 ECE 0.081 > 0.05
- Display calibration made 1X2 confidence Brier worse for 3 consecutive weeks
Weekly lessons (shadow)
Every settled match gets a grade card per market: did the model's selection come in, what the bookmaker's pre-match favourite did, who was right when they disagreed, and how the pre-match assessment status fared. The week's cards are summed into cells below. This changes nothing yet: picks, model and assessment rules stay as they are until at least four weeks of shadow record justify a versioned change.
6 cards from 2 matches · covered leagues · Assessment status known pre-match for 0 cards; 6 cards had no pre-match snapshot and are excluded from the status rows.
| Cell | n | Hit | 95% | Model avg |
|---|---|---|---|---|
| 1X2 | 2 | 100% | 34–100% | 52% |
| 1X2 · Model and bookmaker agreed | 1 | 100% | 21–100% | 44% |
| 1X2 · Model level <50% | 1 | 100% | 21–100% | 44% |
| 1X2 · Model level 50–60% | 1 | 100% | 21–100% | 59% |
| Over/Under 2.5 | 2 | 50% | 9–91% | 60% |
| Over/Under 2.5 · Model level 50–60% | 1 | 0% | 0–79% | 52% |
| Over/Under 2.5 · Model level 60–70% | 1 | 100% | 21–100% | 67% |
| Both teams to score | 2 | 0% | 0–66% | 58% |
| Both teams to score · Model level 50–60% | 1 | 0% | 0–79% | 53% |
| Both teams to score · Model level 60–70% | 1 | 0% | 0–79% | 64% |
No cell cleared the 20-match bar with a clear signal this week. That is normal; lessons need volume.
Cells with fewer than 20 cards are shown in grey and never produce a lesson. Status rows use only snapshots written before kick-off; nothing is graded retrospectively with today's rules. Lessons are exploratory and feed a versioned rule change only after a multi-week shadow record.
Computed Tue, Oct 20, 09:36. Recomputed hourly. How the numbers are defined: methodology. · Open data