FPL Companion
How xPts works
xPts is FPL Companion's own expected-points estimate - built entirely from data FPL Companion already holds, calculated with plain arithmetic you can follow, and never copied from another projection tool.
What is xPts?
xPts is FPL Companion's estimate of how many Fantasy Premier League points a player is likely to score in a given Gameweek. You'll see it across the Planner, My Team, transfer comparisons and the Danger Score panel - always the same underlying calculation, so a number in one place means the same thing everywhere else.
It is a first-party model: every input is data FPL Companion already fetches from the official FPL API or from a community-maintained historical dataset. It does not scrape, copy or approximate any third-party projection service, and it is not a machine-learning model - it's a set of documented, deterministic formulas, the same for every player.
It is an estimate, not a prediction of fact. Treat it as one useful input alongside your own judgement, not a guarantee.
What goes into the model?
For each player and Gameweek, xPts combines:
- A goal-threat rate (expected goals per 90) and a chance- creation rate (expected assists per 90), converted into FPL points using each position's actual scoring value.
- A defensive contribution rate (tackles, interceptions, blocks, recoveries), modelled against the real threshold FPL rewards for each position.
- For goalkeepers, a save rate, converted at FPL's real rate of one point per three saves.
- A clean-sheet likelihood, drawn from the upcoming fixture's official FPL difficulty rating.
- An appearance estimate - how likely the player is to feature at all - built from recent starting frequency and adjusted for their current injury/availability status.
Every scoring rule matches FPL's real 2026/27 rules: goals, assists, clean sheets, saves, defensive contributions and appearance points are all position-specific, and captaincy/Triple Captain/Bench Boost are applied exactly as FPL applies them.
Previous season → current season
A player's rate stats (goal threat, chance creation, defensive contribution, saves) start from their most recent completed Premier League season. As they rack up minutes in the new season, their own current-season form is blended in and gradually takes over - the more minutes they've played this season, the more the current season counts, on a smooth sliding scale rather than a sudden jump.
To make that concrete, here's roughly how much weight the current season carries at a few points along that curve - this is a worked illustration of a smooth formula, not a set of fixed cutoffs the model checks against:
~10%
1 match played
~40%
5 matches played
50%
8 matches played
~80%
Full season played
One rested or rotated match is deliberately never enough to swing a projection on its own - a genuinely tiny sample (a short cameo appearance, for example) is not trusted at all, and the model keeps leaning on the prior season until there is a real body of current-season evidence to replace it with. Even a full season's current-season evidence never completely erases last season's signal - a single season, current or previous, can still be a fluke.
What about new Premier League players?
A player with no previous Premier League season on record - a new signing, a promoted club's player, an academy graduate - doesn't get skipped or shown a made-up individual projection. Instead, they start from a conservative baseline built from every established player in the same position (goalkeeper, defender, midfielder or forward): the average goal threat, chance creation, defensive contribution and starting frequency among players who had a genuinely substantial previous season.
That position-level starting point is deliberately generic - it treats a new player as a roughly typical player in their position until proven otherwise, rather than guessing at anything specific to them individually. As soon as they start picking up real Premier League minutes this season, their own current-season performance is blended in exactly the same way a returning player's is, and steadily replaces the generic starting point with something genuinely personal to them.
“No xPts data” is now reserved for the rare case where neither an individual history nor a position baseline can be built at all - not the default state for every new player.
Why expected minutes matter
A player who isn't on the pitch can't score points, so how likely a player is to actually play is one of the biggest levers in the whole estimate. That likelihood comes from how often they've started recently - blended, again, between last season's pattern and this season's - and is then scaled down for their live availability status: a doubtful player is discounted, and an injured, suspended or otherwise unavailable player is projected at zero regardless of how good their underlying rate stats look.
Fixture context
The clean-sheet component of xPts comes directly from FPL's own official difficulty rating for the upcoming fixture - easier fixtures push clean-sheet likelihood up, harder ones push it down, and home/away is already reflected in that rating. A Double Gameweek sums the estimate across both fixtures; a blank Gameweek correctly shows a genuine 0, not a missing figure.
How xPts improves during the season
xPts doesn't need a full season to become useful, and it isn't static once the season starts. Every additional match a player plays adds more of their own genuine current-season evidence to the blend described above, so projections get steadily more personalised - and steadily less dependent on last season, or on the generic position baseline for a new player - as real 2026/27 evidence accumulates.
Be aware
What xPts can't predict
- It doesn't know who's taking penalties, model bonus points (BPS), or account for card/red-card risk - FPL Companion doesn't have a reliable data source for any of these.
- It doesn't deduct anything for goals a team is likely to concede - only the clean-sheet reward is modelled, not the (smaller, capped) downside.
- Appearance points are currently valued as a flat rate rather than split between FPL's real 1-point (under 60 minutes) and 2-point (60 minutes or more) bands - there isn't a reliable way yet to estimate how long a substitute will typically play.
- A brand-new player's very first projections are genuinely less personal than an established player's - they start from a position-wide average, not anything specific to them, until their own minutes accumulate.
- It has no visibility into team news, tactical changes, or anything specific to one upcoming match beyond fixture difficulty and recent playing time.
- FPL Companion doesn't yet track xPts against real results to measure its own accuracy, so it shouldn't be read as more rigorously validated than a documented, reasonable set of judgement calls.
xPts is designed to be transparent about what it is: a useful, honestly-labelled estimate that gets better as the season goes on - not a claim of certainty.