Predictive Signals
Some attempt to see if there are any predictive qualities to the stats we have available. Shared with everyone, because I'm not certain it's useful. We look at the "ICT Index" that everyone ignores in the main game, plus a rolling average of form, and the difficulty of the next fixture. And it seems there is some sort of predicitve element there. Or, it might all be dumb and circular - of course these things predict the points, because they're the things used to calculate the points... Whatever, I just asked the Gimp to create it for me, so 🤷‍♀️
Team Form Pulse Check
This is the basic stuff - teams ranked by their players' average form. And the three most form-y players for each of them. And then a chart plotting that form vs. how hard their next five fixtures are.
| Rank | Team | Active Players | Team Form | Top Form Players |
|---|---|---|---|---|
| 1 | Nott'm Forest | 24 | 78.2 |
Gibbs-White
MID
(9.8)
Awoniyi
FWD
(7.3)
Hudson-Odoi
MID
(7.0)
|
| 2 | Brighton | 20 | 74.8 |
Dunk
DEF
(7.5)
GroĂź
MID
(6.0)
F.Kadıoğlu
DEF
(5.8)
|
| 3 | Man City | 20 | 72.3 |
Doku
MID
(7.2)
O’Reilly
DEF
(6.6)
Haaland
FWD
(6.6)
|
| 4 | Man Utd | 19 | 68.7 |
Casemiro
MID
(7.5)
Maguire
DEF
(6.0)
Mainoo
MID
(5.5)
|
| 5 | Leeds | 20 | 66.2 |
Okafor
MID
(10.2)
Stach
MID
(6.0)
Ampadu
MID
(5.2)
|
| 6 | Bournemouth | 19 | 64.2 |
Truffert
DEF
(6.6)
Senesi
DEF
(6.4)
Smith
DEF
(6.0)
|
| 7 | Arsenal | 20 | 63.9 |
Gabriel
DEF
(5.8)
Raya
GKP
(5.4)
Gyökeres
FWD
(5.0)
|
| 8 | Liverpool | 19 | 62.1 |
M.Salah
MID
(6.3)
Szoboszlai
MID
(5.2)
Virgil
DEF
(4.8)
|
| 9 | Spurs | 22 | 54.5 |
Xavi
MID
(5.0)
Pedro Porro
DEF
(4.8)
Richarlison
FWD
(4.2)
|
| 10 | Sunderland | 19 | 54.1 |
Mukiele
DEF
(6.0)
Geertruida
DEF
(6.0)
Xhaka
MID
(4.4)
|
| 11 | West Ham | 19 | 52.0 |
Mavropanos
DEF
(6.8)
Bowen
FWD
(6.0)
Disasi
DEF
(4.2)
|
| 12 | Newcastle | 21 | 50.7 |
Osula
FWD
(6.0)
Bruno G.
MID
(3.8)
L.Miley
MID
(3.5)
|
| 13 | Brentford | 18 | 50.5 |
Thiago
FWD
(4.8)
Damsgaard
MID
(4.6)
Jensen
MID
(4.4)
|
| 14 | Everton | 18 | 48.1 |
Beto
FWD
(6.2)
Dewsbury-Hall
MID
(6.0)
Tarkowski
DEF
(4.4)
|
| 15 | Fulham | 21 | 46.9 |
Leno
GKP
(5.0)
Sessegnon
MID
(5.0)
Andersen
DEF
(3.8)
|
| 16 | Aston Villa | 21 | 46.4 |
Watkins
FWD
(6.0)
Rogers
MID
(3.8)
Martinez
GKP
(3.2)
|
| 17 | Crystal Palace | 18 | 45.0 |
Guéhi
DEF
(7.0)
Lacroix
DEF
(4.0)
Mateta
FWD
(3.7)
|
| 18 | Burnley | 22 | 43.3 |
Anthony
MID
(3.6)
Flemming
FWD
(3.6)
Tchaouna
MID
(3.2)
|
| 19 | Chelsea | 25 | 39.0 |
JoĂŁo Pedro
FWD
(4.0)
Enzo
MID
(3.5)
Colwill
DEF
(2.5)
|
| 20 | Wolves | 22 | 35.8 |
S.Bueno
DEF
(3.2)
Toti
DEF
(3.0)
Gomes
MID
(2.6)
|
Coming good
Players whose 3-game average is outperforming their longer-term baseline.
-
Raya GKP ARS+2.933G mean 8.33 vs 5G avg 5.4
-
Awoniyi FWD NFO+2.933G mean 7.33 vs 5G avg 4.4
-
Gabriel DEF ARS+2.533G mean 8.33 vs 5G avg 5.8
-
De Cuyper DEF BHA+2.473G mean 6.67 vs 5G avg 4.2
-
Maguire DEF MUN+2.43G mean 6.0 vs 5G avg 3.6
Coming too soon
Players whose short-term form has slipped under their baseline.
-
Mavropanos DEF WHU-4.473G mean 2.33 vs 5G avg 6.8
-
Okafor MID LEE-4.23G mean 4.0 vs 5G avg 8.2
-
Wieffer MID BHA-3.533G mean 0.67 vs 5G avg 4.2
-
M.Salah MID LIV-3.473G mean 0.33 vs 5G avg 3.8
-
Cherki MID MCI-2.83G mean 3.0 vs 5G avg 5.8
Predictive signal leaderboard
Of the signals we're looking at, which players are doing well? All the input features, mulched together into an overall score.
| # | Player | Pos | Club | Signal Score |
|---|---|---|---|---|
| 1 | Doku | MID | MCI | 32.13 |
| 2 | Haaland | FWD | MCI | 27.68 |
| 3 | Tarkowski | DEF | EVE | 27.61 |
| 4 | De Cuyper | DEF | BHA | 22.2 |
| 5 | Sarr | MID | CRY | 19.48 |
| 6 | Minteh | MID | BHA | 19.24 |
| 7 | Kelleher | GKP | BRE | 17.44 |
| 8 | Bruno G. | MID | NEW | 17.04 |
| 9 | Trossard | MID | ARS | 16.97 |
| 10 | Gravenberch | MID | LIV | 16.78 |
| 11 | Dunk | DEF | BHA | 16.2 |
| 12 | Barkley | MID | AVL | 16.03 |
| 13 | Anderson | DEF | NFO | 15.53 |
| 14 | Anthony | MID | BUR | 14.87 |
| 15 | Rayan | MID | BOU | 14.78 |
| 16 | Hinshelwood | MID | BHA | 14.32 |
| 17 | McGinn | MID | AVL | 14.17 |
| 18 | Pedro Porro | DEF | TOT | 14.07 |
| 19 | Barnes | MID | NEW | 14.02 |
| 20 | Beto | FWD | EVE | 13.83 |
Projected next-match points
And the juice - can we use that score to predict how a player will do next match? It runs their current performance score against whether the next match is home/away, its diffculty, etc. and gives a points forecast.
| # | Player | Pos | Club | Next Opponent | Predicted Pts | Range |
|---|---|---|---|---|---|---|
| 1 | Tarkowski | DEF | EVE | Home vs SUN 2 | 14.1 | 13.66 – 14.54 |
| 2 | Doku | MID | MCI | Away vs BOU 4 | 12.45 | 12.01 – 12.89 |
| 3 | Haaland | FWD | MCI | Away vs BOU 4 | 11.95 | 11.51 – 12.39 |
| 4 | De Cuyper | DEF | BHA | Away vs LEE 3 | 10.58 | 10.14 – 11.02 |
| 5 | Minteh | MID | BHA | Away vs LEE 3 | 9.4 | 8.95 – 9.84 |
| 6 | Anderson | DEF | NFO | Away vs MUN 4 | 8.86 | 8.42 – 9.3 |
| 7 | Gabriel | DEF | ARS | Home vs BUR 1 | 8.78 | 8.34 – 9.22 |
| 8 | Gravenberch | MID | LIV | Away vs AVL 4 | 8.57 | 8.13 – 9.01 |
| 9 | Dunk | DEF | BHA | Away vs LEE 3 | 8.4 | 7.96 – 8.85 |
| 10 | Trossard | MID | ARS | Home vs BUR 1 | 8.36 | 7.92 – 8.8 |
| 11 | Barnes | MID | NEW | Home vs WHU 2 | 8.32 | 7.88 – 8.76 |
| 12 | Rayan | MID | BOU | Home vs MCI 4 | 8.31 | 7.87 – 8.75 |
| 13 | Hinshelwood | MID | BHA | Away vs LEE 3 | 7.89 | 7.45 – 8.34 |
| 14 | Sarr | MID | CRY | Away vs BRE 3 | 7.83 | 7.38 – 8.27 |
| 15 | Anthony | MID | BUR | Away vs ARS 5 | 7.49 | 7.05 – 7.93 |
| 16 | Barkley | MID | AVL | Home vs LIV 3 | 7.45 | 7.0 – 7.89 |
| 17 | Calvert-Lewin | FWD | LEE | Home vs BHA 3 | 7.44 | 7.0 – 7.88 |
| 18 | Raya | GKP | ARS | Home vs BUR 1 | 7.43 | 6.99 – 7.87 |
| 19 | Tel | MID | TOT | Away vs CHE 3 | 7.37 | 6.93 – 7.81 |
| 20 | Senesi | DEF | BOU | Home vs MCI 4 | 7.31 | 6.87 – 7.75 |
Model scorecard
So... how good is the model, if at all?
The MAE values shown in the scorecards are literal FPL points (they average how far the predictions miss by). During training we learn the link between a match's ICT signals and that same match's score; for future fixtures we reuse each player's latest snapshot and swap in the upcoming opponent's difficulty/home-or-away flag to make a forward-looking call.
Because most players only score a couple of points, we also slice the errors by actual and predicted score bands, track how often we flag genuine big hauls (≥8 pts), and check whether the model's top picks overlap with the actual top performers each gameweek.
Prediction scorecard
Back-tested on recent gameweeks. MAE is the average miss in FPL points; the hit-rate shows the share of predictions that landed within two points of reality.
| GW | MAE | Hit rate | Samples |
|---|---|---|---|
| 32 | 1.08 | 64.4% | 822 |
| 33 | 0.94 | 65.3% | 1073 |
| 34 | 1.0 | 63.7% | 578 |
| 35 | 1.06 | 64.3% | 827 |
| 36 | 1.01 | 64.9% | 914 |
Largest misses help highlight outliers the model struggles with.
-
Lewis-PotterGW 17 vs WOLDEF · BREΔ 18.54 pts2.46 → 21.0
-
Hudson-OdoiGW 16 vs TOTMID · NFOΔ 18.13 pts0.87 → 19.0
-
SchadeGW 18 vs BOUMID · BREΔ 17.85 pts2.15 → 20.0
-
João PedroGW 29 vs AVLFWD · CHEΔ 17.83 pts1.17 → 19.0
-
Gibbs-WhiteGW 33 vs BURMID · NFOΔ 17.32 pts2.68 → 20.0
Big haul classification
How often the model correctly flags players expected to hit 8+ points.
0.163
Precision (hauls we called correctly)
0.093
Recall (share of all hauls we spotted)
0.119
F1 (balance of precision & recall)
Predicted hauls: 386 · Actual hauls: 677 · True positives: 63
Scores run 0–1; higher is better. Precision/recall/F1 around 0.25–0.35 would be solid for noisy haul calls, while anything under ~0.1 means the model is mostly guessing.
Top-10 overlap
How many of the actual top scorers we catch in the model's top picks each gameweek.
0.088
Avg recall (actual top scorers recovered)
0.088
Avg precision (how many picks really hauled)
Both metrics run 0–1; higher is better. A healthy shortlist would sit around 0.4–0.6 recall/precision, while numbers below ~0.2 suggest the picks aren’t much better than luck.
Error by actual score bucket
Each bar shows how far off the predictions were (average absolute error) for players who actually landed in each points band, plus how many fell inside that band. In other words, it checks whether the model stays sharp for low scorers as well as the rare big hauls. Does the miss size stay sensible no matter how many points the player truly scored?
Lower is better: MAE around 1–2 points in most buckets is respectable; when errors regularly creep above 3–4 points the model is missing the mark.
Calibration at higher predictions
Points are grouped by what the model predicted (e.g. 6–9 points) and compared with what actually happened, so we can see if confident forecasts sit too high, too low, or on target. It is a gut check on whether the model is overhyping or under-calling good outings. When we predict 6–9 points, do the real scores usually end up in that range?
A well-calibrated model clusters near the diagonal with average miss under ~2 points; if points sit far above or below the band lines, the model is overconfident or under-confident.
Top-10 overlap by gameweek
The two lines track, week by week, how many of the real top scorers appear in the model's top picks (recall) and how many of the model's picks actually went on to haul (precision). It reveals whether the shortlist consistently finds the right players or just gets lucky. Are the model's top choices reliably capturing the real stars each gameweek?
Good weeks hover near or above 0.5 on both lines; dips below ~0.2 hint the model’s weekly picks are more miss than hit.
Linear R²
0.81
Explains how much variance the straight-line model captures using the core signals.
Linear MAE
0.54
Average miss (in FPL points) for the baseline regression.
XGBoost R²
0.83
How much variance the tree ensemble explains once we allow nonlinear interactions.
XGBoost MAE
0.44
Average miss for the boosted model — lower means sharper projections.
Feature spotlight
And how much do all the features matter?
SHAP values show the average boost each feature gives across all predictions. They apportion credit fairly, even when features interact.
Glossary
The signals use a mix of official FPL metrics and statistical jargon. Here's a quick refresher.
- ICT Index
- Fantasy Premier League's blend of Influence, Creativity, and Threat metrics to gauge how involved a player is in decisive actions.
- Influence
- Measures how heavily a player affects match outcomes (goals, assists, key contributions). High influence means the player drives team results.
- Creativity
- Tracks the rate of chance creation—crosses, key passes, and set-piece threat. Assisters tend to spike here.
- Threat
- Quantifies how likely a player is to score based on shots and positioning inside dangerous zones.
- Fixture Difficulty
- Club-provided rating (1 easiest — 5 hardest) estimating how tough the opponent is for that particular match.
- Rolling Mean
- Moving average across the last N games. A 3-game rolling mean smooths noisy weekly scores into a clearer form signal.
- Rolling Sum
- Moving total across the last N games. A 5-game sum captures medium-term consistency vs. short bursts.
- SHAP
- Shapley Additive exPlanations: a model-agnostic method that shows how much each feature pushed a prediction up or down.
- MAE
- Mean Absolute Error — the average absolute difference between predicted and actual points.
- R²
- Coefficient of determination. Shows how much of the variation in points the model explains (1.0 means perfect).
- XGBoost
- Extreme Gradient Boosting — an ensemble of shallow decision trees trained sequentially to reduce errors, great at spotting nonlinear patterns.