About FPL Buddy

A free Fantasy Premier League tool that rates every player with a trained model, picks two AI squads a week, and shows you which teams have the kindest run of fixtures. Built by one person, for the same reason most FPL tools get built: wanting a better answer than a gut feeling.

How players are rated

Every player carries a projected points figure for each of the next eight gameweeks. It comes from a pair of gradient-boosted models per position — goalkeepers, defenders, midfielders and forwards score points in genuinely different ways, so one model across all four would average away the thing you actually want to know.

A pair rather than one, because "how many points will he score" is really two questions. Just over half of all gameweek rows are players who didn't get on the pitch, and a single model fitted across that mixture mostly learns who plays: it drags every projection toward the middle, and an earlier version of this site had the whole table within about a point of itself. So instead there is a classifier for whether he starts, and a separate model — Poisson, because points are a count with a long right tail — for what he scores when he does, fitted only on appearances. The two are combined as P(start) × points if he starts, plus a smaller term for coming off the bench.

That split is worth keeping for a second reason: "6.9 if he starts, and he starts 88% of the time" is two useful numbers, and a single blended figure cannot say it.

The model is trained on per-gameweek data from 2025/26 onwards and gains a season every year. Its inputs are FPL's own per-gameweek columns — expected goals and assists, goals and assists, expected goals conceded, clean sheets, defensive contribution, tackles and recoveries, minutes, starts, bonus and BPS, and the ICT ratings — measured both as a short three-gameweek form window and a longer six, alongside a season-to-date rate for each. Rate stats are taken per 90 minutes, because a player on sixty minutes a week is not two thirds as dangerous as one on ninety; he has two thirds of the time. Whether the fixture is home or away and how strong the opponent is are also inputs. Every rolling figure is shifted by one gameweek before use, so a player's own result can never leak into the features predicting it — the commonest way a model like this ends up looking far better than it is.

Total points is an input, which is a reversal. The earlier linear model left it out for double-counting: it is FPL's own formula applied to minutes, goals and bonus, so a regression handed both would split credit between a total and the parts it was built from. A tree has no such problem — it splits on whichever is more informative — and a player's own recent points rate turns out to be the single best summary of how the scoring actually treats him, bonus included, which is otherwise an opaque function of BPS.

Worth being straight about what this doesn't fix. The very top of the distribution is still shrunk: the best midfielders in the game have averaged closer to 6.7 points per start than the 5–6.5 the model gives them. A conditional mean fitted to a single season will always pull the extremes in, and there isn't enough evidence yet to do otherwise. It is a real improvement on the flat table it replaced, not a solved problem.

Team rating, and what it isn't

Every player also carries a rating out of 100. It is his projected points ranked against the other players in his position — top of the goalkeepers is 100, and so is top of the forwards. A squad's team rating is the average of its starting eleven's.

So it measures how good your eleven are relative to their peers, and a higher team rating does not mean a higher score. A hundred-rated goalkeeper and a hundred-rated forward are worth very different numbers of points, and averaging across positions has no points meaning at all. Three more reasons the two come apart: the rating describes the players as rated today rather than for one particular gameweek; it takes no account of who you captain; and it doesn't know whether a starter is a doubt to play.

The number that does answer "how many points this week" is the projected points figure beside it, which is the model's actual output. Read the team rating as squad quality — useful for "have I got good players", useless for "will I beat my mini-league this week".

The two AI squads

Both are picked by an integer linear program rather than by sorting a list. The difference matters because the constraints interact: "best points per million, position by position" can spend the budget early and then be unable to fill the last forward slot, or take three cheap defenders from one club and be blocked from the striker it actually wanted. A solver handles that directly and returns a squad that is provably the best available, not merely the best one a particular shortcut happened to find.

AI Best XI

The highest-scoring legal squad for the coming gameweek, rebuilt from scratch every week with no memory of the last one. £100m, two goalkeepers, five defenders, five midfielders, three forwards, and at most three players from any one club. It has no transfers to worry about, so it spends almost nothing on the bench — every spare pound belongs in the eleven.

AI Manager

A bot playing the actual game. It keeps one squad across the season, has a bank balance, earns and spends free transfers, takes four-point hits when a move justifies one, and holds a single set of chips.

It therefore judges players over the next several gameweeks rather than just the next one, weighted so that nearer fixtures count for more. That is the whole difference between the two: buy the best captain for one Saturday and sell him a fortnight later and you have burned four points and a free transfer for nothing. It also refuses to build a squad that can't field eleven players in a blank gameweek, and plans chips against the fixture list — double gameweeks and blanks are what actually make a chip worth playing, and both are visible months ahead.

Availability

Every player card carries a percentage. It's Fantasy Premier League's own published chance of playing, and the AI squads use it directly: a player rated 75% likely to feature is compared on 75% of his projection, not all of it. When the optimiser does start someone doubtful, it puts a dependable replacement on the bench in the same position, ordered so the automatic substitution actually covers them.

What this site cannot do

It cannot change your team. Fantasy Premier League's public API is read-only without an authenticated session, so everything here is a recommendation you then apply yourself in the official app. That is a deliberate limit, not a missing feature — this site never asks for your Fantasy Premier League password, and never will.

It also cannot tell the future. The projections are a model's best estimate from a handful of inputs, and football is not very predictable over ninety minutes. They're most useful for comparing players against each other, and least useful read as a forecast of anyone's actual score. The AI squads' predictions are frozen when each deadline passes and never recalculated, so the track record on each tab is an honest one rather than something quietly improved after the fact.

How badly it gets things wrong is published rather than described: the accuracy page puts every settled prediction against what the player actually scored, and against what you would get by not modelling at all. It is the page most likely to talk you out of trusting a number on this site, which is why it is worth having.

Not official

This is an unofficial fan project with no connection to the Premier League or to Fantasy Premier League. Player data, fixtures and results come from Fantasy Premier League's public API; team strength ratings come from ClubElo.

Questions, bugs and disagreements about the model are all welcome — see the contact page.