Model · 9 min read
How AI predicts FPL points, step by step
A projection is not a guess dressed up in decimals. Here is the actual chain of calculations that turns fixtures, form and injury news into an expected-points number.
Updated 16 August 2026
Step one: minutes
The model estimates three things for every player: the probability he starts, the probability he appears at all, and how many minutes he plays given an appearance. Those come from his recent starts, his share of available minutes, and how long he typically lasts when he does start.
Those per-player probabilities are then reconciled against reality at team level. Each club fields eleven starters, so the raw start probabilities within a squad are rescaled — in practice with a softmax-style solver — until they sum to eleven and the total expected minutes land near 990. A verified depth chart overrides the statistical estimate where a manager's rotation pattern is well established.
Step two: availability
Availability is a multiplier between zero and one applied directly to the minutes distribution. It comes from the official FPL status and chance-of-playing flags plus scraped injury reporting with reason, detail and expected return date.
A subtlety that catches most tools: FPL blanks the chance-of-playing-this-round field between gameweeks while still flagging the player. A model reading only that field will treat a 75 per cent doubt as fully fit. The fix is to fall back to the next-round figure, and to apply a conservative default for any flagged player whose doubt is unquantified.
Step three: rates
Each player carries per-90 rates for goals, assists, shots, key passes, saves and cards. Early in a season those rates are noisy, so they are blended: last season's per-90 output acts as a prior, and current-season data is weighted in as minutes accumulate. A player with 200 minutes played is judged mostly on his prior; by 1,200 minutes the current season dominates.
Promoted-club players are dampened, because Championship output does not transfer one-for-one to the Premier League. New signings from other leagues are handled the same way, with a league-strength adjustment on the prior.
Step four: simulate the match
Rather than multiplying rates by a fixture difficulty rating, the engine simulates the fixture itself. Team goals are drawn from a Poisson process whose mean comes from the attacking strength of one side, the defensive strength of the other, and home advantage. Each simulated goal is allocated to a scorer and an assister in proportion to their share of the team's attacking threat, given the minutes they were sampled to play in that run.
Clean sheets fall out of the simulation naturally: if the opponent's simulated goal count is zero and your defender was sampled to play 60 minutes or more, he gets the four points. Saves, cards and goals conceded are sampled the same way.
Step five: bonus points
Bonus is where naive models lose accuracy. It is not a per-player rate, it is a ranking within a single match. So inside each simulated fixture the engine computes a BPS score for all 22 players from the events it just generated, ranks them, and awards 3, 2 and 1 points accordingly.
That produces the correlations real FPL managers feel: a defender's bonus is entangled with the clean sheet, a midfielder's with whether he scored, and two players from the same team compete for the same bonus pool.
Step six: aggregate and calibrate
Running the fixture 500 times yields 500 point totals per player. The mean is the expected-points figure. The standard deviation quantifies volatility. The 10th percentile is the floor, the 90th the ceiling.
After each gameweek completes, projections are compared with actual returns and the residuals feed a light calibration layer, so systematic biases — for example under-projecting a specific position or over-projecting away favourites — get corrected rather than repeated.
What it cannot know
No model sees a press conference thirty minutes before the deadline, an unreported illness, or a manager's decision to rest a player before a European tie. Simulation prices known uncertainty well and unknown uncertainty not at all. That is why availability data is refreshed on a schedule right up to the deadline, and why a projection should inform a decision rather than make it.
Frequently asked
- How many simulations are enough?
- Five hundred runs per fixture is enough for stable means and reasonable percentile estimates at player level. More runs tighten the tails slightly but add little to the ranking decisions that actually matter in FPL.
- Why does the model disagree with expected goals tables?
- Expected goals describe what has happened. A projection describes what is likely to happen next, after adjusting for minutes risk, fixture, teammate competition for chances, and the FPL scoring rules — including bonus, which xG tables ignore entirely.