| Team | Win | Final | Semi | QF | R16 | Adv. |
|---|
| # | Team | Elo | Attack | Defence | xG for | xG ag. | Form (last 10) |
|---|
Data. Built from international matches () from the public martj42/international_results dataset — every World Cup, qualifier, continental cup and friendly.
Team strength. A weighted Poisson attack/defence model is fit by ridge-regularised maximum likelihood: each team gets an attacking and a defensive rating, plus a global home-advantage term. Recent matches are weighted far more heavily (2.5-year half-life) and World-Cup-calibre games count for more than friendlies. An Elo rating is tracked in parallel over the full history, weighted by match importance and margin of victory.
Match prediction. Expected goals for each side give two Poisson distributions; their product is the full grid of scoreline probabilities, which is summed into win/draw/loss, most-likely scores, both-teams-to-score, over/under, etc.
Reactive in-game odds. As the clock runs, only the remaining minutes carry expected goals (scaled by time left). The current score is locked in and added to the simulated remainder — so a 1-0 lead at the 80th minute correctly collapses the odds toward the leader.
Tournament odds. A Monte Carlo engine plays the whole tournament thousands of times — all 12 groups (top two plus the eight best third-placed teams advance) and the knockout bracket, sampling every scoreline from the model and settling knockout draws by strength-weighted shootouts.
Caveats: goals are modelled as independent Poisson (no explicit low-score Dixon-Coles correction); the knockout bracket is seeded by group performance rather than the exact official slotting; squad news, injuries and red cards aren’t modelled. It’s a solid statistical baseline, not a betting guarantee.