How It Works
SmartPlay does two things: it predicts how many FPL points each player will score (xPts), then it optimises your squad — finding the best transfers, captain, and lineup given your budget and the rules. Here's how both pieces work, how we know they're accurate, and where they fit in the broader FPL prediction landscape.
Backed by published research
SmartPlay's feature engineering is built on OpenFPL, an open-source FPL prediction framework created by Daniel Groos at Groos Analytics. His published research is one of the most rigorous open evaluations of FPL prediction models to date.
OpenFPL computes 251 features from publicly available FPL and Understat data — rolling averages, team and opponent strength, fixture difficulty, availability signals, and more. SmartPlay uses this same data pipeline, then runs its own prediction engine on top: separate models for each position, each tuned through automated optimisation to find the best settings across 50 trial runs.
The pipeline
Collects 251 stats per player per gameweek from the FPL and Understat APIs
Estimates how likely each player is to start and play significant minutes
Predicts outcome probabilities — blank, tick along, or haul — for each position
Combines everything into a single expected-points number for every player
Finds the best transfers, captain, and lineup for your squad and budget
Steps 1–4 produce xPts — a predicted score for every player every gameweek. Step 5, the solver, takes those predictions and works out what you should actually do with your squad.
From predictions to decisions
xPts tell you how many points each player is likely to score, but they don't tell you what to do. That's the solver's job. It takes your current squad, your budget, your free transfers, and xPts for every player across multiple upcoming gameweeks, then finds the mathematically optimal plan.
Under the hood, it's a mathematical optimiser powered by HiGHS, a high-performance open-source solver. It respects every FPL rule — max 3 per team, valid formations, budget constraints, transfer costs — and looks ahead several gameweeks to avoid short-sighted moves.
Captain selection is baked into the optimisation itself, not bolted on as an afterthought. The solver uses conditional xPts — expected points given the player starts and plays significant minutes — so it naturally favours nailed-on starters for the armband. Bench order is also adaptive: when your starters are rotation risks, the solver values a strong bench more highly.
- Your squad, bank & free transfers
- xPts for all players (multi-GW)
- All FPL rules & constraints
- Best transfers to make
- Captain & vice-captain pick
- Starting lineup & bench order
The solver looks several gameweeks ahead, weighting this week more heavily so it doesn't sacrifice short-term points for a speculative payoff in GW35. It handles all four chips (Wildcard, Free Hit, Bench Boost, Triple Captain), and automatically compares scenarios — rolling a transfer vs. taking a hit, playing a chip now vs. saving it — so you can see the trade-offs before committing. Results come back in seconds.
How we test
We train on past seasons and test on a future season the model has never seen. No peeking at the answers. The current model was trained on 2020–24 data, validated on 2024-25, and tested entirely on unseen 2025-26 matches. Both SmartPlay and OpenFPL are always evaluated on the exact same test sets.
Data quality
Predictions are only as useful as the data behind them. Every pipeline run passes through four validation layers and 50+ automated checks before anything reaches you. If something goes wrong, the system rolls back to the last known good state automatically — you never see broken data.
Every incoming API response and every computed prediction is checked for completeness, valid ranges, and internal consistency before it can be published.
Hard constraints block bad data at publish time — missing values, out-of-range numbers, and duplicate records are caught and rejected automatically.
After publishing, the system re-checks the live data. If anything looks wrong, it automatically restores the previous good version and alerts the team.
Every check is logged, every result is traceable, and the team is alerted within seconds of any anomaly. We track performance at every step so we can spot issues before they become a problem.
Per-Gameweek Accuracy
SmartPlay vs the FPL baseline and OpenFPL, per gameweek. Select a season to see how ranking accuracy and prediction error evolve across the year. All metrics are computed on starters only (players with 60+ minutes).
Did the model correctly predict who would outscore whom? 1.0 means perfect ranking, 0.0 is random. It doesn't care about exact scores — just the order. Higher is better.
How far off were the predictions, on average? Measured in FPL points. An error of 2.5 means predictions are typically off by about 2–3 points per player per gameweek. Lower is better.
How we compare to the leading commercial model
How does SmartPlay compare to FPL Review, the leading commercial FPL prediction service? Daniel Groos's published paper benchmarked OpenFPL against FPL Review by grouping players into outcome types (blanks, tickers, haulers) and measuring prediction error in each group. We ran SmartPlay through the same test so all three models can be compared side by side.
| Category | SmartPlay | OpenFPL | FPL Review |
|---|---|---|---|
Zeros 0 points | 0.89 | 0.82 | 0.69 |
Blanks ≤2 points | 1.39 | 1.29 | 1.19 |
Tickers 3–4 points | 1.23 | 1.52 | 1.59 |
Haulers ≥5 points | 5.16 | 5.14 | 5.17 |
Prediction error by outcome group, lower is better. All models on 2024-25 GW 32-38. OpenFPL & FPL Review numbers from Groos (2025). SmartPlay: same test, same definitions.
The bottom line: SmartPlay is competitive with FPL Review, the leading commercial prediction service. SmartPlay has the lowest error on Tickers (3–4 point returns) by a wide margin — the bread-and-butter outcomes where picking the right player each week adds up over a season. Haulers are essentially a three-way tie. FPL Review has an edge on Zeros and Blanks, likely due to proprietary minute projections.
Where SmartPlay stands out further is ranking accuracy — how well it orders players from best to worst. SmartPlay scores 0.728 on the unseen 2025-26 season, the highest across our test seasons. For FPL managers choosing between two transfers, getting the ranking right matters more than nailing the exact score.
What the model can't do
Football is inherently unpredictable. No model can foresee red cards, injuries during a match, penalty decisions, or a 30-yard screamer. Our average error is under 1 point per player per gameweek, and about 2.3 points when you only look at players who actually started — good enough to make informed decisions, but not crystal-ball territory.
The model is strongest at ranking — identifying which players are likely to outscore others — rather than predicting exact point totals. That's why ranking accuracy is the metric we care about most and the one we optimise for.
We update this page as the model evolves. The full codebase is on GitHub. If you have questions, reach out at [email protected].