DEV Community

Waqas R
Waqas R

Posted on

Our football model went 63-for-76 at the World Cup. Here are the 13 it got wrong.

Most football prediction sites publish a hit rate. Almost none publish the list of matches they got wrong.

That asymmetry is the whole problem with accuracy claims in this space: a hit rate you can't audit is a marketing number, not a result. So here is ours, with the losses attached.

Our model's favourite came through in 63 of 76 decisive World Cup 2026 matches. 82.9%. In the knockout rounds, its favourite advanced in 20 of 24 ties.

The full graded record is public at onsidearena.com/model-record, the raw data is free to reuse under CC BY 4.0 at onsidearena.com/data, and the method is written up at onsidearena.com/methodology.


How it was graded

A scorecard is worthless if you get to pick the rules after seeing the results, so these were fixed in advance:

  1. The question is binary and boring. Did the model's favourite win the match (group stage) or advance (knockouts)? Not "were we directionally interesting." Did the pick come through, yes or no.
  2. Group-stage draws are excluded from the denominator. A draw isn't a win for our pick, but it isn't a defeat of it either, and quietly counting draws as hits is the oldest trick in this genre. 76 is the count of decisive matches.
  3. Knockout ties are graded on advancement, including extra time and penalties. If our pick went out on penalties, that's a loss. No asterisks.
  4. Every miss is listed. Not summarised, not aggregated into a percentage. Named.

The 13 misses

Round Result Our pick
Group Ghana 1-0 Panama Panama
Group South Africa 1-0 South Korea South Korea
Group Australia 2-0 Turkiye Turkiye
Group Ivory Coast 1-0 Ecuador Ecuador
Group Turkiye 0-1 Paraguay Turkiye
Group Norway 3-2 Senegal Senegal
Group Bosnia & Herzegovina 3-1 Qatar Qatar
Group Ecuador 2-1 Germany Germany
Group Turkiye 3-2 United States United States
R32 Germany 1-1 (pens 3-4) Paraguay Germany
R32 Netherlands 1-1 (pens 2-3) Morocco Netherlands
R16 Colombia 0-0 (pens 3-4) Switzerland Colombia
R16 Brazil 0-2 Norway Brazil

Three of those are penalty shootouts, which are close to coin flips and which no model should claim to predict. The rest are straightforward: we called it, and it didn't happen.


What the knockouts looked like

The model held up better once the tournament narrowed: 20 of 24 ties. It called Morocco over Canada, Spain over Portugal, Argentina over Egypt, and England over Mexico. Two of its four knockout losses went to penalties.

That pattern is what you'd hope for. Knockout ties concentrate quality gaps that group-stage football tends to blur, and a model built on team strength should do relatively better there. It did.


Why publish the losses

Two reasons, and only one of them is high-minded.

The high-minded one: a prediction you can't check isn't a prediction, it's content. The category is full of "AI football tips" that never publish a scorecard, because a scorecard can be checked and content cannot. If the number is going to mean anything, it has to be falsifiable.

The self-interested one: it's the one claim a competitor can't match by writing better marketing copy. Anyone can say "83% accurate." Almost nobody will publish the thirteen matches behind the other 17%, because it's uncomfortable. That discomfort is the moat.


The data

Free to download, cite and reuse under CC BY 4.0:

If you're building something similar, take it. If you find an error in the grading, I'd rather hear it than not.

The same engine now points at Fantasy Premier League, currently at 0.86 mean absolute error across 51,518 out-of-sample predictions. The 2026/27 season starts 21 August, and the record gets published the same way: every gameweek, wins and losses, in public.

Top comments (0)