WC26 modelMethod
Final · Spain won · 104 matches
How it works
The model rates players, not teams — and lets the lineup decide the rest.

Most football forecasts start with the team: how good is Brazil, how good is Croatia. This one starts a level lower — with the twenty-six players each country brings — and rebuilds the team's strength from whoever is actually on the pitch. The logic is simple: international squads turn over constantly, and a side is only as strong as the eleven names on the team sheet, so a player is a steadier unit of measurement than a flag.

From there it is four steps — rate every player, roll the starters up into one team number, turn two team numbers into a distribution of plausible scorelines, then play the whole tournament out ten thousand times to see how often each path ends with the trophy. The rest of this page walks through each step in plain terms; a glossary at the bottom defines the statistical words as they come up.

The pipeline
Four stages, each feeding the next.
1PlayersAll 26 players per squad rated from market value, age and recent form.
2Team strengthStarters weighted by expected minutes, rolled up and blended with team Elo.
3Match modelTwo ratings become a full distribution over every plausible scoreline.
4TournamentThe whole bracket simulated 10,000 times to count each team's paths.
Each stage is a separate, individually backtested component · read left to right
Step 1 · Players
Every player gets one number, anchored to the transfer market.

The base signal is a player's transfer-market value — the price the football market puts on him. It sounds crude, but a decade of research (and our own testing) keeps landing on the same result: the wisdom-of-the-crowd baked into market prices is very hard to beat for predicting results. Thousands of clubs, scouts and bidders price a player more accurately than most hand-built rating systems can.

Two corrections sit on top. First, age: the market prices resale value, so it over-discounts a 33-year-old who is still excellent now and over-prices a teenager who might be excellent later. A position-specific age curve pulls the number back toward present-day ability. Second, a small recent-form adjustment from club expected-goals and defensive numbers — capped at 15% of the rating, because form is noisy and the market has usually priced it in already.

Everything is then expressed as a z-score within position, so a goalkeeper and a striker sit on the same scale.

Q = 0.85 · prior + 0.15 · formprior = market value (logged, z-scored) + age correction
Step 2 · Team strength
The starting eleven, weighted by who actually plays, becomes one rating.

Not everyone contributes equally. The model estimates expected minutes for each player — better players are likelier to start and finish — and takes a minutes-weighted roll-up of the squad into separate offensive and defensive ratings. Those are mapped onto the Elo scale, the same points system used to rank national teams, so a squad built from market values becomes directly comparable to a team's results-based rating.

The last move is a 50/50 blend: half the rating comes from the players, half from the team's actual Elo — its track record of results. Why both? Market value is excellent for European sides but undersells some South-American and results-driven teams whose players are cheaper than their results deserve. Blending hedges "who's on paper" against "what they've actually done," and it was the single biggest accuracy gain in testing.

rating = 0.5 · player value + 0.5 · actual Eloplayer value = squad rolled up and calibrated to Elo
Step 3 · Match model
Two ratings become a distribution of scorelines, not a single guess.

A match is mostly a count of rare events — goals — and the natural tool for counts is the Poisson distribution: give it an expected number of goals (called λ, lambda) and it returns the chance of 0, 1, 2, 3 … goals. Each team's λ comes from a small regression fit on 898 World Cup qualifiers, where expected goals depend on just two things: home advantage, and the Elo gap between the sides. Bigger favourite → higher λ → more goals expected.

Multiply the two teams' goal distributions together and you get a grid of every scoreline and its probability — which collapses into win / draw / loss and an expected score. One real-world wrinkle: independent Poisson slightly under-counts 0-0s and 1-1s, because level teams play it safe. The Dixon–Coles correction nudges those low draws up to match reality. This grid is exactly the score matrix you can expand on the Matches page.

λ = exp( b0 + home + b_diff · ΔElo / 100 )ΔElo = home Elo − away Elo; home applies only to a host on home soil
Step 4 · Tournament
Then the whole thing is played out ten thousand times.

Knowing each match as a probability is not the same as knowing who lifts the trophy — you have to chain 104 matches through a group stage and a knockout bracket, where every result reshuffles who meets whom next.

So the model runs a Monte Carlo simulation: it plays the entire tournament from first whistle to final 10,000 times, each match resolved by a random draw from its score distribution, with extra time and penalties included. Shootouts are treated as a coin flip — the evidence says they essentially are. Counting how often each team reaches each round gives the percentages on the Tournament page.

Calibration
Two dials are turned specifically for a World Cup.

The regression above is fit on qualifiers — but a World Cup is not a qualifier. A point-in-time backtest of recent major tournaments surfaced two systematic gaps, and each is corrected with a single dial:

Host advantage is smaller than an ordinary home game. A qualifier home side gets a large boost; a World Cup host gets about half of it. The co-hosts USA, Mexico and Canada still get a real edge — roughly +5 percentage points on home soil, not the +11 a naïve home bump would hand them.

World Cups score more. Recent World Cups average about 2.7 goals a game; the qualifier-fit model expected nearer 2.3. A small lift to the goal level closes the gap — and, helpfully, also improved who-wins accuracy, because World Cup games score more and draw less than qualifiers.

Matchday
When the team sheets drop, the forecast updates itself.

Everything above assumes expected lineups. About an hour before kickoff the real elevens are published — and a model built on players can use them directly. An automated agent reads the confirmed lineups from ESPN, re-rates both teams with the actual starters, and republishes the prediction.

The swings are real. In the USA–Paraguay group game the USA rotated into a weaker back line while Paraguay named their strongest attack; the forecast moved roughly eight percentage points toward Paraguay between the provisional and confirmed lineups. A team-level model could not see that coming.

How it's built
A hands-off pipeline that re-ran itself on every result, all tournament long.
IngestESPN lineups + resultsA matchday agent polled confirmed elevens and final scores.
ModelPython + RPlayers re-rated, teams rebuilt, the match and tournament models re-run after every tick.
PublishJSON snapshotsVersioned JSON snapshots written to storage on every run.
ServeThis dashboardA Next.js front end rendered them live; it now serves the frozen final record.
PythonRSQLiteNext.jsTypeScriptVercel

The whole system is hand-built and runs unattended: the statistical models (Python and R), the agent that ingests lineups and scores, the publish step, and this TypeScript dashboard — the same data-modelling, pipeline and visualisation work that sits behind any production analytics system.

Each stage ran automatically through the final · the site now serves the frozen end-of-tournament output
Validation
On 262 past matches, the player model beats both a coin flip and team-Elo alone.

A model is only as honest as its out-of-sample test. We rebuilt the entire pipeline exactly as it would have stood before each of five recent major tournaments — point-in-time squads, market values and Elo, with no knowledge of what happened next — and scored its match forecasts.

This model0.987
Team Elo only0.993
Coin flip1.099

Scale starts at 0.96, not 0 · shorter is better. Log-loss scores a probability forecast: lower means more confidence placed on what actually happened (a coin flip scores ≈1.10; perfect foresight scores 0). The model edges raw team-Elo and clears a coin flip comfortably — but the margin over Elo is modest, and we report it that way on purpose.

Then the 2026 World Cup happened — the one test nothing could leak into. Over the 100 matches with captured betting odds, both the model and the market beat the naive baselines by a distance; the market finished ahead of the model by a real but narrow margin (p ≈ 0.06). Put on the coin-flip scale: the market recovered about 22% of the distance from a random forecast toward perfect foresight, the model about 19% — two informed forecasters in the same league, well clear of chance.

This model0.889
Betting market0.854
Base rates1.069
Coin flip1.099

Scale starts at 0.80 · WC26 final scores, mean hard log-loss, n = 100 · "base rates" = the season's own home/draw/away frequencies applied to every match. The split matters: the market's whole edge came from the 68 group games (0.834 vs 0.887) — in the 32 knockout matches the model was flat-out even with it (0.894 vs 0.896). The full breakdown is in the tournament review.

Out-of-sample W/D/L log-loss · WC 2018 + Euro 2020 + WC 2022 + Euro 2024 + Copa América 2024 (262 matches) · point-in-time inputs
Limits
What it can't do.
Probabilities, not prophecies.A 65% favourite still loses about one time in three. An upset is usually variance doing its job, not the model being broken.
Market value has blind spots.It underrates ageing veterans and emerging youngsters until results catch up — which can make a genuine starter look weak on paper, as a couple of USA defenders did this tournament.
Small samples.A 262-match backtest and a 48-team field leave real uncertainty. Treat single-game edges of a point or two as noise, not signal.
Some things aren't modelled.Chemistry, in-game tactics, red cards, weather and motivation never enter the math. This is a calibrated baseline, not the final word.
Key terms
A quick statistical glossary.
z-scoreHow many standard deviations a value sits above or below the average. A striker at +2 is well above a typical striker; −1 is below. It puts goalkeepers and forwards on one comparable scale.
EloA points rating, born in chess and now standard for national teams: you gain points beating strong opponents and lose them slipping up against weak ones. The gap between two ratings maps directly to a win probability.
Poisson distributionThe textbook model for counting independent, fairly rare events in a fixed window — here, goals in a match. Give it an expected count and it returns the probability of 0, 1, 2, 3 … goals.
λ (lambda)The single input to a Poisson distribution: a team's expected number of goals in the match. A bigger favourite gets a higher λ.
Dixon–ColesA standard correction to the basic two-Poisson football model (Dixon & Coles, 1997). It nudges the probabilities of the lowest scores (0-0, 1-0, 1-1), which independent Poisson gets slightly wrong because level teams play more cautiously.
Monte Carlo simulationEstimating an outcome by repeated random trial: play the tournament thousands of times, each match decided by a draw from its score distribution, then count how often each team advances.
log-lossA scoring rule for probability forecasts. It rewards putting confidence on what actually happened and punishes confident-but-wrong calls. Lower is better; a coin-flip forecaster scores about 1.10 across three outcomes.
Brier scoreA second forecast-scoring rule: the squared distance between the probabilities you assigned and what actually happened. Like log-loss, lower is better — but it punishes a confident miss less harshly, so the two are shown side by side.
t-testA significance test for whether two sets of paired numbers differ by more than chance — here, the model's per-match log-loss against the market's. The p-value is the chance you'd see a gap this large if the two were really equal.
vig / vig-free consensusVig (vigorish, or “juice”) is the bookmaker's built-in margin: turn a book's odds into probabilities and they sum to more than 100% — that excess is the house's cut. Strip it out and rescale to a clean 100%, take the median across books, and you get the vig-free consensus — the market line this site compares the model against.

The three model-specific terms — expected goals, xWDL and player quality — get a worked visual on the glossary page.

Full illustrated glossary — incl. xG, xWDL and player quality — at /glossary

Built by Isaac Kaczor. The model, the matchday agent and this dashboard are independent hobby work — not affiliated with FIFA or any betting operator. Forecasts are for interest and discussion only.