Sideline Quant
Loading…
method

How the model works

I build each xP in four layers, from team goals down to a player’s minutes, then simulate every fixture thousands of times. Open any layer below, or pick a live player to see it worked through.

Why it matters for your team

I built it for the weekly decisions, mostly transfers and the captain pick, plus working out when to play your chips.

  • Your squad. Before you make a transfer it’s worth checking who’s likely to start and who’s a minutes risk as well as who has the best xP. Use the optimiser to plan the week, predictions to scan the board or the head-to-head to put two players side by side.
  • Captaincy. xP is only the average, and the armband doubles whatever your captain scores. Every player also gets a risk figure and a chance of a 6+ and a 10+ haul, and that’s what I’d look at alongside xP when picking a captain.
  • Mini-leagues. In a mini-league you only have to beat a handful of people and overall rank doesn’t really come into it. Rivals scores your plan against the people in your mini-league, so you can tell if a differential’s worth the punt or if you’re better off just covering.
LAYER A

Team scoring & clean sheets

From match odds + team form

I rate every team’s attack and defence with a Dixon-Coles model fitted on past results, and that’s what gives each side its expected goals and clean-sheet chances. Where the bookies have priced a match, usually the next gameweek or two, its goal rates (λ_home, λ_away) come from the odds instead, with the margin taken out. If only the result’s been priced, the odds set the home/away split and my ratings still set the total.

Loading live fixtures…
All fixtures →
LAYER B

Who gets the chances

Player shares, carefully shrunk

Team goals and assists are split across players by how much each typically contributes when on the pitch. Recent matches where the player was on the pitch for longer count more than brief cameos or older games. Penalty and set-piece taker roles are built in. The shrinkage weight shows how much the model relies on priors for players with little recent on field action.

Loading examples…
LAYER C

Will they play?

Start / sub / cameo / unused

I model minutes as four outcomes for every player and fixture: plays 60+, subbed off before 60, a cameo or not playing. They come from his recent starts, FPL’s injury news, how close he is to a ban and how busy his team’s schedule is. xP is weighted across the four rather than worked out from average minutes, because points don’t scale with minutes - 30 minutes gets one appearance point and no clean sheet at all, and the defensive contribution points are all or nothing.

EQUATION
xP=ΣP(state)×E[points | state]

States: unused · cameo · start & subbed · 60+. Never (E[minutes]/90) × per-90 rate.

Loading examples…
LAYER D

Expected points & risk

Thousands of match simulations

I simulate every fixture thousands of times (seeded, so a re-run gives the same answer) and that’s where the xP, risk (σ) and haul chances on the predictions board and in the optimiser come from. Each simulated match scores everything FPL does - appearances, goals, assists, clean sheets, goals conceded, saves, penalties, cards, own goals, defensive contribution and bonus, worked out from simulated BPS. The captain and chip tools and Rivals use the full spread of outcomes as well as the averages.

Loading players…
Browse predictions →

Limits

Odds, availability and prices are only ever used as they stood at the time of the prediction (snapshot timestamp ≤ prediction time). The backtest can’t see team news or price moves that came later. Everything’s worked out per fixture, so a DGW shows up as two separate games in the tables and the backtest.

Everything the model predicts is open to everyone, with no account. The optimiser needs a free account, and scoring a mini-league on Rivals is for supporters.

How I check it

After every gameweek I check the predictions against what happened, and the season’s record goes up on Performance, including the weeks it got wrong.

See model performance →

Put it to work

The optimiser plans your transfers and captain off these same numbers if you’d rather not do it by hand.