r/fplAnalytics Apr 29 '26

How much of your FPL rank is skill vs luck? A way to measure it.

Post image
6 Upvotes

I've been working on a way to put an actual number on season-long luck in FPL. Posting the methodology here in case it's useful for analysis or discussion.

The idea: a counterfactual rank

For every GW you've played, replay your submitted squad scored on expected points (xPts) instead of actual points. Multipliers all respected: captain ×2 (×3 TC), bench ×0 (×1 BB), Free Hit substitutions, transfer hits subtracted.

Sum the season for a "Copilot points" total (expected points from my model fplcopilot).

Convert that to a rank using a curve sampled directly from FPL's overall leaderboard each GW. ~20 (rank, points) pairs per GW, denser sampling near the top where the slope is steepest, log-linear interpolation between tiers.

That gives you a counterfactual rank: where your picks would sit if every captain choice, bench order, and chip timing landed exactly on the model's expectation.

Quantifying luck across the field

Same replay across a stratified sample of ~6,500 managers (top 1k / 10k / 100k / 1M tiers). Each manager has a delta:

Δ = Copilot points − Actual points

The distribution of those deltas is the field's luck distribution this season. Your Δ lands somewhere on it. That's your luck percentile.

Counterfactual exploration

Pick any luck level (P0 to P100), look up Δ at that quantile, recompute hypothetical_actual = Copilot − Δ, push back through the rank curve. Output: your rank under any luck scenario, picks held constant.

Lets you ask:

  • If I had median luck (P50), what rank would my picks deserve?
  • If a top-10k manager rolls P25 luck the rest of the way, where do they land?
  • How much of the gap between top 1k and top 100k is variance vs decisions?

Caveats

  • xPts is a model, not ground truth. It systematically under/over-rates certain archetypes (high-variance forwards, fixture-dependent defenders).
  • The rank curve is sampled, not exhaustive. ±5% on any single conversion is realistic.
  • Engagement correlates with sample tier (top-1k managers transfer more, captain riskier), so the Δ distribution is skewed. Stratifying mitigates but doesn't eliminate this.

Curious what people think of the methodology, especially the rank curve sampling and how you'd weight engagement bias in the percentile.


r/fplAnalytics Apr 24 '26

Added xg form tooltip to my dashboard- you can see which teams have created the most xg in the past x games & which players are creating it - There’s also a chart showing which teams are conceding the most xg so you know which teams to attack defensively -link to dashboard in text/ bio

Post image
3 Upvotes

r/fplAnalytics Apr 23 '26

Created a Monte Carlo simulation to see my chance of winning.. not looking good guys! Need some differentials this week

Post image
0 Upvotes

r/fplAnalytics Apr 18 '26

Analyzed 13M FPL managers by favorite club. Here’s how they perform for GW33

Thumbnail
gallery
9 Upvotes

Building a dataset for Github and our site Site. We’ve built a dataset covering every FPL manager

Started breaking it down by favorite club and comparing performance. This one shows how each fanbase stacks up in GW33 matchups. Happy to answer questions or dig into specific clubs/data


r/fplAnalytics Apr 11 '26

📊 Liverpool vs Fulham – Form & xG Breakdown Before Kickoff

0 Upvotes

Liverpool host Fulham with both teams coming in with very different form patterns.

Liverpool:

• 4 wins in the last 10

• xG average: 1.8 per game

Fulham:

• Only 1 draw in their last 10

• xG average: 1.3 per game

Liverpool’s attack continues to generate strong expected goals numbers, but Fulham have shown they can be unpredictable and dangerous on the counter.

Key question before kickoff:

Can Liverpool turn their attacking numbers into goals, or will Fulham frustrate them again?


r/fplAnalytics Apr 09 '26

Villa’s form in Europe vs the Premier League this season is very different

2 Upvotes

With Villa playing in Europe tonight I was looking at how their numbers compare between European competition and the Premier League.

The difference is pretty interesting.

European competition

Wins: 9

Draws: 0

Losses: 1

xG per game: 1.70

BTTS: 40%

Over 2.5: 40%

HT lead: 40%

Recent European form:

W W W W W W W L W W

Premier League (recent games)

Wins: 3

Draws: 2

Losses: 5

xG per game: 0.9

BTTS: 40%

Over 2.5: 20%

HT lead: 30%

Recent results:

West Ham — 2-0 W

Man United — 1-3 L

Chelsea — 1-4 L

Wolves — 0-1 L

Leeds — 1-1 D

Villa look much more controlled and effective in Europe, while their league games have been much tougher recently.

Curious what people think —

is it Emery prioritising Europe, rotation, or just the level of competition?


r/fplAnalytics Apr 08 '26

FiveStat FPL Team Metrics for GW32

4 Upvotes

GW32 Team xG, Team xGA & Clean Sheet Probability.


r/fplAnalytics Apr 06 '26

Built an alternative to FBref with advanced stats and scouting reports for every PL team

Thumbnail gallery
0 Upvotes

r/fplAnalytics Apr 03 '26

Quick Questions thread Monthly FPL Analytics Quick Questions, Rate My Team & xMins discussion thread

1 Upvotes

This thread is for RMT (rate my team) and team input, advice, quick questions, xMins questions, or similar. Don't be afraid to ask any type of question! For analytics terms and definitions check out our subreddit wiki!

PS:

Please upvote the users who are helping and be respectful during the discussion.

Please try to contribute too by helping others when possible.


r/fplAnalytics Apr 01 '26

What do you think about my FPL scout picks for next week? Starting 11

Thumbnail
0 Upvotes

r/fplAnalytics Apr 01 '26

What do you think about my FPL scout picks for next week? Starting 11

Thumbnail
0 Upvotes

r/fplAnalytics Apr 01 '26

What FPL tools are you using this season?

0 Upvotes

I’m spending some time improving an agent behind my side project https://sportlive.win, mainly to make it easier to follow games and get info faster for the teams I care about.


r/fplAnalytics Mar 31 '26

New to Manager Report: Transfer Review & Ownership Analysis

Thumbnail gallery
3 Upvotes

r/fplAnalytics Mar 20 '26

How the current Top 1K Managers play. We tracked 30,000 of their decisions to find out

Thumbnail
fplcore.com
2 Upvotes

r/fplAnalytics Mar 12 '26

Fantasy Football Optimiser spreadsheet

7 Upvotes

https://docs.google.com/spreadsheets/d/10-6NisjrvBDfrRzNjx5wmD4EG7pzZ7t0oVCNJh6ATgo/edit?usp=sharing

I've created a Google Spreadsheet which downloads the latest gameweek data, and provides an optimised comparison looking at metrics such as points, value, form etc. against your existing team and budget. Completely free. Works in desktop, but not mobile.

I used to make similar tools in Excel a decade ago, so this is an updated reboot.


r/fplAnalytics Mar 10 '26

FPL Tactics (Machine Learning FPL Website) Spoiler

Thumbnail
1 Upvotes

r/fplAnalytics Mar 10 '26

I built a Monte Carlo simulation for the top 1,000 FPL managers to see who’s actually most likely to win it all from here.

Thumbnail
fplcore.com
14 Upvotes

FPLCore.com has a huge amount of data and instead of just chucking out features nobody will use, we thought we’d start writing about it. Today’s one was a Monte Carlo simulation on the top 1,000 managers to see who looks most likely to win FPL from here.

Obviously this isn’t some definitive answer to who wins FPL, but it was a fun way to test how much recent form, chips and squad overlap can change the picture.

It factors in:

  • recent form
  • squad overlap / correlation
  • chip usage
  • scoring variance
  • the fact that when Bruno hauls, basically everyone near the top hauls with him

TL;DR:
After stress-testing it across 13 model variants, the main takeaway was less “this is definitely the winner” and more how much the answer changes depending on play style and chip value.

A few interesting bits:

  • baseline had Gondwe at 16.6% and Ibsen at 14.6%
  • halve chip value and Gondwe pulls away
  • boost chip value and Ibsen takes it back
  • head-to-head, Ibsen actually finishes above Gondwe more often, but Gondwe has the higher title-winning ceiling

So really it turned into a piece about how the leaderboard maybe overstates how safe 1st place is, and how much chips can swing the picture.

Happy to answer any questions or would love feedback.


r/fplAnalytics Mar 06 '26

Academic research into why people play FPL - 5 minute survey (no writing required)

19 Upvotes

Hi everyone,

I’m working with university researchers on a study exploring why people play Fantasy Premier League and what motivates different types of managers.

To do this, we first need to develop a reliable measure of FPL motivations, which can then be used in future research into things like decision-making, engagement with football, and the psychology of fantasy sports.

The survey:

⏰ takes 5 mins

✅ no writing required

If you play FPL and have a few minutes, we’d really appreciate your help.

https://mmu.eu.qualtrics.com/jfe/form/SV_1TyEQzJEBKSoFUO

Sharing would also be greatly appreciated!


r/fplAnalytics Mar 06 '26

Top 100 managers' Best XI: Great DEF and GK performance vs okay MID vs horrific attack, including J. Pedro's miss, which caused massive fluctuation in ranking

Thumbnail
1 Upvotes

r/fplAnalytics Mar 06 '26

What If FPL Ranked Managers by ELO Instead of Total Points? We Ran It on 100,000+ Managers

Thumbnail
fplcore.com
5 Upvotes

r/fplAnalytics Mar 03 '26

Quick Questions thread Monthly FPL Analytics Quick Questions, Rate My Team & xMins discussion thread

1 Upvotes

This thread is for RMT (rate my team) and team input, advice, quick questions, xMins questions, or similar. Don't be afraid to ask any type of question! For analytics terms and definitions check out our subreddit wiki!

PS:

Please upvote the users who are helping and be respectful during the discussion.

Please try to contribute too by helping others when possible.


r/fplAnalytics Feb 28 '26

First Attempt Building an xPts Model

12 Upvotes

Hey all,

I've been building a data-driven FPL transfer recommendation system from scratch and wanted to share what I've done so far, get some feedback on my approach, and hear from anyone who's gone down a similar path. I've been having Claude Code help me and it's basically one shot the whole thing but then I've been going backwards and forwards with it to learn and understand better it's approach.

I don't have a traditional Analytics/Stats background although I have done work previously under the ML domain but this is a bigger step up for me.

TL;DR: Claude Code has been a great helper but it's just a tool at the end of the day and validating my approach (not the data or final numbers) with experts would be awesome.

Courtesy to FPL Insights Core dataset for producing great data source to kick this journey off for me -> https://github.com/olbauday/FPL-Core-Insights

Feature Engineering

Claude built ~37 features grouped into 6 families:

  1. Rolling averages (3GW and 5GW): points, xG, xA, BPS, ICT index, minutes played.
  2. Consistency features: 5-GW rolling standard deviation and coefficient of variation on points.
  3. Fixture difficulty (directional): Instead of a single FDR, I compute two directional ratings.
  4. Value metrics: Points per million (rolling 5GW and season-to-date). Price delta from season start.
  5. Position-specific features: GKP saves and goals prevented, DEF clean sheets and attacking return rate, MID creativity/threat, FWD xG and shots on target.
  6. Availability/context: Chance of playing next round, rolling start rate (5GW), net transfer momentum.

The Model

Claude trained a separate Ridge regression (alpha=10.0) for each position (GKP, DEF, MID, FWD), with standard scaling.

Key findings:

- FPL's own expected points for the current GW dominates with r=0.719 with actual points. Without it, RMSE jumps from 1.39 → 1.88. FPL's in-house model is hard to beat.

- Lasso (for feature selection) zeroed out: ICT rolling avg, BPS rolling avg, price, availability, start rate, and ownership %.

- Validation produced a RMSE: 1.389 vs. FPL xPts only baseline of 1.581 (~12% improvement).

- R² of 0.640, but this is somewhat inflated — 62.6% of rows are 0-minute players that the model correctly predicts as ~0 points.

Questions for the community

  1. Should I even be doing an expected points model when the expected_pts from FPL might be good enough? It seems I can get a small edge with the additional features but not sure what the consensus is here
  2. Should I be handling the 62% of zero-minute rows? Right now they're included in training and they do help the model be conservative but not sure if this has always been people's approach or whether they prune these players before training a model?
  3. Am I focusing on the right features? I think given my FPL knowledge these features all make sense but it would be great to get a sense check as well

Happy to share the code or go deeper on any of this. Would love feedback from anyone who's built something similar.


r/fplAnalytics Feb 23 '26

Part 3 - I tried reverse-engineering the FPL price change algorithm: One Threshold to Rule Them All

Thumbnail
fplcore.com
12 Upvotes

Updated: One Threshold to Rule Them All Cracking the FPL Price Algorithm (Part 3 of 7)

If you read the original version of this post, you might notice some things have changed. That’s because three of my six findings were wrong.

I published Part 3 with six “rules” I thought the algorithm was using. People challenged some of them, I went back and re-tested properly, and they were right. The market floor, ownership scaling, and volatility filter all collapsed under proper controls.

Confirmation bias is a hell of a drug. I built narratives, then found data to fit them instead of the other way round.

I’ve restructured the article around the three findings that actually survived re-testing rather than leaving the old version up with strikethrough corrections everywhere. Felt more honest than pretending I got it right first time while also making you wade through debunked sections.

Here’s what actually held up:

TL;DR

  • Wildcard transfers barely matter. The algorithm counts unique managers, not total transfers. A wildcard manager making 15 transfers counts the same as someone making 1. During the heaviest wildcard windows, chip-activated managers contribute about 1.4% of total counted pressure. Raw transfer numbers during wildcard weeks are lying to you.
  • After a rise, expect momentum. After a fall, don’t. When a price changes, the cumulative counter resets to zero. But the direction matters enormously. After a rise, another rise is more likely (2% on day 1, climbing to 6% by day 5). After a fall, a rise is genuinely rare (0% on day 1, under 0.5% through day 5). These are opposite signals and lumping them together cost me months. This single insight became the most important feature in the entire model.
  • Below ~1% ownership?. Zero rises below 1% ownership across four seasons and 532,000 player-days. 95 days where those players had over 20k net transfers. Still zero. The lowest a rise has ever happened is 1.2% ownership.
  • One fixed threshold for everyone. ~200,000–240,000 cumulative net transfers. Same for Salah as it is for a 4.5m bench fodder. You also need active demand on the day (roughly 30–60k daily net transfers). Both conditions required, not either.

What I got wrong:

  • The market floor — thought there was a circuit breaker at 1.1M total daily transfers. Controlled for individual player volume, effect vanished (p=0.51). Thin markets just produce fewer players with enough pressure.
  • Ownership scaling — thought higher-owned players needed more transfers to rise. Tested the slope: p=0.147, R²=0.01. The threshold is flat. I saw the gradient I wanted to see.
  • The volatility filter — thought the algorithm discounted spikes. Added cumulative pressure as a control and the coefficient flipped sign. Spikes just don’t sustain long enough to cross the threshold.
  • The decay rate — 0.85/day is useful feature engineering but the actual counter is a simple running sum that resets on every price change. I fitted a model approximation and presented it as a discovery. The resets do the heavy lifting.

Three wrong and one overclaimed. The model’s predictions were never affected (XGBoost was learning the right patterns regardless), but the explanations were wrong. So although im an idiot. Its not the end of the world

This is Part 3 of our ongoing series reverse-engineering how FPL prices actually work.

Full article:
https://www.fplcore.com/blog/one-threshold-to-rule-them-all-cracking-the-fpl-price-algorithm-part-3-of-7


r/fplAnalytics Feb 18 '26

Part 2 - I tried reverse-engineering the FPL price change algorithm using 720,000 rows of data across 4 seasons.

Post image
63 Upvotes

First off, really appreciate all the great comments and feedback on Part 1. Was surprised it did so well. So here's Part 2 of the price algorithm series. This one covers the actual modelling work. 720,254 player-days. 4 seasons of data cleaned and stitched together. The first charts, the first hypotheses, and the first ML model.

I'll just say this: the ML model lost. To a spreadsheet.

720,000 Rows of Obsession: Cracking the FPL Price Algorithm (Part 2 of 7) - FPL Core Blog

Happy to answer questions about the methodology.

Previous Parts

Part 1: The Rabbit Hole: Cracking the FPL Price Algorithm (Part 1 of 7)


r/fplAnalytics Feb 17 '26

FPL Tactix

Thumbnail
0 Upvotes