Model accuracy

How accurate is a football prediction model? Ours has called the right result — home win, draw or away win — in 49.4% of 6,439 matches, against 33.3% for a random guess, and the exact score in 10.4%. What matters more than the hit rate is calibration: when the model says 60%, does it happen 6 times in 10? The calibration table below checks exactly that.

Every prediction this model publishes is written to a log before kick-off and never touched again. This page scores all of them against what actually happened. As of 15 November 2026, 6,439 predictions have been made before kick-off and have a final result.

How it is scored: a prediction is the three probabilities we published before kick-off, home win, draw and away win. It counts as correct when the result we gave the highest chance is the one that happened after 90 minutes; extra time and penalties do not count. Only the last version logged before kick-off is scored, and no entry is edited afterwards.

In raw counts: 3,179 correct results and 670 exact scorelines.

Its Brier score over the three outcomes is 0.615 (lower is better). For scale, a model that learned nothing and gave every match an even 33.3% across the three results would score 0.667. The model is ahead of that baseline.

Predictions logged between 19 July 2026 and 15 November 2026.

Two honest limits. This is a young sample, so every figure here will move; and the hit rate on its own flatters any model that simply backs the favourite.

The record, month by month

In October 2026, the last full month, the model called 50.5% of 2,532 results right, against 43.7% for backing the home side every time, with a Brier score of 0.604. That is 4.2 points better than September 2026 (46.3%).

November 2026 so far: 54.4% right over 973 results, 46.1% for the home side.

MonthResultsModelHomeBrier
Nov 2026*97354.4%46.1%0.584
Oct 20262,53250.5%43.7%0.604
Sep 20261,31246.3%41.4%0.630
Aug 20261,29547.7%44.3%0.633
Jul 202632744.3%49.8%0.661

Months are by kick-off date, scored on ninety minutes; * marks the month still running. “Home” is how often backing the home side was right. A month needs 30 settled predictions to get a row. The competitions on the board change with the calendar, and the model's calibration changed on 29 August and 8 October, so the Brier score is the fairer way to compare months than the hit rate alone.

Against simple baselines

A hit rate means little until it is set beside methods that need no model at all. Here is the model next to four of them, on the same 6,439 matches. The Brier score rewards giving the right result a high probability (lower is better); a method with no probabilities has none.

MethodResult rightBrier
Fulltime Stats model49.4%0.615
Always back the home side44.0%–
Each league's own record so far42.9%0.654
The same split every match (44 / 25 / 31)44.0%0.648
Even thirds, 33 / 33 / 33–0.667

The model is ahead of all four, and by more than chance: over 6,439 matches it gets 5.3 more results in every 100 right than backing the home side (95% interval 4.2 to 6.4), and its Brier score is lower than each baseline's, with an interval that stays clear of zero. The margins are modest, which is what an honest football model looks like: much of a match cannot be read from the numbers before it.

The calls to watch are its strongest, where it gives one result 60% or more, and they have to be read period by period, because the model's calibration has changed. Before the calibration of 29 August, 397 such calls averaged 70.4% and came up 57.7% of the time, about 13 points less often than said: too confident. From 29 August to 7 October, 41 such calls averaged 64.3% and came up 82.9% of the time, about 19 points more often than said: too cautious. Since the recalibration of 8 October, 397 such calls averaged 67.0% and came up 76.1% of the time, about 9 points more often than said: too cautious.

“Each league's own record” uses only the results that league had produced in our log before the match, pulled toward the overall rates while its sample is small. “The same split every match” uses the overall rates of these very results, which flatters it; the model is scored only on what it said before kick-off.

Is the model well calibrated?

Accuracy on its own is a weak test: back the favourite every time and any football model lands near the same hit rate. The harder question is whether the numbers mean what they say — when the model gives an outcome a 60% chance, does it happen about 60 times in 100? Each match contributes three forecasts (home, draw, away), so the 6439 settled matches give 19317 probability-and-outcome pairs.

0 100 100 0
Each dot is one band: what the model said across the horizontal, what happened up the vertical, the dot sized by how many forecasts it rests on. The straight line is a model that means exactly what it says. Dots below it are overconfidence — the outcome came up less often than the number claimed.
Model saidForecastsAverage probabilityActually happened
0–10%2006.8%13.5%
10–20%140615.8%16.6%
20–30%775725.7%24.3%
30–40%483733.7%33.4%
40–50%296343.9%46.1%
50–65%164955.4%58.6%
65–100%50572.9%68.3%

Read it row by row: the closer the last two columns are, the more literally the percentages on this site can be taken.

Where the model does best

Across the 75 competitions with at least 25 settled predictions, the model has called the right result most often in Premier League (Belarus) 65.0%, Bundesliga (Austria) 63.9%, 1. Division (Cyprus) 62.9%. One row is one competition in one country, so two leagues sharing a name are counted apart — pooled on the name alone, "Super League" mixed China with Switzerland and printed a figure for a competition that does not exist.

A hit rate is not comparable between competitions on its own. A league of one-sided fixtures is easier to call than a level one, so a high figure there is partly a fact about the league. The full table carries a second column that is about us instead — how much of the available ground the model gained on a forecast that knew nothing and gave every match an even split.

The model during the match

From kick-off, every match page re-prices the three outcomes as the game goes on — the same model, asked how many goals are left rather than how many there will be. This is that version scored, over 5641 finished matches sampled every 5 minutes: 107179 in-play forecasts, 321537 probability/outcome pairs.

These were not logged as they happened — they are replayed, and that is worth explaining. The in-play figure is computed in your browser while you watch, so there is no honest way to record it at the time. It does not need to be recorded, because it is a function of four things that all survive the match: the expected goals frozen before kick-off (already in the log above), the minute, the score at that minute, and the sendings-off by then. Replaying a match feeds the model exactly what it would have known at each point and nothing else — a goal in the 60th minute is invisible to the forecast made at the 60th. Anyone with the two published files can reproduce every number in this table.

The comparison that matters is not against a coin flip — knowing the score beats a coin flip on its own. It is against simply holding the pre-match number for the whole match, which is what this site published before. In-play scores 0.463 on Brier against 0.614 for holding the pre-match figure.

MinuteForecastsBrierWhen it says 65%+
0–15 min169230.60373.0% → 73.4%
15–30 min169230.56875.9% → 78.1%
30–45 min169230.52778.5% → 79.3%
45–60 min169230.47681.3% → 80.9%
60–75 min169230.40484.7% → 83.1%
75–90 min225640.26890.5% → 84.8%

The last column is the one to read sceptically, and it is not flattering at both ends: early in a match the model carries the same overconfidence the pre-match table shows, and in the closing stretch it is confident more often than it is right. Brier falls through the table because a model that knows the score in the 80th minute should be better than one that does not — that column measures the clock as much as the model.

The last 15 settled predictions

DateMatchPredictedResultVerdict
15 November 2026Spaeri v FC Iberia 19990-12-2✗ Wrong
15 November 2026Cyprus v Montenegro0-11-4✓ Correct result
15 November 2026Latvia v Armenia0-10-0✗ Wrong
15 November 2026MVV v Vitesse0-12-1✗ Wrong
15 November 2026Tenerife v AD Ceuta FC2-02-0★ Exact scoreline
15 November 2026Amarante v Felgueiras 19321-01-1✗ Wrong
15 November 2026Portimonense v Academica1-00-0✗ Wrong
15 November 2026Tondela v Farense2-12-0✓ Correct result
15 November 2026Gobelins v RED Star FC 930-10-2✓ Correct result
14 November 2026Mirassol v Atletico Mineiro1-00-0✗ Wrong
14 November 2026America Mineiro v Avai1-00-2✗ Wrong
14 November 2026Atletico Goianiense v Cuiaba1-01-0★ Exact scoreline
14 November 2026CRB v Ceara2-11-1✗ Wrong
14 November 2026Criciuma v Novorizontino0-10-1★ Exact scoreline
14 November 2026Fortaleza EC v Vila Nova1-01-0★ Exact scoreline

How the predictions are made

A Poisson / Dixon-Coles model built on each team's rolling attack and defence strength, estimated from recent expected-goals data and adjusted for the strength of the opposition and of the league. Each league's own scoring rate and home advantage go into it, and a small correction pulls every split slightly towards an even one; it is re-fitted on this record as it grows, and every change is listed under Corrections on the methodology page. There are no bookmaker odds anywhere in it. The full method is on the About & Methodology page.