FIFA World Cup 2026 Group Stage Predictor
What I Built
A Monte Carlo simulation engine that predicts group stage outcomes for FIFA World Cup 2026 — the first ever 48-team tournament — using 90 years of historical match data and current FIFA rankings.
The project answers the question nobody has a clear answer to yet: with a brand new format, 12 groups, and 8 wild card spots decided by "best third-place record," which teams actually make it through?
Live project: View on Zerve →
How It Works
Data: Historical match data from the Fjelstul World Cup Database (1,248 matches, 1930–2022), downloaded live at runtime.
Model:
- Historical ELO ratings — Built chronologically from all 1,248 matches. Each match updates both teams' ratings based on scoreline margin and opponent strength. Between tournaments, ratings decay toward the mean (0.85 decay factor) to account for squad turnover.
- FIFA ranking adjustment — Current March 2026 FIFA rankings are blended in (30% weight) as a Bayesian prior for teams not well-represented in WC history.
- Poisson goal model — Match outcomes drawn from Poisson distributions where λ is derived from the ELO strength differential.
- Monte Carlo simulation — 100,000 full group stage simulations, tracking points, goal difference, and goals scored. Wild card spots awarded to the 8 best third-place finishers across all 12 groups — exactly per FIFA 2026 rules.
Key Findings
- Death Group: Group F (Netherlands, Japan, Sweden, Tunisia) — highest average team strength of any group
- France is the dominant favorite to top their group (94.1% advancement, 63.4% first place)
- USA enters as the 2nd-strongest team overall — 91.7% group advancement as host
- Sweden (72.5%) and Iran (64.9%) are the biggest surprise packages relative to FIFA ranking
- Group A is the most genuinely open group — all four teams between 58–78% advancement probability
What I Used
Built entirely on Zerve — the analysis downloads data live, computes ELO ratings, runs 100,000 simulations, and renders a 4-panel visualization dashboard, all within a single Zerve project. No local environment needed — fully reproducible by anyone who forks it.
Try It Yourself
The project is fully public and forkable. Want to see what happens if Denmark beats Czechia for the playoff spot instead of Italy taking it? Change one line. Want to weight recent tournaments more heavily? Adjust the decay parameter. The simulation reruns in under 60 seconds.

Log in or sign up for Devpost to join the conversation.