Live Tracker →

How FPL expected points are calculated

Every xP number in Dugout — on the player pool, the captain picks, the squad builder, the chip planner — is built the same way. This page explains exactly how, including the parts that are approximations, because a projection you cannot inspect is a projection you should not trust.

Written against the model as deployed for the 2026/27 season. Dugout does not use FPL's own ep_next field: it is floored at 1.0 and capped near 4.0 before a season starts, with only 24 distinct values across 568 players, so it cannot rank anybody.

The short version

Predict the match. Split it between the players. Price the result in FPL points. Multiply by the minutes you expect the player to actually be on the pitch.

Step 1

The match model

Each fixture is modelled as a venue-split Poisson process. Every club carries four numbers — goals scored and conceded at home, goals scored and conceded away — because home and away records differ far more than a single season-long average admits. From those, the model produces the expected goals for each side, and from the Poisson distribution it derives the chance of a clean sheet, the most likely scorelines, and the win, draw and loss probabilities.

The table is not frozen. It rebuilds itself on every load from the results that have actually happened, blending them into last season's baseline with a weight that grows as real games accumulate: after six matches at a given venue, the current season carries half the weight; by the end of the season last year has almost entirely washed out. Newly promoted clubs have no Premier League record at all, so their rows are estimates and are flagged as such in the app.

Step 2

The player's share

A club's expected goals have to be divided among its players. Dugout does this using each player's own expected goals and expected assists, blended with a price-and-position prior, weighted by how many minutes he actually played. An established starter is rated on his record. A new signing or a promoted-club player, who has no meaningful record in this league, falls back to the prior rather than inheriting a share he never earned.

No single player may absorb more than 38% of his club's output. That cap exists because of a real bug: an early version gave a £4.0m defender a 70% chance to score, purely because he was the only player at his club with any Premier League minutes, so the model handed him the entire attack.

Step 3

Pricing it in FPL points

The player's expected goals and assists are then scored with the real 2026/27 rules:

ComponentHow it is valued
Appearance2 points
GoalsxG × 6 goalkeeper and defender, 5 midfielder, 4 forward
AssistsxA × 3
Clean sheetprobability of a clean sheet × 4 (GK/DEF) or × 1 (MID)
Goals conceded−0.5 × expected goals against, for goalkeepers and defenders
Savesgoalkeepers only — roughly 2.4 shots on target per expected goal against, 1 point per 3 saves
Defensive contributionprobability of hitting the threshold × 2 — 10 CBIT for defenders, 12 including recoveries for midfielders and forwards
Penaltiesa nudge for first-choice duty that a player's past xG does not yet reflect; second in line gets a third of it
Bonusestimated share of BPS from attacking returns and clean sheets

Why the bonus estimate differs by position

The 2026/27 BPS rewrite did not affect everyone equally, so the bonus estimate is position-aware.

Goalkeepers gained the most. Saves are now worth 2 BPS each, 3 if the shot came from inside the box, and 1 more if it was a big chance. Keepers therefore receive clean-sheet BPS plus a term that scales with expected save volume.

Centre-backs lost out. Clearances, blocks and interceptions dropped from 1 BPS per 2 actions to 1 per 3. Full-backs were hit far less, because they keep their clean-sheet share and gain from the removal of the old penalty for being tackled. Since the FPL API does not label a defender as a full-back or a centre-back, the model infers it from the ratio of tackles to CBI — around 0.37 to 0.46 for full-backs, 0.05 to 0.10 for centre-backs — and splits the bonus accordingly.

Attackers gained slightly. Being tackled no longer costs a BPS, so attacking returns are worth marginally more than they were.

Step 4

Expected minutes — the biggest lever of all

Everything above is multiplied by the share of the match the player is expected to play, and this is the single largest driver of the final number. A brilliant player who starts on the bench is worth less than a modest one who plays 90 minutes every week.

Three independent signals of whether someone is a starter are computed, and the strongest of the three is used: his price relative to the median for his position, his rank within his own club and position, and his ownership, which updates daily as managers react to team news. These are blended with his actual start rate, weighted by how much evidence his minutes provide. The blend is capped so that a strong role signal always carries some weight, even for a player with a full season behind him.

This was the fix for the model's worst weakness. Start rate alone punishes exactly the players whose role has just changed — new signings, injury returners, squad players promoted into the first eleven — because their past minutes describe a job they no longer have.

Availability is judged against the fixture date

An injury flag is not permanent, and the model no longer treats it as though it were. When a player carries a return date, he scores zero for fixtures before that date and is discounted for fixtures after it, rather than being zeroed out for the rest of the season. Where there is no date, the discount softens the further ahead the gameweek sits.

This one change lifted Dugout's correlation with a leading paid projection service from 0.485 to 0.775 on Gameweek 1, and from 0.288 to 0.540 across six gameweeks.

Every projection carries an uncertainty figure

A projection built on three thousand minutes of evidence is not the same thing as one built on a price tag, and Dugout says so. Uncertainty ranges from about ±18% for a player with a long, stable record to ±64% for someone with no Premier League minutes at all. It is driven by minutes played, availability, and whether the club has any Premier League data to draw on.

What the model does not know

There is no lineup data, so a player who is about to be rotated is projected as though he starts. There is no manager press-conference feed. Newly promoted clubs are estimates. The saves, penalty and bonus terms are deliberate approximations rather than exact simulations. Defensive contribution depends on per-90 data that reads zero for everyone until the new season accumulates enough minutes.

These are predictions. They are meant to rank options and expose the trade-off between two players, not to tell you what will happen on Saturday.

Why not just use FPL's own expected points?

FPL publishes an ep_next field, and it is tempting to use it. It is floored at 1.0, capped near 4.0, and before a season begins it takes only 24 distinct values across the entire player base. Two hundred players share the same number. It cannot separate a £4.0m third-choice goalkeeper from a first-choice defender, which makes it useless for the one job a projection has to do: ranking.

See the model working on your squad →

Guides: FPL prices 26/27 · GW1 deadline · Budget picks · GW1 captain picks

Dugout is a free Fantasy Premier League companion. Data via the official FPL API. Not affiliated with the Premier League.