Who wins the 2026 World Cup? Probably Spain.

Elo, part 2c: ten million simulations, 48 teams, three host nations

FIFA is a mafia. Now let’s watch football.

Let’s not beat about the bush: FIFA is a mafia, their Peace Prize a disgrace and a host country so hostile towards the expected guests from all over the world not worthy of that honour. But as soon as the whistle sounds later today and the first ball is kicked, none of this matters anymore and football (or soccer in freedom units) rules everything. ⚽️

So, to celebrate my love–hate relationship with the biggest sporting event on the globe, I thought I’d treat it to the same Elo magic I applied unsuccessfully to Snooker (twice) in an attempt to predict who will be 🇦🇷 Argentina’s successor and lift the golden trophy on July 19. 🥇

This is going to be bigger in every dimension though. Snooker’s World Championship is a clean 32-player bracket in a single venue in Sheffield. The 2026 World Cup is the first 48-team edition, played across three host nations 🇺🇸🇨🇦🇲🇽, with twelve groups, an entirely new Round of 32 and a third-place qualification rule that is genuinely fiddly to write down. The Elo ratings on their own won’t be enough this time; we’ll have to wrap them in a goal-scoring model and a fairly serious bit of bracket bookkeeping before any of it answers the actual question.

The short version: the model thinks 🇪🇸 Spain are huge, the bookmakers think they are merely good and the gap between those two opinions is the most interesting number in this article. The long version is what follows. 🤓

The new format in one minute: more matches, more money 💸

Some of this still feels like it shouldn’t be allowed. The 2026 tournament is the first since 1998 to change in size — from 32 teams to 48 — and the first ever co-hosted by three nations: the 🇺🇸 United States, 🇨🇦 Canada and 🇲🇽 Mexico. The new layout is:

  • 12 groups of 4 teams, named A through L, each playing 3 matches — 72 group fixtures in total.
  • The top two from every group automatically qualify for a brand-new Round of 32.
  • The 8 best third-placed teams (across the 12 groups) also advance.
  • From there it’s a familiar single-elimination knockout: R32 → R16 → QF → SF → final. 31 knockout matches (plus the bronze match 🥉).

The “8 best of 12 thirds” rule is the one that quietly bends the bracket. Which third-placed teams qualify depends on the points totals from twelve different groups, and once they qualify, where they slot into the R32 depends on which set of group letters they came from. FIFA publishes a 495-row lookup table to nail this down — one row for every distinct subset of 8 groups out of 121 — and the simulator dutifully uses it. Lincoln got through Gettysburg in 272 words. FIFA needs 495 lookup rows to decide where the third-place teams go. The upshot is that the knockout bracket isn’t perfectly symmetric: two teams with similar Elo can end up with quite different draws depending on which third-placed peers turn up beside them.

Host advantage is the other format quirk worth flagging. There are three home countries, but they don’t host the entire tournament evenly: each plays its own group-stage matches at home and then ventures into a neighbour’s stadiums in the knockouts. The model applies a +100 Elo bonus only when a host plays in its own country, so 🇲🇽 Mexico’s home boost vanishes the moment they step onto a 🇺🇸 US pitch.

Building the model: from ratings to extra time

To recap our usual setup in one paragraph: each team has an Elo rating \(r\), and the expected score for team A against team B is

\[ p_A = \frac{1}{1 + 10^{-(r_A - r_B) / 400}}. \]

For the snooker articles, that number is the prediction — you toss a weighted coin and somebody advances. Football is messier: you need an actual scoreline, and a 90-minute draw is a real outcome (in the group stage) or a problem to resolve (in the knockouts).

From expected score to scorelines

I’ve gone with a deliberately simple fixed-total Poisson model. The two teams’ goals are independent Poisson random variables with rates \(\lambda_A\) and \(\lambda_B\), and those rates are chosen so that

\[ \lambda_A + \lambda_B = 2.6 \quad\text{and}\quad \Pr(A\text{ wins}) + \tfrac{1}{2}\Pr(\text{draw}) = p_A. \]

The first constraint pins the expected total goals to 2.6 — pretty close to the historical average for top-level international matches. The second says the lambdas have to be consistent with the Elo expected score. Each fixture turns into a small one-dimensional root-find for the right \(\lambda_A\), which scipy.brentq does in microseconds and the simulator caches by rounded Elo gap.2

One sharp edge: if the Elo gap gets large enough, the system has no valid solution with both lambdas above zero. 🇪🇸 Spain vs 🇨🇻 Cape Verde is exactly that fixture — 🇪🇸 Spain’s Elo is 579 points higher, which says 🇪🇸 Spain should expect roughly \(2.6\) goals while 🇨🇻 Cape Verde scores essentially none. The model would otherwise predict a literal “🇨🇻 Cape Verde cannot score” Poisson, which is both wrong (every team has some chance) and degenerate (the truncated grid stops being a proper distribution).

The fix is to pin 🇨🇻 Cape Verde’s \(\lambda\) at a floor of 0.25, let 🇪🇸 Spain’s rise above the 2.35 the budget would otherwise allow and renormalise the truncated joint Poisson grid afterwards. The 🇪🇸 Spain vs 🇨🇻 Cape Verde fixture ends up at \(\lambda_{\text{ES}} = 3.50\), \(\lambda_{\text{CV}} = 0.25\) and the model’s most likely scorelines are 3–0 (16.8%), 4–0 (14.7%), 2–0 (14.4%), 5–0 (10.3%) and 1–0 (8.2%). 🇪🇸 Spain are 94.1% to win the match, 🇨🇻 Cape Verde 1.0%.

Group stage, tie-breaks and the third-place puzzle

Inside each simulation, all 72 group fixtures are sampled in one vectorised numpy call, then the four teams in each group are ranked using FIFA’s tie-break ladder, which is exactly as fiddly as you’d expect from the same people who wrote the 495-row lookup: points, overall goal difference, overall goals scored, then on the tied subset head-to-head points and goal difference and goals scored and finally a fallback on FIFA rank (the published November-2025 list).3

Once every group is ranked, the simulator picks the 8 best third-placed teams across all 12 groups and slots them into the Round of 32 via the 495-row lookup table. This is one of the places where football carries more bookkeeping than snooker: there’s no “pull names out of a hat” step, just a deterministic rule with a lot of cases.

Knockouts and extra time

Knockout matches use the same Poisson scoreline model for 90 minutes. If they end level, the simulator advances a team by sampling from the same Elo expected score \(p_A\) — no separate extra-time goal process, no penalty shootout sub-model. It’s a deliberately Elo-consistent choice: extra time and penalties are exactly the regime where the model would have to invent extra structure it doesn’t have, so I let the rating do the talking.

That, plus a host bonus of +100 Elo whenever a host plays in its own country, is the whole machinery. The Monte Carlo loop runs 10,000,000 tournaments with a fixed seed (20260611, which is the tournament’s opening date, because I am like that) so every published number is exactly reproducible. A single laptop chews through it in about ten minutes.

Who’s on top? Current Elo and the draw

Here is the snapshot we’re starting from. All Elo ratings are from eloratings.net on 2026-06-10 — one day before the opener.4

RankTeamGroupEloFIFA rank
1🇪🇸 SpainH21571
2🇦🇷 ArgentinaJ21152
3🇫🇷 FranceI20633
4🏴󠁧󠁢󠁥󠁮󠁧󠁿 EnglandL20214
5🇧🇷 BrazilC19915
6🇵🇹 PortugalK19866
7🇨🇴 ColombiaK198213
8🇳🇱 NetherlandsF19487
9🇪🇨 EcuadorE193823
10🇩🇪 GermanyE19329

A few things to notice before any tournament is simulated:

  • 🇪🇸 Spain and 🇦🇷 Argentina are tier-one. The 52-point drop from 🇦🇷 Argentina to 🇫🇷 France is the biggest gap anywhere in the top seven, after which 🇫🇷 France, 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England, 🇧🇷 Brazil, 🇵🇹 Portugal and 🇨🇴 Colombia all sit within 80 points of each other. The model treats this as two world-class sides plus a tight chasing pack.
  • Group K is brutal. 🇵🇹 Portugal and 🇨🇴 Colombia, sixth and seventh by Elo, drew each other; the loser of their coin flip takes the harder R16 draw.
  • Group E is also unfortunate. 🇪🇨 Ecuador (9th by Elo) and 🇩🇪 Germany (10th) are sharing four-team housing with 🇨🇮 Ivory Coast and 🇨🇼 Curaçao. The model thinks 🇪🇨 Ecuador and 🇩🇪 Germany both qualify comfortably but won’t run away with anything.
  • Group H, by contrast, is a 🇪🇸 Spain coronation. With 🇺🇾 Uruguay, 🇨🇻 Cape Verde and 🇸🇦 Saudi Arabia for company, 🇪🇸 Spain are 88.0% to win the group and 99.9% to qualify.
  • 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England picked up arguably the kindest top-half group of the lot: Group L with 🇭🇷 Croatia, 🇵🇦 Panama and 🇬🇭 Ghana. 99.2% qualify, 67.1% to win the group.

The full picture of group qualification looks like this:

Heatmap of group-qualification probabilities for all 48 teams, arranged by group

Most groups have a familiar shape — two strong teams comfortably through, two weak ones mostly out. Group B stands out for being a coin-flip: 🇨🇭 Switzerland (98.6% to qualify) and 🇨🇦 Canada (98.5%) are essentially indistinguishable, with 🇨🇦 Canada’s home boost wiping out a 100-point Elo deficit. Group D is the closest thing to chaos: 🇹🇷 Turkey, 🇵🇾 Paraguay, the 🇺🇸 United States and 🇦🇺 Australia are all between 52% and 87% to qualify, with 🇺🇸 USA’s host bonus pulling them above where their raw Elo would put them.5

Ten million tournaments later

Now we let the bracket actually play. Here are the top fifteen teams by simulated title probability — the headline answer to “who wins the World Cup?”:

Horizontal bar chart of the top 15 teams by simulated title probability, led by 🇪🇸 Spain at 35.3%

And the same fifteen in numbers, with the implied decimal odds alongside:

RankTeamTitle probabilityImplied odds
1🇪🇸 Spain35.3%2.83
2🇦🇷 Argentina23.1%4.33
3🇫🇷 France12.7%7.88
4🏴󠁧󠁢󠁥󠁮󠁧󠁿 England6.0%16.59
5🇧🇷 Brazil3.8%26.00
6🇵🇹 Portugal3.5%28.24
7🇨🇴 Colombia3.3%30.35
8🇳🇱 Netherlands2.0%50.08
9🇪🇨 Ecuador1.5%65.75
10🇩🇪 Germany1.4%73.58
11🇹🇷 Turkey1.0%100.20
12🇳🇴 Norway0.9%109.05
13🇯🇵 Japan0.8%120.92
14🇭🇷 Croatia0.8%127.23
15🇧🇪 Belgium0.8%128.53

🇪🇸 Spain at 35.3% is a startling number on first read — more than a third of ten million simulated tournaments end with the trophy in Madrid. That isn’t only the Elo lead; it’s the Elo lead plus the kindest group in the bracket plus a knockout path that doesn’t run into 🇦🇷 Argentina until the final at the earliest. 🇦🇷 Argentina at 23.1% picks up the same compounding benefit one bracket-half away. Between them they account for more than half of all simulated outcomes.

The same simulation also has things to say about who got lucky in the draw. Compare each team’s Elo rank against its title-probability rank:

Scatter plot of Elo rank against simulated title probability rank, with off-diagonal teams labelled

Most teams sit on the diagonal — the draw doesn’t help or hurt them much. The visible movers, in roughly descending order of effect: 🇲🇽 Mexico jumps two spots, from 18th by Elo to 16th by title probability, on the back of the +100 host bonus and a friendly Group A. 🇹🇷 Turkey and 🇯🇵 Japan also climb thanks to favourable bracket positions. On the other side, 🇦🇹 Austria and 🇩🇿 Algeria drop three spots each by sharing a group with 🇦🇷 Argentina, and 🇭🇷 Croatia and 🇺🇾 Uruguay give back a couple of places by sharing groups with 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England and 🇪🇸 Spain respectively — the strongest teams in their halves of the bracket.

A note on the long tail. Eight of the 48 teams won zero of the ten million simulated tournaments — 🇨🇻 Cape Verde, 🇸🇦 Saudi Arabia, 🇳🇿 New Zealand, 🇭🇹 Haiti, 🇿🇦 South Africa, 🇬🇭 Ghana, 🇨🇼 Curaçao and 🇶🇦 Qatar. The model isn’t literally saying their chances are zero; it’s saying that with this Elo, this draw and a ten-million-tournament resolution, no simulation happened to produce a title run. The true probability is genuinely tiny — somewhere between “lottery ticket” and “asteroid”.

Hosts, briefly

What does the +100 host bonus actually buy you? Less than you might hope, for the 🇺🇸 United States and 🇨🇦 Canada. Both reach the knockouts comfortably (🇺🇸 USA 68.1%, 🇨🇦 Canada 98.5% to qualify), and both ride to a respectable group-winner share at home (🇺🇸 USA 20.8% in a genuinely tricky Group D, 🇨🇦 Canada a heady 47.8% in their coin-flip Group B). But their title probabilities are 0.12% and 0.10%: the boost is enough to get them into the bracket, not enough to navigate four knockout rounds against a who’s-who of European Elo. 🇲🇽 Mexico fare best of the three at 0.78%, top of Group A with 76.4% probability and a 38.5% chance of reaching the quarter-finals, but their road runs through 🇪🇸 Spain’s half. The home crowds will make for excellent television; the trophy, almost certainly, will not.

Bookies vs model: where the market disagrees

Disclaimer: This section discusses betting odds for the purpose of statistical comparison and analysis. It is not intended to promote gambling or serve as betting advice. Please gamble responsibly and be aware of your local laws and age restrictions.

I’m still not the gambling kind. But betting markets are too useful as a sanity check to ignore — when real money is on the line, the consensus probability is a serious forecast in its own right.

For this one I’ve pulled prices from Polymarket’s “World Cup Winner” market: a crypto-prediction market that runs a separate yes/no contract per team and prices each one continuously. It has the considerable advantage over traditional bookmakers of being machine-readable and only carrying about a 3% overround (compared to 5–8% at a sportsbook), so the de-vigging is quick and clean. The numbers below are from the snapshot taken at 2026-06-10 20:34 UTC.6

To turn a probability into decimal odds, take the reciprocal: a model probability of 35.3% becomes \(1/0.353 \approx 2.83\), i.e., a fair-value bet pays €2.83 per €1 staked. The same conversion applies the other way around: market odds of 6.25 imply a market probability of \(1/6.25 \approx 16.0\%\).7

Here is the comparison for the top twelve teams. “Edge (pp)” is model − market in percentage points; positive means the model thinks the team is undervalued.

TeamModelMarketEdgeModel oddsMarket odds
🇪🇸 Spain35.3%16.0%+19.3pp2.836.25
🇦🇷 Argentina23.1%8.3%+14.8pp4.3312.02
🇫🇷 France12.7%15.6%−2.9pp7.886.41
🏴󠁧󠁢󠁥󠁮󠁧󠁿 England6.0%10.6%−4.5pp16.599.47
🇧🇷 Brazil3.8%8.2%−4.4pp26.0012.17
🇵🇹 Portugal3.5%10.3%−6.7pp28.249.74
🇨🇴 Colombia3.3%1.8%+1.5pp30.3555.57
🇳🇱 Netherlands2.0%3.9%−1.9pp50.0825.38
🇪🇨 Ecuador1.5%0.8%+0.7pp65.75120.94
🇩🇪 Germany1.4%5.1%−3.7pp73.5819.58
🇹🇷 Turkey1.0%1.2%−0.2pp100.2082.24
🇳🇴 Norway0.9%2.4%−1.5pp109.0541.96

And the picture, plotted log-log so the disagreements are easier to see:

Log-log scatter of model versus Polymarket title probabilities, with the diagonal marked and the biggest disagreements labelled

The headline disagreement is enormous. The market has 🇪🇸 Spain and 🇫🇷 France as near-co-favourites at 16.0% and 15.6%, with 🇦🇷 Argentina fifth at 8.3%. The model has 🇪🇸 Spain at 35.3% and 🇦🇷 Argentina at 23.1% — both more than double what Polymarket is paying. If the model is right, those are by some distance the two best-value bets in the tournament. If the market is right, the model has badly overestimated two specific sides.

Why might the model be right? Three factors stack up the same way. 🇪🇸 Spain’s Elo is genuinely 42 points clear of 🇦🇷 Argentina and almost 100 clear of 🇫🇷 France — the rating system, integrated over years of competitive results, is not subtle about who it likes. Group H is the weakest of the twelve. And the bracket places 🇪🇸 Spain and 🇦🇷 Argentina in opposite halves, so the only way to lose to each other is in the final. Compounding advantages compound.

Why might the market be right? A few real things the Elo rating doesn’t see. 🇪🇸 Spain’s stretch of major-tournament knockouts has been more disappointing than the rating suggests. 🇦🇷 Argentina’s defence of the title comes after two quieter years of friendlies and a moderate Copa run, and the rating still reflects the 2022 peak. And — the pattern we flagged for Ronnie O’Sullivan in the snooker write-up — sometimes the market is paying for something the rating system can’t quantify: the ineffable “knows how to win a tournament” premium that betting markets price into established names. 🇫🇷 France have it. 🇧🇷 Brazil have it. 🇪🇸 Spain, despite the trophies and the rating, somehow don’t.

Lower down the table the agreements and disagreements are easier reading. 🇵🇹 Portugal at 3.5% model vs 10.3% market is the most overvalued top team by the market’s lights — a Cristiano Ronaldo lifetime-achievement premium, perhaps. 🇩🇪 Germany at 1.4% vs 5.1% reads similarly — a serial-contender premium that the rating has stopped paying out on after a moribund couple of years. On the other side, 🇨🇴 Colombia and 🇪🇨 Ecuador are the only teams besides 🇪🇸 Spain and 🇦🇷 Argentina that the model fancies more than the market does, both modestly: 🇨🇴 Colombia at +1.5pp, 🇪🇨 Ecuador at +0.7pp. The market consistently prices Conmebol’s mid-table sides shorter than the Elo says, and the model consistently looks for value there.

If you forced me to summarise the table in one sentence: the model and the market disagree most violently on the favourites, almost not at all on the long shots — and the final on July 19 will tell us which forecaster was right.

Final whistle ⚽

We’ve got 🇪🇸 Spain at 35%, 🇦🇷 Argentina at 23% and a market that thinks both are dramatically overpriced. We’ve got a 48-team bracket with twelve groups, a brand-new Round of 32, a 495-row third-place lookup and a host advantage that helps 🇲🇽 Mexico more than it helps the other two. And we’ve got one number — 🇪🇸 Spain’s +19.3pp edge over Polymarket — that is, by some margin, the strongest disagreement between a rating-driven model and a money-driven crowd I’ve ever published on this blog.

Kickoff is in a few hours; the final is on July 19. We’ll know then whether the model deserves its confidence — or whether one more season of football has done what ten million simulated tournaments couldn’t, and quietly told us the rating wasn’t quite the answer after all.

If the model holds up I’ll come back in seven weeks for a did we get it right? follow-up. If it falls flat on its face, I’ll come back to admit it. Either way, I’ll see you on the other side of the trophy ceremony.

All the code, data snapshots and figures for this article live in experiments/world_cup_2026/ on GitLab.


  1. This number comes from the number of possible combinations, calculated via the good old binomial coefficient: \({12 \choose 8} = \frac{12!}{8! \cdot 4!} = 495\). I’m glad you’ve asked. ↩︎

  2. A more sophisticated model would let the two lambdas vary independently (a so-called bivariate Poisson, or a Dixon-Coles correction for the empirically thin draw shoulders). I’ve deliberately kept v1 honest about its limits — one tunable parameter, one Elo input and no team-specific attack/defence ratings. ↩︎

  3. FIFA’s full procedure also includes a fair-play / conduct score before falling back to FIFA rank, which the simulator deliberately doesn’t model — yellow- and red-card counts aren’t an Elo-derivable quantity. ↩︎

  4. eloratings.net maintains the established World Football Elo Ratings, updated after every international match. The simulator freezes the snapshot at 2026-06-10 20:33 UTC so that results from inside the tournament can’t quietly feed back into the forecast mid-run. ↩︎

  5. Group D is also the group where the model’s biggest home effect lives: without the +100 Elo bonus, the 🇺🇸 United States would be a long way behind 🇹🇷 Turkey and 🇵🇾 Paraguay for qualification rather than essentially tied. The bonus doesn’t carry into the knockouts, though — so even a 🇺🇸 USA win in Group D leaves them up against 🇪🇸 Spain’s half of the bracket with a vanilla 1726 Elo. ↩︎

  6. Polymarket prices change minute by minute; the comparison is a single snapshot taken just before the tournament started. By the time you read this, the numbers will already have drifted — 🇪🇸 Spain in particular will be priced very differently after match one, regardless of what happens in it. ↩︎

  7. Decimal odds quote the total return per unit stake including the stake, so fair odds for probability \(p\) are exactly \(1/p\). If you sum the market-implied probabilities across all 48 contracts, you’ll get slightly more than 100% — the overround is how the market makes a living. Polymarket’s overround on this market is about 3%; a typical sportsbook is closer to 5–8%. Either way: the house always wins. ↩︎


See also