Methodology

The Model

Elo-based strength, corrected toward bookmaker prices, feeding a Dixon-Coles Poisson scoreline grid. Picks maximize expected challenge points (exact score 3, correct outcome 1).

  1. 01

    Strength

    Each team carries a live Elo rating (eloratings.net, June 10 2026) plus a market correction fitted from bookmaker tournament-winner odds — the market knows things results don't: injuries, squad depth, home factor. Hosts get a +80 bonus; a manual news knob exists for shocks.

  2. 02

    Goals

    The strength gap maps to expected goals per team — base ~2.45 total, widened for mismatches — then a Dixon-Coles corrected Poisson grid (ρ=−0.06) gives the probability of every scoreline. Where bookmaker match odds exist, the grid is blended 60% toward the margin-free market probabilities.

  3. 03

    Pick

    The predicted score maximizes expected challenge points: exact score worth 3, correct outcome worth 1. That favors the favorite's most likely winning score; 1–1 appears only for genuine coin-flips.

  4. 04

    Self-training

    After every real result both teams' Elos update (K=50, goal-difference multiplier), all remaining predictions regenerate and the knockout bracket re-resolves. An upset immediately shifts every future prediction.

Record so far

No matches played yet — tracking starts after the first recorded result.

Updating after a match

# record result of match 1 (Mexico 2-1 South Africa):
python3 model/update.py 1 2 1

# Elo updates, remaining predictions regenerate,
# accuracy recomputes. News refresh: see README.