World Cup 2026 β€” Validation

Every played match: our pre-match forecast vs. what actually happened. The receipts. 🧾

58.3%
Outcome accuracy
56 / 96 results called
Market 69.8%
6.2%
Exact scoreline
6 / 96 spot‑on
0.191
Avg. RPS (lower better)
coin‑flip baseline 0.243
Market 0.152
21.5%
Skill vs. coin‑flip
RPS improvement over uniform

Market = de-vigged bookmaker consensus over 96 matches with odds. SFMMO trails the closing market by 25.7% on RPS.

Wait β€” how can 58.3% accuracy still beat a coin-flip on RPS?

Because accuracy and RPS measure different things, on different scales β€” they're not in competition.

  • Accuracy only asks: was our single top pick right? It's blind to the probabilities, and a model almost never makes draw its top pick β€” so a draw-heavy round drags it down even when the forecast was good.
  • RPS grades the whole probability spread (e.g. 55 / 25 / 20) against a uniform β€œcoin-flip” (33 / 33 / 33). The coin-flip never commits, so it's never punished hard β€” which makes it a surprisingly tough baseline, and means a few % of skill is a genuine edge.

Our committed forecast cuts both ways (lower RPS = better):

MatchOur forecastResultOur RPSCoin-flip RPS
Favourite delivers55 / 25 / 20home win0.12 βœ“0.28
We back home, it's a draw55 / 25 / 20draw0.170.11 βœ“

When a favourite wins we crush the baseline; on a draw, the hedging coin-flip actually beats us. Matchday 1 had 9 draws in 24 games, so the wins and losses partly cancel β€” the net edge is the β€œskill” figure above. A few % over uniform is roughly what bookmakers manage, so it's a real, healthy edge.

Knockout rounds can't end level β€” scores include extra time and penalty shootouts (a 3–4 may be a shootout result), and each match is graded on that final outcome.

Matchday 1
Match Forecast (1 / X / 2) Our call Predicted Actual
52.0 / 27.0 / 21.0 Mexico 1–0 2–0
35.7 / 27.9 / 36.4 Czechia 1–1 2–1
35.2 / 24.5 / 40.3 Bosnia & Herzegovina 1–1 1–1
31.7 / 29.2 / 39.0 Paraguay 0–1 4–1
12.9 / 18.6 / 68.5 Switzerland 0–2 1–1
38.6 / 24.7 / 36.6 Netherlands 1–1 2–2
45.1 / 28.7 / 26.2 Brazil 1–0 1–1
25.1 / 25.5 / 49.4 Scotland 0–1 0–1
37.8 / 23.2 / 38.9 TΓΌrkiye 1–1 2–0
65.0 / 19.7 / 15.3 Germany 2–0 7–1
18.6 / 25.4 / 56.1 Ecuador 0–1 1–0
48.2 / 26.2 / 25.7 Sweden 1–0 5–1
79.9 / 12.4 / 7.2 Spain 2–0 0–0
88.2 / 6.9 / 2.9 Belgium 3–0 1–1
22.8 / 27.0 / 50.2 Uruguay 0–1 1–1
53.9 / 27.7 / 18.4 Iran 1–0 2–2
70.1 / 19.0 / 10.9 France 2–0 3–1
26.2 / 26.8 / 46.9 Norway 0–1 1–4
74.4 / 15.0 / 10.3 Argentina 2–0 3–0
48.3 / 22.5 / 29.2 Austria 1–1 3–1
72.2 / 15.8 / 11.7 Portugal 2–0 1–1
35.2 / 27.5 / 37.3 Croatia 1–1 4–2
39.0 / 27.8 / 33.2 Ghana 1–1 1–0
28.1 / 26.1 / 45.7 Colombia 1–1 1–3
Matchday 2
Match Forecast (1 / X / 2) Our call Predicted Actual
59.3 / 21.1 / 19.6 Czechia 1–0 1–1
57.6 / 20.3 / 22.0 Switzerland 2–1 4–1
48.0 / 24.0 / 28.0 Canada 1–1 6–0
36.4 / 31.0 / 32.5 Mexico 0–0 1–0
29.3 / 26.4 / 44.2 Australia 1–1 2–0
85.3 / 9.5 / 4.1 Germany 3–0 2–1
19.6 / 23.8 / 56.6 Morocco 0–1 0–1
72.1 / 17.2 / 10.5 Brazil 2–0 3–0
49.6 / 23.0 / 27.4 TΓΌrkiye 1–1 0–1
48.5 / 22.4 / 29.0 Netherlands 1–1 5–1
52.4 / 25.1 / 22.4 Ecuador 1–0 0–0
15.4 / 23.3 / 61.3 Japan 0–1 0–4
64.1 / 19.9 / 15.9 Spain 2–0 4–0
64.7 / 22.0 / 13.3 Belgium 1–0 0–0
69.6 / 17.5 / 12.8 Uruguay 2–0 2–2
42.6 / 24.1 / 33.2 New Zealand 1–1 1–3
64.3 / 20.1 / 15.6 Argentina 2–0 2–0
69.3 / 20.4 / 10.2 France 1–0 3–0
43.8 / 24.6 / 31.5 Norway 1–1 3–2
42.4 / 20.4 / 37.1 Jordan 1–1 1–2
68.6 / 17.4 / 13.9 Portugal 2–0 5–0
73.0 / 16.8 / 10.0 England 2–0 0–0
10.8 / 18.3 / 70.9 Croatia 0–2 0–1
45.8 / 24.3 / 29.9 Colombia 1–1 1–0
Matchday 3
Match Forecast (1 / X / 2) Our call Predicted Actual
48.7 / 26.3 / 24.9 Switzerland 1–0 2–1
58.7 / 19.8 / 21.5 Bosnia & Herzegovina 2–1 3–1
16.5 / 21.8 / 61.7 Brazil 0–1 0–3
57.8 / 23.7 / 18.5 Morocco 1–0 4–2
44.8 / 28.4 / 26.8 Czechia 1–0 0–3
24.1 / 24.4 / 51.5 South Korea 0–1 1–0
21.8 / 24.1 / 54.1 Germany 0–1 2–1
51.6 / 24.2 / 24.2 CuraΓ§ao 1–0 0–2
47.8 / 26.8 / 25.4 Japan 1–0 1–1
56.2 / 21.0 / 22.7 TΓΌrkiye 1–1 3–2
27.6 / 27.1 / 45.4 Australia 0–1 0–0
14.5 / 20.7 / 64.8 France 0–1 1–4
42.0 / 29.1 / 28.8 Senegal 1–0 5–0
13.5 / 18.4 / 68.0 Netherlands 0–2 1–3
26.9 / 23.5 / 49.6 Spain 1–1 0–1
25.9 / 25.8 / 48.3 Saudi Arabia 0–1 0–0
4.8 / 11.0 / 83.5 Belgium 0–2 1–5
13.2 / 20.0 / 66.8 Iran 0–1 1–1
13.4 / 21.2 / 65.5 England 0–1 0–2
71.7 / 16.8 / 11.3 Croatia 2–0 2–1
15.2 / 18.7 / 66.0 Portugal 0–2 0–0
42.0 / 25.0 / 33.1 DR Congo 1–1 3–1
15.9 / 20.3 / 63.7 Argentina 0–1 1–3
25.9 / 19.4 / 54.5 Austria 1–2 3–3
Round of 32
Match Forecast (1 / X / 2) Our call Predicted Actual
21.1 / 23.4 / 55.5 Canada 0–1 0–1
46.7 / 27.5 / 25.9 Brazil 1–0 2–1
70.6 / 18.4 / 11.0 Germany 2–0 3–4
37.4 / 25.7 / 36.9 Netherlands 1–1 2–3
23.9 / 23.9 / 52.3 Norway 1–1 1–2
58.7 / 23.8 / 17.5 France 1–0 3–0
25.3 / 30.6 / 44.1 Ecuador 0–1 2–0
68.2 / 18.8 / 12.9 England 2–0 2–1
71.7 / 17.8 / 10.4 Belgium 2–0 3–2
31.6 / 24.5 / 44.0 Bosnia & Herzegovina 1–1 2–0
64.5 / 18.4 / 17.0 Spain 2–1 3–0
43.2 / 23.9 / 32.9 Portugal 1–1 2–1
65.7 / 18.1 / 16.1 Switzerland 2–1 2–0
64.3 / 19.0 / 16.6 Australia 2–1 2–4
67.7 / 19.2 / 13.0 Argentina 2–0 3–2
46.7 / 24.3 / 29.0 Colombia 1–1 1–0
Round of 16
Match Forecast (1 / X / 2) Our call Predicted Actual
29.6 / 29.2 / 41.2 Morocco 0–1 0–3
11.5 / 21.9 / 66.6 France 0–1 0–1
64.0 / 20.8 / 15.1 Brazil 1–0 1–2
16.7 / 26.7 / 56.6 England 0–1 2–3
40.5 / 22.5 / 37.0 Portugal 1–1 0–1
7.9 / 16.0 / 76.0 Belgium 0–2 1–4
73.4 / 16.7 / 9.8 Argentina 2–0 3–2
45.0 / 25.9 / 29.2 Switzerland 1–1 4–3

✓ = our most-likely result was correct  Β·  ⚛ = exact scoreline nailed  Β·  multiclass Brier score 0.553. Click any match for its full forecast breakdown.