Probabilistic simulator, not a forecast. Numbers are Monte Carlo frequencies from a calibrated model — they reflect plausible outcomes, not predictions. The World Cup is structurally an upset machine. Read the methodology.
How to read this dashboard
"Spain 24%" is a probability, not a prediction. It means Spain lifted the trophy in about 24 out of every 100 simulated tournaments — the other 76 saw a different champion.
The simulation range is the uncertainty band. Multiple independent random seeds gave the same team a champion probability in this range. Tighter bands = more confident estimate.
Calibration measures honesty. A well-calibrated 70% should win ~70% of the time. We test this on 4,839 unseen historical matches — see the calibration chart.
Robustness is the stress test. The same simulation is re-run under 27 different parameter assumptions. The top-4 order survives all of them; positions 5–6 swap under altitude-penalty extremes — the contender story is real, the chasing-pack ordering is not.

Most likely champion

Won of simulated tournaments

Most likely finalist

Dark horse

Mode

Simulations

Each is one full tournament run end-to-end.

Holdout log-loss

Lower is better
Naive baseline ≈ 1.055 · Elo-only ≈ 0.908.

Holdout accuracy

vs always-home ≈ 48%
Top-1 outcome guessed correctly.

Top-1 concentration

Bookmaker range 15–25%
Higher = model overconfident.

Annex C lookup

FIFA-spec exact assignment
0 = perfect bracket fidelity.

Tournament storylines

Five quick takeaways derived from the simulation — refresh as the model updates.

Biggest movers

Champion-probability changes versus the pre-tournament baseline. Activates as matches lock during the tournament.

Title contenders

Probability of reaching each stage. Click any row in the top 10 for the full "why this team?" breakdown.

# Team Group Model Elo FIFA pts Squad €M Adv R16 QF SF Final 3rd Champion

Tip: Click any column header to sort. Search by team, or filter by group / region. Click a top-10 row to expand the full breakdown. · Confederation dots: UEFA CONMEBOL CAF CONCACAF AFC OFC.

Group stage projections

Full FIFA 2026 tiebreaker cascade per simulation: pts → GD → GF → H2H pts → H2H GD → H2H GF → fair-play (approximated as zero) → FIFA ranking. Top 2 + 8 best 3rd-placers advance.

Most interesting matches

Auto-curated picks from the upcoming fixtures — group stage through the final. Click a card to jump to the full match panel.

Match predictions

Goal-model expected scorelines for every fixture — group stage and knockouts. Bars = 90-minute W/D/L probabilities. λ = expected goals per side.

Compare two teams

Pick any two of the 48 teams to put their probabilities, Elo, squad value, and travel side-by-side.

vs

Title probability — top 20

Title by confederation

Travel impact — geography in 2026

The tournament spans 16 cities across 3 countries — some teams travel 4,500+ km between group matches. We apply a per-km Elo penalty and compare to a no-travel baseline.

Teams travelling most (group stage)

    Champion-prob impact (travel on vs off)

      Calibration — does the model mean what it says?

      Predicted 70% home win should match ~70% actual frequency. Dots near the diagonal = trustworthy probabilities. Test set: 4,839 unseen historical matches.

      Robustness — backtests and ablation

      How well would this model have predicted the past 4 World Cups, using only data available before each one?

      Walk-forward backtest

      WCMatchesLog-lossBrierAccLift

      Feature ablation

      ConfigurationLog-lossBrierAcc

      What's powering the prediction

      1. Match history

      49,000+ international matches since 1872 — every friendly, qualifier and tournament.

      2. Elo ratings

      Chess-style rating updated after every match. Tournaments weight more than friendlies.

      3. Time-decayed form

      180-day exponential half-life — recent matches matter much more than old ones.

      4. Squad value prior

      Transfermarkt aggregate (€20M – €1.5B). Captures young-talent surges Elo hasn't caught up with.

      5. Venue effects

      Altitude (Mexico City: 2,240m), climate (Houston/Miami heat), per-venue host-country boost.

      6. Travel fatigue

      Pre-computed 16×16 Haversine matrix. Per-km Elo penalty between consecutive group matches.

      7. Goal model

      Negative Binomial goal model with Dixon-Coles low-score correction.

      8. FIFA bracket

      Official Round of 32 → final structure. Annex C 495-row third-place lookup.

      9. Monte Carlo

      5 independent seeds × 5,000 sims with extra time and penalties. Cross-seed p05/p95 reported as a simulation range (sampling noise from independent rollouts), not a parameter confidence interval.

      Feature importance — home goals model

      Matchday intelligence

      Live adjustment layers stacked on top of the static Elo + squad-value baseline. Every component is capped — see the cap row below — and the full per-tick audit log is appended to data/live/matchday_intelligence_log.jsonl so any probability move can be traced back to the source row that triggered it.

      Loading…

      How live updates work

      Automatic re-simulation. A GitHub Actions cron job runs every 10 minutes during the tournament window (11 Jun → 19 Jul 2026). It checks for newly-finalised matches (status FT / AET / PEN only), locks their scorelines, re-runs the full Monte Carlo simulator, and commits the new JSON. The dashboard picks it up on the next page load — no manual refresh needed.
      Data source. Live provider shown in the status badge above. Supports API-Football (active when API_FOOTBALL_KEY is configured in CI secrets) and Sportmonks. Without a key the orchestrator falls back to manual / mock mode — scorelines are edited in data/live/results_2026.json and pushed.
      Matchday-intelligence layers. Injuries pull from API-Football (manual overlay in team_adjustments.json still stacks on top for operator-curated tier-1 calls), lineups poll /fixtures/lineups in the kickoff window, weather pulls Open-Meteo (16-day forecast → static climate fallback past the horizon), and post-match stats come from /fixtures/statistics. Every layer is capped, every adjustment is logged. See the Matchday Intelligence section above for the live state.

      Open data

      Everything on this page is loaded from the JSON files below. Download, audit, or wire into your own tools.