Pre-tournament · Full transparency
Road to the World Cup
The warm-ups and run-in for all 48 teams — and, on every game, what our model predicted before kickoff (computed from ratings as they stood before the match — no hindsight). We show the misses too: this is the model's honest track record walking into the tournament, not a highlight reel.
These are all warm-up friendlies — rotated XIs, experiments, little at stake — so even a sharp model is often wrong, and the market itself moves little on them. That's exactly why the model counts them at half weight. Read the hit rate as honesty, not a promise. How ratings work →
The tournament so far
67/104 model calls correct · 64%The real thing — actual World Cup 2026 results, kept separate from the warm-up run-in below. Each carries the model's pre-kickoff call, scored the same honest way.
| Date | Match | Result | Model's pre-match call |
|---|---|---|---|
| 19 Jul | | 1–0 | ✓ Spain 44% |
| 18 Jul | | 4–6 | ✗ France 32% |
| 15 Jul | | 1–2 | ✓ Argentina 39% |
| 14 Jul | | 0–2 | ✗ France 33% |
| 11 Jul | | 3–1 | ✓ Argentina 53% |
| 11 Jul | | 1–2 | ✓ England 46% |
| 10 Jul | | 2–1 | ✓ Spain 52% |
| 9 Jul | | 2–0 | ✓ France 55% |
| 7 Jul | | 0–0 | ✗ Colombia 31% |
| 7 Jul | | 3–2 | ✓ Argentina 73% |
| 6 Jul | | 1–4 | ✗ USA 31% |
| 6 Jul | | 0–1 | ✓ Spain 53% |
| 5 Jul | | 1–2 | ✗ Brazil 25% |
| 5 Jul | | 2–3 | ✗ Mexico 31% |
| 4 Jul | | 0–1 | ✓ France 77% |
| 4 Jul | | 0–3 | ✓ Morocco 61% |
| 3 Jul | | 1–0 | ✓ Colombia 76% |
| 3 Jul | | 3–2 | ✓ Argentina 88% |
| 3 Jul | | 1–1 | ✗ Australia 30% |
| 2 Jul | | 2–0 | ✓ Switzerland 52% |
| 2 Jul | | 2–1 | ✓ Portugal 48% |
| 2 Jul | | 3–0 | ✓ Spain 72% |
| 1 Jul | | 3–2 | ✓ Belgium 42% |
| 1 Jul | | 2–1 | ✓ England 67% |
| 1 Jul | | 2–0 | ✓ USA 71% |
| 30 Jun | | 2–0 | ✓ Mexico 51% |
| 30 Jun | | 3–0 | ✓ France 82% |
| 30 Jun | | 1–2 | ✓ Norway 47% |
| 29 Jun | | 1–1 | ✗ Netherlands 30% |
| 29 Jun | | 1–1 | ✗ Germany 29% |
| 29 Jun | | 2–1 | ✓ Brazil 51% |
| 28 Jun | | 0–1 | ✓ Canada 46% |
| 27 Jun | | 0–0 | ✗ Colombia 30% |
| 27 Jun | | 3–3 | ✗ Austria 30% |
| 27 Jun | | 1–3 | ✓ Argentina 90% |
| 27 Jun | | 3–1 | ✓ DR Congo 44% |
| 27 Jun | | 0–2 | ✓ England 82% |
| 27 Jun | | 2–1 | ✓ Croatia 56% |
| 26 Jun | | 5–0 | ✓ Senegal 53% |
| 26 Jun | | 1–4 | ✓ France 44% |
| 26 Jun | | 0–1 | ✓ Spain 76% |
| 26 Jun | | 0–0 | ✗ Cape Verde 30% |
| 26 Jun | | 1–5 | ✓ Belgium 69% |
| 26 Jun | | 1–1 | ✗ Egypt 30% |
| 25 Jun | | 0–2 | ✓ Ivory Coast 70% |
| 25 Jun | | 2–3 | ✗ USA 9% |
| 25 Jun | | 0–0 | ✗ Australia 30% |
| 25 Jun | | 1–1 | ✗ Japan 24% |
| 25 Jun | | 2–1 | ✗ Germany 20% |
| 25 Jun | | 1–3 | ✓ Netherlands 87% |
| 24 Jun | | 4–2 | ✓ Morocco 81% |
| 24 Jun | | 1–0 | ✗ South Korea 14% |
| 24 Jun | | 3–0 | ✓ Mexico 78% |
| 24 Jun | | 0–3 | ✓ Brazil 60% |
| 24 Jun | | 1–2 | ✓ Switzerland 39% |
| 24 Jun | | 3–1 | ✓ Bosnia & Herzegovina 58% |
| 23 Jun | | 0–1 | ✓ Croatia 57% |
| 23 Jun | | 0–0 | ✗ England 13% |
| 23 Jun | | 1–0 | ✓ Colombia 67% |
| 23 Jun | | 5–0 | ✓ Portugal 64% |
| 22 Jun | | 2–0 | ✓ Argentina 65% |
| 22 Jun | | 3–2 | ✓ Norway 64% |
| 22 Jun | | 3–0 | ✓ France 86% |
| 22 Jun | | 1–2 | ✓ Algeria 52% |
| 21 Jun | | 2–2 | ✗ Uruguay 24% |
| 21 Jun | | 4–0 | ✓ Spain 89% |
| 21 Jun | | 1–3 | ✓ Egypt 57% |
| 21 Jun | | 0–0 | ✗ Belgium 28% |
| 20 Jun | | 0–0 | ✗ Ecuador 15% |
| 20 Jun | | 2–1 | ✓ Germany 45% |
| 20 Jun | | 5–1 | ✓ Netherlands 49% |
| 20 Jun | | 0–4 | ✓ Japan 79% |
| 19 Jun | | 2–0 | ✓ USA 36% |
| 19 Jun | | 3–0 | ✓ Brazil 79% |
| 19 Jun | | 0–1 | ✓ Morocco 51% |
| 19 Jun | | 0–1 | ✗ Turkey 25% |
| 18 Jun | | 6–0 | ✓ Canada 83% |
| 18 Jun | | 4–1 | ✓ Switzerland 61% |
| 18 Jun | | 1–0 | ✓ Mexico 58% |
| 18 Jun | | 1–1 | ✗ Czech Republic 27% |
| 17 Jun | | 1–3 | ✓ Colombia 66% |
| 17 Jun | | 1–1 | ✗ Portugal 21% |
| 17 Jun | | 1–0 | ✗ Panama 17% |
| 17 Jun | | 4–2 | ✓ England 57% |
| 16 Jun | | 3–1 | ✓ Austria 48% |
| 16 Jun | | 3–0 | ✓ Argentina 68% |
| 16 Jun | | 1–4 | ✓ Norway 76% |
| 16 Jun | | 3–1 | ✓ France 68% |
| 15 Jun | | 1–1 | ✗ Belgium 27% |
| 15 Jun | | 2–2 | ✗ Iran 24% |
| 15 Jun | | 1–1 | ✗ Uruguay 21% |
| 15 Jun | | 0–0 | ✗ Spain 6% |
| 14 Jun | | 5–1 | ✓ Sweden 47% |
| 14 Jun | | 2–2 | ✗ Netherlands 31% |
| 14 Jun | | 1–0 | ✗ Ecuador 16% |
| 14 Jun | | 7–1 | ✓ Germany 83% |
| 13 Jun | | 2–0 | ✗ Turkey 20% |
| 13 Jun | | 0–1 | ✓ Scotland 58% |
| 13 Jun | | 1–1 | ✗ Brazil 30% |
| 13 Jun | | 1–1 | ✗ Switzerland 10% |
| 12 Jun | | 4–1 | ✗ Paraguay 31% |
| 12 Jun | | 1–1 | ✗ Canada 20% |
| 11 Jun | | 2–1 | ✓ South Korea 37% |
| 11 Jun | | 2–0 | ✓ Mexico 85% |
Live match-by-match calibration is tracked on the calibration page →
Tonight's warm-ups
live & upcomingLive scores fetched in your browser from ESPN; finished games also flow into the permanent record below.
Every call on the run-in
since 1 May| Date | Match | Result | Model's pre-match call |
|---|---|---|---|
| 10 Jun | | 3–0 | ✓ England 83% |
| 10 Jun | B Bolivia v | 0–4 | ✓ Algeria 55% |
| 10 Jun | | 2–1 | ✓ Portugal 59% |
| 9 Jun | | 3–0 | ✓ Argentina 89% |
| 9 Jun | | 1–2 | ✗ DR Congo 33% |
| 9 Jun | | 0–0 | ✗ Senegal 23% |
| 9 Jun | | 0–2 | ✓ Venezuela 43% |
| 8 Jun | | 2–1 | ✓ Netherlands 57% |
| 8 Jun | | 3–1 | ✓ France 90% |
| 8 Jun | P Peru v | 1–3 | ✓ Spain 88% |
| 7 Jun | | 2–1 | ✓ Croatia 72% |
| 7 Jun | | 3–0 | ✓ Ecuador 81% |
| 7 Jun | | 1–1 | ✗ Norway 30% |
| 7 Jun | | 0–2 | ✓ Colombia 66% |
| 6 Jun | | 1–1 | ✗ Switzerland 28% |
| 6 Jun | | 4–0 | ✓ Curaçao 87% |
| 6 Jun | | 2–1 | ✓ Brazil 60% |
| 6 Jun | B Bolivia v | 0–4 | ✓ Scotland 48% |
| 6 Jun | B Bermuda v | 3–0 | ✗ Cape Verde 3% |
| 6 Jun | | 5–0 | ✓ Belgium 77% |
| 6 Jun | | 2–0 | ✓ Argentina 86% |
| 6 Jun | | 1–0 | ✓ England 85% |
| 6 Jun | V Venezuela v | 1–2 | ✓ Turkey 64% |
| 6 Jun | J Jamaica v | 0–1 | ✗ Jamaica 34% |
| 6 Jun | | 1–2 | ✓ Germany 45% |
| 6 Jun | | 0–0 | ✗ Qatar 30% |
| 6 Jun | | 2–1 | ✓ Portugal 76% |
| 6 Jun | | 1–1 | ✗ Panama 27% |
| 5 Jun | | 1–2 | ✓ Peru 39% |
| 5 Jun | | 1–1 | ✗ Canada 25% |
| 5 Jun | | 4–0 | ✓ Paraguay 92% |
| 5 Jun | PR Puerto Rico v | 0–3 | ✓ Saudi Arabia 74% |
| 4 Jun | G Guatemala v | 1–5 | ✓ Czech Republic 54% |
| 4 Jun | | 1–2 | ✗ France 3% |
| 4 Jun | | 2–0 | ✓ Iran 56% |
| 4 Jun | | 5–1 | ✓ Mexico 71% |
| 4 Jun | | 2–2 | ✗ Sweden 29% |
| 4 Jun | | 1–1 | ✗ Spain 5% |
| 3 Jun | | 1–0 | ✓ South Korea 78% |
| 3 Jun | | 0–0 | ✗ Denmark 27% |
| 3 Jun | | 0–1 | ✗ Netherlands 11% |
| 3 Jun | | 4–2 | ✓ Panama 87% |
| 2 Jun | W Wales v | 1–1 | ✗ Wales 24% |
| 2 Jun | | 4–0 | ✓ Morocco 93% |
| 2 Jun | | 4–0 | ✗ New Zealand 29% |
| 2 Jun | | 0–2 | ✗ Croatia 20% |
| 1 Jun | | 3–1 | ✓ Colombia 84% |
| 1 Jun | | 1–0 | ✓ Austria 67% |
| 1 Jun | | 2–0 | ✓ Canada 55% |
| 1 Jun | | 3–1 | ✓ Norway 75% |
| 1 Jun | | 4–0 | ✓ Turkey 86% |
| 31 May | | 3–0 | ✗ Serbia 18% |
| 31 May | | 2–1 | ✗ Kosovo 34% |
| 31 May | | 4–0 | ✓ Germany 87% |
| 31 May | | 6–2 | ✓ Brazil 71% |
| 31 May | | 4–1 | ✓ Switzerland 69% |
| 31 May | | 3–2 | ✓ USA 36% |
| 31 May | | 1–0 | ✓ Japan 84% |
| 30 May | | 4–1 | ✓ Scotland 77% |
| 30 May | | 1–0 | ✓ Mexico 43% |
| 30 May | | 5–0 | ✓ South Korea 75% |
| 30 May | | 2–1 | ✓ Ecuador 80% |
| 29 May | | 0–0 | ✗ South Africa 22% |
| 29 May | | 3–1 | ✓ Iran 71% |
| 29 May | | 0–0 | ✗ Bosnia & Herzegovina 28% |
| 29 May | A Andorra v | 0–1 | ✓ Iraq 90% |
| 28 May | | 1–0 | ✓ Egypt 47% |
| 28 May | ROI Republic of Ireland v | 1–0 | ✓ Republic of Ireland 80% |
| 26 May | | 5–0 | ✓ Morocco 97% |
| 22 May | | 2–0 | ✓ Mexico 83% |
✓/✗ is whether the model's most-likely pre-match outcome matched the result; the % is the probability it gave the actual result (so a confident miss reads low). Pure transparency — no cherry-picking.
How every team is arriving
last 5, in form first| Team | Form | Model record | Last result |
|---|---|---|---|
| | WWWWW | 5/6 | W v Argentina 1–0 |
| | WWWWL | 6/6 | L @ Spain 0–1 |
| | WWWWL | 5/6 | L v England 2–3 |
| | WWWLW | 4/6 | W @ France 6–4 |
| | WWDWD | 4/6 | D @ Switzerland 0–0 |
| | WDWWD | 3/6 | D v Morocco 1–1 |
| | WWWLD | 4/6 | D v Paraguay 1–1 |
| | WWWDL | 4/6 | L @ Argentina 1–3 |
| | DWWWL | 4/6 | L v Norway 1–2 |
| | WWDWL | 4/6 | L @ France 0–2 |
| | DWWWL | 3/6 | L @ Spain 1–2 |
| | WLWWL | 5/6 | L @ Portugal 1–2 |
| | WLWWL | 5/6 | L v England 1–2 |
| | WWWLL | 5/6 | L v Brazil 0–3 |
| | WWWLL | 5/6 | L @ South Africa 0–1 |
| | WWWLL | 4/6 | L v England 4–6 |
| | WWLWL | 3/6 | L v Norway 1–2 |
| | WWDDD | 3/6 | D @ Egypt 1–1 |
| | WWLWL | 3/6 | L v Belgium 1–4 |
| | WWLLW | 2/6 | W @ USA 3–2 |
| | DWDWL | 4/6 | L v Spain 0–1 |
| | WDWDL | 3/6 | L @ Brazil 1–2 |
| | WWLDL | 5/6 | L @ Spain 0–3 |
| | WLWDL | 4/6 | L @ Switzerland 0–2 |
| | DWLWL | 4/6 | L v Morocco 0–3 |
| | WWLDL | 3/6 | L @ Mexico 0–3 |
| | WLDWL | 3/6 | L @ Mexico 0–2 |
| | WLDWL | 2/6 | L v Canada 0–1 |
| | DWDDL | 3/6 | L @ Argentina 2–3 |
| | WDDLD | 3/6 | D @ Cape Verde 0–0 |
| | DWLDD | 2/6 | D v Egypt 1–1 |
| | DWLDL | 4/6 | L @ France 0–3 |
| | DDLWL | 3/6 | L @ USA 0–2 |
| | DWDLL | 3/6 | L @ Colombia 0–1 |
| | LWDDL | 2/6 | L v France 0–1 |
| | DLLWL | 5/6 | L @ Belgium 2–3 |
| | LWLDL | 5/6 | L v Ivory Coast 0–2 |
| | WDLLL | 4/6 | L v England 0–2 |
| | LDLWL | 3/6 | L @ England 1–2 |
| | DDDDL | 1/6 | L v Spain 0–1 |
| | WLLLL | 4/6 | L @ Morocco 2–4 |
| | LDDDL | 1/6 | L @ Argentina 2–3 |
| | LDDLL | 4/6 | L @ Bosnia & Herzegovina 1–3 |
| | DLLLL | 5/6 | L @ Senegal 0–5 |
| | LLDLL | 3/6 | L v Belgium 1–5 |
| | LLLLL | 5/6 | L v Netherlands 1–3 |
| | LLLLL | 5/6 | L v Argentina 1–3 |
| | LLLLL | 5/6 | L @ DR Congo 1–3 |