26 World Cup Fantasy Projections BETA

World Cup Fantasy
Projections

Adjustable. Exportable. Built for solvers, not picks.

An Elo-derived xG model allocates expected fantasy points per player per round. Tweak the inputs, export the projections, run the solver.

How to use this tool
01
Adjust

Make the projections yours. Edit xMins per player, per round (R1/R2/R3) to reflect rotations, injuries, and fixture-driven rest; override goal/assist shares where you think the model is wrong about who's taking the chances. Every change recomputes live.

Saving your edits. Edits auto-save to your browser, so a refresh or returning the next day won't lose them — convenient, but browser data can still be cleared. For a bulletproof backup or to move edits between devices, hit Save session on the Projections page to download a JSON file. Load session restores it later.

02
Download

On the Projections page, hit Download CSV to save a snapshot of your tweaked projections in solver-ready format. The schema matches what the solver expects out of the box — no reformatting needed. (This is different from the JSON session file above: the CSV is for the solver, the JSON is a backup of your edits.)

03
Solve

The website and the ILP solver live in the same repo. Clone it, drop your CSV into data/, and run the solver to optimise your 15-player squad and starting XI under WC 2026 budget, position, and country constraints.

# Clone (website + solver share this repo)
git clone https://github.com/skyefung02/world-cup-fantasy-2026.git
cd world-cup-fantasy-2026

# Install (Python 3.10+)
pip install -r requirements.txt

# Drop your downloaded CSV in
mv ~/Downloads/projections.csv data/projections.csv

# Solve — picks land in data/results/wc_<timestamp>_iter*.csv
python wc_solver.py

Tune wc_settings.json for horizon, captaincy preferences, booster usage, and number of solution iterations. CLI flags override the file (e.g. python wc_solver.py --horizon 3 --num_iterations 5).

How the projections work

Team xG for each fixture starts from the Elo ratings of both sides: an Elo win-expectancy is converted to expected goals via a fitted polynomial, then bent by a per-team tactical tilt factor (both teams' tilts apply symmetrically).

Player allocation within a team's xG: each player's per-90 goal and assist rates are first shrunk toward the positional mean (lightly for forwards, heavily for goalkeepers and defenders, where individual rate stats are less predictive), then multiplied by their league strength to form a per-minute weight. Weight × xMins gives each player's slice of the team's open-play pool. Two pre-allocations happen before that distribution: designated penalty takers are locked into ~16% of team xG (PEN_PROB × PEN_CONVERSION), and set-piece-assist takers into ~20% of team xA. Manual overrides on the Projections page lock a per-90 goal or assist share for a specific player; the model renormalises the remaining team xG across non-overridden teammates.

Fantasy points apply WC 2026 position-aware multipliers: goals are worth 5 (FWD) / 6 (MID) / 7 (DEF) / 9 (GK); assists are a flat 3. Add appearance points (2 for ≥60 minutes, 1 if subbed on under 60), clean-sheet probability × position rate for players with ≥60 minutes (Poisson on opponent xG; rates: GK/DEF 5, MID 1, FWD 0), and a Poisson-derived conceded-goal penalty (−1 per goal conceded beyond the first) for GK and DEF.

Credits

Silver Bulletin (Nate Silver) — PELE international Elo ratings and tactical tilt ratings, the foundation of the team-level xG model.

football-rankings.info — empirically fitted quartic polynomial mapping Elo win expectancy to expected goals, derived from ~40,000 international matches.

soccerdata + FBref — per-player club-level rate stats (goals and assists per 90) used for within-team player allocation.

FIFA Fantasy — player, squad, and fixture data from the official game's open JSON endpoints.

open-fpl-solver (Solio Analytics) — the ILP solver architecture (sasoptpy + HiGHS) adapted into wc_solver.py. Apache 2.0 licensed. Data pipeline, transfer rules, booster system, and country limits rewritten for the WC 2026 format.