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 | Brentford | 17 | 81.5 |
Collins
DEF
(8.8)
Kelleher
GKP
(7.6)
Schade
MID
(7.6)
|
| 2 | Arsenal | 20 | 70.1 |
Rice
MID
(9.0)
Gabriel
DEF
(7.8)
Calafiori
DEF
(6.0)
|
| 3 | Spurs | 20 | 64.5 |
Davies
DEF
(9.0)
Danso
DEF
(7.0)
Van de Ven
DEF
(4.8)
|
| 4 | Liverpool | 19 | 64.1 |
Wirtz
MID
(6.8)
Isak
FWD
(6.0)
Ekitiké
FWD
(5.3)
|
| 5 | Brighton | 21 | 63.6 |
Boscagli
DEF
(8.0)
Ayari
MID
(5.8)
Veltman
DEF
(5.7)
|
| 6 | Man City | 19 | 61.4 |
Reijnders
MID
(5.8)
Haaland
FWD
(5.6)
Cherki
MID
(5.4)
|
| 7 | Newcastle | 19 | 60.4 |
Bruno G.
MID
(7.0)
Joelinton
MID
(5.5)
Thiaw
DEF
(4.6)
|
| 8 | Leeds | 18 | 58.9 |
Aaronson
MID
(7.0)
Calvert-Lewin
FWD
(6.4)
Ampadu
MID
(5.8)
|
| 9 | Everton | 16 | 57.1 |
Garner
MID
(7.0)
Tarkowski
DEF
(5.2)
Iroegbunam
MID
(4.8)
|
| 10 | Fulham | 19 | 56.0 |
Tete
DEF
(5.3)
RaĂşl
FWD
(5.2)
Wilson
MID
(4.8)
|
| 11 | Man Utd | 20 | 54.5 |
Dorgu
DEF
(6.0)
Casemiro
MID
(5.0)
Cunha
MID
(4.8)
|
| 12 | Wolves | 19 | 51.4 |
Mané
FWD
(5.2)
H.Bueno
DEF
(4.8)
S.Bueno
DEF
(4.5)
|
| 13 | Aston Villa | 21 | 50.8 |
Watkins
FWD
(6.2)
Rogers
MID
(5.0)
McGinn
MID
(5.0)
|
| 14 | Burnley | 23 | 49.5 |
Laurent
MID
(4.8)
Humphreys
DEF
(4.5)
Ekdal
DEF
(4.2)
|
| 15 | Sunderland | 18 | 49.3 |
Mukiele
DEF
(5.6)
Roefs
GKP
(4.4)
Xhaka
MID
(4.0)
|
| 16 | Bournemouth | 20 | 47.0 |
Semenyo
MID
(6.2)
Brooks
MID
(3.8)
Cook
MID
(3.8)
|
| 17 | Crystal Palace | 19 | 42.1 |
Canvot
DEF
(4.3)
Lacroix
DEF
(3.4)
Mateta
FWD
(3.4)
|
| 18 | Chelsea | 21 | 42.1 |
Enzo
MID
(4.6)
JoĂŁo Pedro
FWD
(3.6)
Palmer
MID
(3.4)
|
| 19 | Nott'm Forest | 20 | 39.3 |
Gibbs-White
MID
(4.6)
Anderson
MID
(4.4)
Dominguez
MID
(3.4)
|
| 20 | West Ham | 20 | 38.0 |
L.Paquetá
MID
(5.0)
Bowen
FWD
(3.2)
S.Magassa
MID
(2.5)
|
Coming good
Players whose 3-game average is outperforming their longer-term baseline.
-
Gabriel DEF ARS+3.83G mean 10.0 vs 5G avg 6.2
-
Bruno G. MID NEW+3.333G mean 10.33 vs 5G avg 7.0
-
Alleyne DEF MCI+3.23G mean 4.0 vs 5G avg 0.8
-
Thiago FWD BRE+2.733G mean 10.33 vs 5G avg 7.6
-
Joelinton MID NEW+2.63G mean 7.0 vs 5G avg 4.4
Coming too soon
Players whose short-term form has slipped under their baseline.
-
Dorgu DEF MUN-3.333G mean 2.67 vs 5G avg 6.0
-
Lewis-Potter DEF BRE-3.03G mean 4.0 vs 5G avg 7.0
-
Robinson DEF FUL-2.933G mean 1.67 vs 5G avg 4.6
-
Tete DEF FUL-2.873G mean 0.33 vs 5G avg 3.2
-
Calvert-Lewin FWD LEE-2.733G mean 3.67 vs 5G avg 6.4
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 | Thiago | FWD | BRE | 33.38 |
| 2 | Šeško | FWD | MUN | 33.23 |
| 3 | Bruno G. | MID | NEW | 29.6 |
| 4 | Aaronson | MID | LEE | 27.79 |
| 5 | Barnes | MID | NEW | 26.67 |
| 6 | Wilson | FWD | FUL | 20.62 |
| 7 | Dominguez | MID | NFO | 20.43 |
| 8 | Tel | MID | TOT | 19.79 |
| 9 | Dorgu | DEF | MUN | 19.58 |
| 10 | Joelinton | MID | NEW | 19.11 |
| 11 | Collins | DEF | BRE | 18.63 |
| 12 | RaĂşl | FWD | FUL | 17.98 |
| 13 | Haaland | FWD | MCI | 17.75 |
| 14 | Calvert-Lewin | FWD | LEE | 17.75 |
| 15 | Delap | FWD | CHE | 16.85 |
| 16 | J.Palhinha | MID | TOT | 16.78 |
| 17 | Berge | MID | FUL | 16.68 |
| 18 | Romero | DEF | TOT | 16.65 |
| 19 | Senesi | DEF | BOU | 16.05 |
| 20 | Kelleher | GKP | BRE | 15.82 |
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 | Šeško | FWD | MUN | Home vs MCI 4 | 14.9 | 14.44 – 15.36 |
| 2 | Barnes | MID | NEW | Away vs WOL 2 | 14.32 | 13.86 – 14.78 |
| 3 | Aaronson | MID | LEE | Home vs FUL 2 | 14.02 | 13.56 – 14.48 |
| 4 | Thiago | FWD | BRE | Away vs CHE 3 | 13.42 | 12.96 – 13.88 |
| 5 | Bruno G. | MID | NEW | Away vs WOL 2 | 13.4 | 12.94 – 13.86 |
| 6 | Joelinton | MID | NEW | Away vs WOL 2 | 11.58 | 11.12 – 12.04 |
| 7 | Collins | DEF | BRE | Away vs CHE 3 | 10.93 | 10.47 – 11.39 |
| 8 | Wilson | FWD | FUL | Away vs LEE 3 | 10.27 | 9.81 – 10.73 |
| 9 | Dominguez | MID | NFO | Home vs ARS 4 | 9.94 | 9.48 – 10.4 |
| 10 | Tel | MID | TOT | Home vs WHU 2 | 9.62 | 9.16 – 10.08 |
| 11 | Kelleher | GKP | BRE | Away vs CHE 3 | 9.39 | 8.93 – 9.85 |
| 12 | J.Palhinha | MID | TOT | Home vs WHU 2 | 8.5 | 8.04 – 8.96 |
| 13 | Calvert-Lewin | FWD | LEE | Home vs FUL 2 | 8.47 | 8.01 – 8.93 |
| 14 | Berge | MID | FUL | Away vs LEE 3 | 8.45 | 7.99 – 8.91 |
| 15 | Gibbs-White | MID | NFO | Home vs ARS 4 | 8.35 | 7.89 – 8.81 |
| 16 | Romero | DEF | TOT | Home vs WHU 2 | 8.21 | 7.75 – 8.67 |
| 17 | Yarmoliuk | MID | BRE | Away vs CHE 3 | 7.91 | 7.45 – 8.37 |
| 18 | Mané | FWD | WOL | Home vs NEW 3 | 7.66 | 7.2 – 8.12 |
| 19 | Raúl | FWD | FUL | Away vs LEE 3 | 7.5 | 7.04 – 7.96 |
| 20 | Mitoma | MID | BHA | Home vs BOU 3 | 7.42 | 6.96 – 7.88 |
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 |
|---|---|---|---|
| 17 | 1.16 | 59.6% | 760 |
| 18 | 0.95 | 64.0% | 770 |
| 19 | 1.1 | 62.2% | 775 |
| 20 | 1.01 | 64.1% | 780 |
| 21 | 1.01 | 65.2% | 790 |
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
-
EzeGW 13 vs CHEMID · ARSΔ 17.3 pts19.3 → 2.0
-
RomeroGW 14 vs NEWDEF · TOTΔ 16.89 pts0.11 → 17.0
Big haul classification
How often the model correctly flags players expected to hit 8+ points.
0.181
Precision (hauls we called correctly)
0.11
Recall (share of all hauls we spotted)
0.137
F1 (balance of precision & recall)
Predicted hauls: 155 · Actual hauls: 255 · True positives: 28
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.1
Avg recall (actual top scorers recovered)
0.1
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.57
Average miss (in FPL points) for the baseline regression.
XGBoost R²
0.84
How much variance the tree ensemble explains once we allow nonlinear interactions.
XGBoost MAE
0.46
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.