A live analytics dashboard for the 2026 FIFA World Cup that puts a self-built Monte Carlo prediction model side by side with the real betting market — for every match, the group tables, a full knockout bracket, and the odds to lift the trophy.
Every finished match is re-predicted using only results from before it kicked off — no hindsight. The market column pits the model's pick against the bookmaker favourite on the same matches, so you can see whether it beats the odds people usually bet on. A coin-flip on W/D/L lands ~33%.
Predicting football is a mix of what the numbers say and what the market thinks. WC26 runs both at once: a transparent statistical model and the aggregated view of dozens of bookmakers. Where they agree, you get confidence; where they diverge, you get an edge to examine. Every prediction is reproducible and updates automatically as results land.
Team Elo ratings → expected goals via an exponential rating-difference curve (λ = 1.35·e^(Δ/400)) → independent Poisson goal sampling → a 50,000-run Monte Carlo per match for W/D/L probabilities and the most-likely scoreline. Ratings update after every result, so later rounds sharpen.
Transparent, itemised Elo tweaks: host advantage, altitude (Azteca), summer-heat vs cold-climate sides, and regional familiarity — each shown on the match page so you see exactly what moved a number.
The whole tournament is simulated 10,000× from the current bracket, respecting real knockout results, to produce each team's odds to reach every round and win it all.
Fixtures, scores and the real bracket come from the public-domain openfootball dataset (free, no quota); bookmaker odds from The Odds API across UK/EU/US/AU books. Everything is fetched at render time and cached, so the site stays current with no manual refresh.
Built with Next.js + TypeScript + Tailwind, deployed on Vercel. See it in action on the schedule, groups, and title race.