GitHub - fabio-ricardo/worldcup-forecasting-model: Hybrid Prior-Performance Monte Carlo model for forecasting FIFA World Cup knockout outcomes (paper companion code).

2 min read Original article ↗

Preprint: SSRN Working Paper No. 7013338 — https://papers.ssrn.com/sol3/papers.cfm?abstract_id=7013338

Companion code for:

F. R. Araujo da Silva, A Hybrid Prior-Performance Monte Carlo Model for Forecasting FIFA World Cup Knockout Outcomes: Methodology and Retrospective Validation 1986–2026. ORCID: 0000-0003-4938-5856

A transparent Monte Carlo model that forecasts the FIFA World Cup champion from the first knockout round. Each team gets a strength rating blending season-long priors (FIFA ranking, squad market value), group-stage performance (expected goals, goals, individual production), and a goalkeeper/defensive-pedigree term. Strength differences drive a Poisson goal engine with extra-time and penalty resolution; the fixed bracket is simulated many times to estimate championship probabilities.

No knockout-stage result is ever used as a model input.

Requirements

Python 3.8+ (standard library only — no external packages).

Usage

python worldcup_model.py            # backtests (1986–2022) + 2026 prediction
python worldcup_model.py --loocv    # also run leave-one-out cross-validation

Files

File Description
worldcup_model.py Model, simulation engine, backtests, prediction
data.py Per-tournament inputs and fixed brackets

Method summary

Strength rating:

R_i = 1500 + 250 * (Attack_i - Defense_i)

Attack_i  = 0.70*rank + 0.20*value + 0.13*xGF + 0.05*goals + 0.03*star
Defense_i = 0.55*xGA - 0.35*gk_pedigree

(z-scored signals; for pre-2002 tournaments rank+value are replaced by a single pedigree rating carrying their combined weight.)

Match: expected goals lambda = clip(1.35 * exp(0.5*tanh((R_a - R_b)/400)), 0.25, 3.5), independent Poisson draws, reduced-rate extra time, then a coin-flip shootout.

Validation

  • Champion in the model's top two in 10/10 tournaments, 1986–2022.
  • Out-of-sample (1986–1998, never used for tuning): top-two 4/4.
  • Leave-one-tournament-out CV (2002–2022): top-two in 5/6 held-out folds.

Data sources

FIFA/Coca-Cola Men's World Ranking; Transfermarkt squad valuations; FIFA official match statistics; published xG trackers (2010–2026, estimated for ≤1998); RSSSF archive and ESPN for historical brackets and group-stage results.

License

MIT (code). Statistical data are public domain / cited to their sources.