How my FPL predictor works (and how I use it)

I built a little Fantasy Premier League predictor that lives at fpl.mincho.dev. It picks an “optimal” squad for the upcoming gameweek, and — once the season starts — grades itself against reality. This is a quick tour of what’s under the hood, because the whole point of it is that it’s not a black box.

Where the data comes from

Everything comes from the official Fantasy Premier League API — the same public data the game itself uses. No scraping, no paid feeds. For every player it reads their expected goals and assists, expected goals conceded, defensive actions, minutes, availability, price and position; plus each team’s fixture difficulty.

How it scores a player

For each player it estimates expected points for the gameweek, built from parts you can actually reason about:

A couple of statistical touches keep it honest: rare events (clean sheets, hitting the defensive-contribution threshold) use a Poisson probability rather than a naive average, and lightly-played players get regressed toward the average so a small sample doesn’t make someone look like a superstar.

Picking the team

Given every player’s projected points, an optimiser then chooses the best legal 15-man squad — within the £100m budget, the 2/5/5/3 position split, and max three per club — and the best starting XI and captain. It’s not “pick the 11 highest scorers”; it’s the best value team the rules allow, which is why a £15.5m striker sometimes gets left out for two players who together score more.

How often it updates

It runs itself on a schedule (a free scheduled job), and it’s fixture-aware so it never jumps the gun:

So the site is always current for the next deadline, with no button to press.

How I read it

The honest caveats

It’s a v1 and it says so. Pre-season it runs on last season’s numbers, so early projections are rough — it sharpens itself as real games pile up. It doesn’t yet model penalties explicitly, and things like promoted-team players are probably a little over-rated until there’s real Premier League data to calibrate on. That’s fine: it’s a transparent model I can see being wrong and fix with evidence, which is the whole reason I built it this way.

More to come as the season starts and the predictions meet reality.