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

JunJulAugSepOct

Small months swing wildly; read them with the sample size in view.

1,108 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

orange bars = fewer than 30 matches
MonthnW–LHit rateBrier
Oct 2026258150–10858.1%0.565
Sep 2026352154–19843.8%0.628
Aug 2026398199–19950.0%0.602
Jul 20268742–4548.3%0.605
Jun 20262513–1252.0%0.607

Small months swing wildly; read them with the sample size in view.

Calibration

calibrated confidence vs observed hit rate
ConfidencenPredictedObservedGap
30–40%22435.5%37.9%+2
40–50%43447.2%49.1%+2
50–60%9851.0%51.0%−0
60–70%9868.8%67.3%−1
70–80%11976.2%77.3%+1
90–100%2100.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)

ConfidencenPredictedObservedGap
30–40%12834.3%45.3%+11
40–50%11344.2%59.3%+15
50–60%14654.1%39.0%−15
60–70%6966.2%78.3%+12
70–80%4174.4%78.0%+4
80–90%381.8%66.7%−15
90–100%2100.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

Leaguen1X2Over/Under 2.5Both teams to scoreBrier
1. Divisjon13655.1%75–6171.3%97–3969.1%94–420.578
Brasileirão11547.8%55–6047.0%54–6150.4%58–570.606
Championship10937.6%41–6846.8%51–5852.3%57–520.692
Ekstraklasa9552.6%50–4555.8%53–4260.0%57–380.596
Eliteserien9352.7%49–4467.7%63–3061.3%57–360.559
LaLiga7851.3%40–3867.9%53–2553.8%42–360.567
Eredivisie7346.6%34–3975.3%55–1874.0%54–190.629
Liga Portugal6752.2%35–3252.2%35–3255.2%37–300.547
Superligaen6647.0%31–3540.9%27–3951.5%34–320.652
Süper Lig6346.0%29–3458.7%37–2646.0%29–340.592
Premier League6147.5%29–3252.5%32–2952.5%32–290.617
Serie A6159.0%36–2552.5%32–2954.1%33–280.551
Ligue 15752.6%30–2761.4%35–2250.9%29–280.613
Bundesliga4652.2%24–2269.6%32–1458.7%27–190.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

league × market · ≥15 matches · ≥70% · 180 days
MarketLeagueZoneW–LHit rate
Over 2.5EliteserienNOR≥75%14/1593%
2. Divisjon Avd. 2NOR≥75%25/2986%
3. Divisjon Avd. 2NOR≥75%37/4386%
Highland / LowlandSCO≥75%22/2781%
Major League SoccerUSA≥75%12/1580%
BTTS YesSuper LeagueSUI≥70%13/1681%
Major League SoccerUSA≥70%20/2774%
3. LigaGER≥70%16/2273%
Tweede DivisieNED≥70%23/3272%
Under 2.5Liga Profesional ClausuraARG≥75%21/2778%
1X2EliteserienNOR≥70%16/1794%
Liga PortugalPOR≥70%15/1788%
National DivisionLUX≥70%13/1587%
1. DivisjonNOR≥70%12/1580%
2. Divisjon Avd. 2NOR≥70%12/1580%

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

MarketnW–LHit rateBrier
1X21120558–56249.8%0.602
Over/Under 2.51120656–46458.6%0.240
Both teams to score1120640–48057.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

Closing priceAug 14 – Oct 20
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
Opening priceAug 14 – Oct 20
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

market × league × signal · which signal actually hits?

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 leagues41.7%258–36048.8%126–13267.8%101–4876.8%73–22
1. Divisjon49.2%30–3148.6%17–1864.0%16–980.0%12–3
Brasileirão37.9%25–4153.1%17–1581.8%9–266.7%4–2
Championship36.5%27–4745.5%10–1240.0%4–60.0%0–3
Ekstraklasa47.2%34–3864.7%11–680.0%4–1100.0%1–0
Eliteserien40.0%18–2747.4%9–1050.0%6–694.1%16–1
LaLiga37.2%16–2741.2%7–1092.3%12–1100.0%5–0
Eredivisie37.0%10–1744.0%11–1457.1%8–671.4%5–2
Liga Portugal32.3%10–2146.2%6–766.7%4–288.2%15–2
Superligaen46.7%14–1650.0%11–1144.4%4–540.0%2–3
Süper Lig26.5%9–2550.0%6–685.7%12–266.7%2–1
Premier League41.5%17–2450.0%4–462.5%5–375.0%3–1
Serie A52.8%19–1741.7%5–788.9%8–1100.0%4–0
Ligue 151.4%19–1857.1%8–660.0%3–20.0%0–1
Bundesliga47.6%10–1140.0%4–675.0%6–257.1%4–3

1X2 · edge vs market

League≤−5−5…00…+5+5…+10>+10
All leagues60.3%105–6953.7%73–6349.3%70–7242.2%38–5233.0%33–67
Championship36.8%7–1266.7%12–638.1%8–1321.4%3–1116.7%4–20
LaLiga68.0%17–856.3%9–761.1%11–718.2%2–912.5%1–7
Brasileirão61.9%13–850.0%9–953.3%8–754.5%6–533.3%3–6
Eredivisie57.1%16–1233.3%2–453.8%7–640.0%2–325.0%3–9
Premier League64.7%11–640.0%6–950.0%7–757.1%4–312.5%1–7
Liga Portugal52.9%9–844.4%4–563.6%7–480.0%8–236.4%4–7
Ligue 166.7%10–552.9%9–845.5%5–650.0%2–233.3%3–6
Bundesliga40.0%2–375.0%9–342.1%8–1155.6%5–40.0%0–1
Serie A71.4%5–242.9%3–460.0%3–220.0%1–460.0%3–2
Süper Lig85.7%6–160.0%3–20.0%0–150.0%2–271.4%5–2
1. Divisjon77.8%7–275.0%3–166.7%2–140.0%2–3100.0%3–0
Eliteserien33.3%1–233.3%1–250.0%3–30.0%0–2100.0%2–0
Ekstraklasa100.0%1–050.0%2–225.0%1–30.0%0–1100.0%1–0
Superligaen–50.0%1–10.0%0–150.0%1–1–

Over/Under 2.5 · model level

League<50%50–60%60–70%≥70%
All leagues–53.0%282–25061.9%232–14366.7%142–71
1. Divisjon–73.3%11–476.5%26–869.0%60–27
Brasileirão–49.4%40–4140.6%13–1950.0%1–1
Championship–48.6%35–3742.9%12–1644.4%4–5
Ekstraklasa–42.6%23–3178.1%25–755.6%5–4
Eliteserien–59.4%19–1369.4%25–1176.0%19–6
LaLiga–65.9%27–1470.8%17–769.2%9–4
Eredivisie–61.1%11–782.4%28–676.2%16–5
Liga Portugal–54.8%17–1451.6%16–1540.0%2–3
Superligaen–32.4%11–2352.4%11–1045.5%5–6
Süper Lig–57.9%22–1658.8%10–762.5%5–3
Premier League–57.5%23–1745.0%9–110.0%0–1
Serie A–54.5%18–1548.0%12–1366.7%2–1
Ligue 1–62.1%18–1163.6%14–850.0%3–3
Bundesliga–50.0%7–773.7%14–584.6%11–2

Over/Under 2.5 · 1X2 disagreement (above threshold)

League<55–10≥10
All leagues65.7%46–2471.9%23–983.7%36–7
Eredivisie73.3%11–475.0%3–194.4%17–1
Bundesliga71.4%10–4100.0%6–0–
LaLiga55.6%5–460.0%3–2100.0%5–0
1. Divisjon100.0%5–060.0%6–466.7%2–1
Ligue 160.0%3–2–50.0%2–2
Liga Portugal50.0%1–160.0%3–2100.0%2–0
Championship33.3%1–2100.0%1–075.0%3–1
Premier League0.0%0–3100.0%1–0100.0%2–0
Eliteserien80.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–30060.6%223–14568.8%77–35
1. Divisjon–68.8%11–571.7%38–1567.2%45–22
Brasileirão–50.5%48–4750.0%10–10–
Championship–51.9%42–3952.0%13–1266.7%2–1
Ekstraklasa–58.5%38–2760.7%17–11100.0%2–0
Eliteserien–55.6%20–1660.4%29–1988.9%8–1
LaLiga–53.1%26–2356.0%14–1150.0%2–2
Eredivisie–75.0%15–570.2%33–14100.0%6–0
Liga Portugal–53.1%26–2368.8%11–50.0%0–2
Superligaen–57.9%22–1638.1%8–1357.1%4–3
Süper Lig–43.6%17–2247.6%10–1166.7%2–1
Premier League–56.3%27–2138.5%5–8–
Serie A–52.1%25–2361.5%8–5–
Ligue 1–42.9%15–2068.4%13–633.3%1–2
Bundesliga–38.1%8–1373.7%14–583.3%5–1

Both teams to score · edge vs market

League≤−5−5…00…+5+5…+10>+10
All leagues60.0%30–2058.8%80–5662.7%131–7846.5%73–8440.0%30–45
Championship100.0%3–058.8%10–763.0%17–1033.3%12–2438.5%5–8
LaLiga100.0%1–062.5%5–356.3%18–1448.0%12–1345.5%5–6
Brasileirão66.7%2–143.8%7–948.0%12–1345.0%9–1157.1%4–3
Eredivisie50.0%3–370.6%12–586.2%25–480.0%8–2100.0%2–0
Premier League100.0%2–057.1%12–952.4%11–1043.8%7–90.0%0–1
Liga Portugal100.0%1–085.7%6–150.0%12–1253.3%8–750.0%5–5
Ligue 166.7%4–264.3%9–569.2%9–433.3%4–827.3%3–8
Bundesliga50.0%5–538.5%5–886.7%13–250.0%3–350.0%1–1
Serie A66.7%2–133.3%2–457.1%4–383.3%5–128.6%2–5
Süper Lig40.0%2–325.0%1–350.0%2–225.0%1–328.6%2–5
1. Divisjon66.7%2–185.7%6–157.1%4–350.0%1–150.0%1–1
Eliteserien100.0%2–075.0%3–175.0%3–10.0%0–10.0%0–1
Ekstraklasa0.0%0–4100.0%2–0100.0%1–066.7%2–10.0%0–1

Both teams to score · 1X2 disagreement (above threshold)

League<55–10≥10
All leagues62.8%54–3264.0%32–1878.3%47–13
Eredivisie75.0%12–471.4%5–287.0%20–3
Bundesliga77.8%14–471.4%5–2–
LaLiga50.0%5–550.0%3–366.7%4–2
1. Divisjon50.0%3–375.0%9–366.7%2–1
Championship42.9%3–4100.0%1–088.9%8–1
Ligue 162.5%5–366.7%2–180.0%4–1
Brasileirão75.0%3–1100.0%2–060.0%3–2
Premier League33.3%1–225.0%1–366.7%2–1
Eliteserien66.7%4–250.0%1–1100.0%2–0
Süper Lig0.0%0–20.0%0–233.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

rule E · frozen picks · last 30 days

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.

MarketnHit rate
All picks1150.6173913043478261
1X2420.5714285714285714
Over/Under 2.5210.6666666666666666
Both teams to score520.6346153846153846
No pick850.425
LeaguenHit rateNo pick
Eredivisie200.70
LaLiga140.78571428571428579
Serie A130.53846153846153845
Bundesliga120.66666666666666661
Süper Lig110.54545454545454546
Championship100.42
1. Divisjon80.6250
Ligue 15112
Brasileirão40.7523
Ekstraklasa40.750
Premier League40.2514
Eliteserien40.51
Liga Portugal30.333333333333333310
Superligaen30.33333333333333332

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

computed every Monday · covered leagues · official version
Week1X2Over/Under 2.5Both teams to score
nHit rateLog-lossnHit rateLog-lossnHit rateLog-loss
2026-W4213354.9%0.96813354.1%0.68213354.1%0.692
2026-W419761.9%0.9249761.9%0.6649757.7%0.673
2026-W388148.1%1.0288161.7%0.6898155.6%0.688
2026-W376735.8%1.0446749.3%0.7146749.3%0.711
2026-W368549.4%1.0528564.7%0.6588560.0%0.647
2026-W356852.9%0.9856863.2%0.6536861.8%0.655
2026-W345044.0%1.1055062.0%0.6595046.0%0.692
2026-W332737.0%1.1692766.7%0.6142774.1%0.589
2026-W321346.2%1.0011338.5%0.7101361.5%0.712
2026-W31333.3%1.082333.3%0.670333.3%0.723
2026-W30333.3%0.973366.7%0.691333.3%0.683
Last 11 weeks62750.1%1.01162759.0%0.67362756.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.

Alerts from the latest review (2026-W42):
  • 1X2 ECE 0.081 > 0.05
  • Display calibration made 1X2 confidence Brier worse for 3 consecutive weeks

Weekly lessons (shadow)

graded from settled matches · 2026-W42 · exploratory

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.

CellnHit95%Model avg
1X22100%34–100%52%
1X2 · Model and bookmaker agreed1100%21–100%44%
1X2 · Model level <50%1100%21–100%44%
1X2 · Model level 50–60%1100%21–100%59%
Over/Under 2.5250%9–91%60%
Over/Under 2.5 · Model level 50–60%10%0–79%52%
Over/Under 2.5 · Model level 60–70%1100%21–100%67%
Both teams to score20%0–66%58%
Both teams to score · Model level 50–60%10%0–79%53%
Both teams to score · Model level 60–70%10%0–79%64%
Lessons this week

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, 08:35. Recomputed hourly. How the numbers are defined: methodology. · Open data