How the xPts Engine FPL prediction model works
xPts Engine projects Fantasy Premier League points by simulating matches rather than fitting a single formula. This page explains the method in plain English, in the order the model works through it.
Step one: how many minutes will he play?
Nothing in Fantasy Premier League matters until a player is on the pitch, so the model starts with minutes. For each player it estimates a probability of starting, a probability of appearing at all, and a distribution of minutes given an appearance, learned from his recent games, his share of starts and the minutes he typically plays when he does start.
That distribution is then scaled by an availability multiplier between zero and one, derived from the official FPL status flags and from Premier Injuries reporting. A player rated 50 per cent available has his projection halved rather than being marked with a warning and left alone.
Step two: how many goals will the match produce?
Team scoring is modelled as a Poisson process. Each club carries four strength numbers — attack at home, attack away, defence at home, defence away — estimated from last season's results and updated as the current season progresses. A fixture's expected goals for each side come from the attacking strength of one team against the defensive strength of the other, adjusted for home advantage.
Promoted clubs have no Premier League history, so their priors are translated from their actual Championship results, measured against the Championship average and dampened to reflect the step up in level.
Step three: who gets the goals, and what is that worth?
Player scoring rates are per-90 figures for non-penalty expected goals, expected assists, bonus, and saves for goalkeepers. Early in a season these are dominated by last season's rates; as minutes accumulate the blend shifts toward current-season data. The formula weights the two sources by observed minutes against a fixed prior weight, so the transition is gradual rather than abrupt.
Each simulated match then allocates the team's simulated goals and assists among the players who were on the pitch in that simulation, in proportion to their rates, and awards clean sheets, saves, cards and appearance points under the real FPL scoring rules. Bonus points are awarded competitively: BPS is accumulated within the simulated match and the top three players receive three, two and one point.
Step four: run it 500 times
Repeating the simulation 500 times per fixture produces a distribution of Fantasy points for every player, not a single number. The mean is the expected points figure. The standard deviation measures volatility. The 10th and 90th percentiles give a floor and a ceiling, which is what separates a reliable midfielder from a boom-or-bust forward with the same mean.
That distribution is what makes the captaincy, duel and squad-mode tools possible: a head-to-head win probability, for example, models the score margin between two squads as a normal distribution using the combined variance of both sides.
Step five: correct for being wrong
Once completed gameweeks exist, a ridge-regression calibration layer retrains on the model's own errors, per position, and adjusts the raw projections. Until roughly 300 observations have accumulated the layer reports itself as accumulating data and leaves projections uncorrected.
Accuracy is then published. Every completed gameweek is scored for mean absolute error overall and by position, minutes error, start-prediction accuracy and captain efficiency, and the full ledger is visible in the Model Lab.
What the model does not do
It does not read team news press conferences, predict managerial rotation intent, or know about events that have not been recorded in its data sources. It does not guarantee returns; a projection is an average across many possible versions of a match. Use it as a probability tool, not an oracle.
See the measured accuracy record, the FAQ or this gameweek's projections.