top of page

An Intro to Expected Ghost Points

Writer: DraftLad
DraftLad
50 minutes ago
14 min read

In this special edition of our weekly ghost-point centric article, DraftLad takes us even deeper into the world with an introductory explanation to expected ghost points.

Comic-style soccer scene: blue player dribbles past three red-and-white defenders on green pitch, with big STRIKE! text.

This Ghost Point article is based on the default Fantrax Scoring System. If your league scores differently, the numbers shift but the logic holds. Check out our Ghost Point Tracker page for the full list of Fantasy EPL players and their respective Ghost Point 👻capabilities!



Introduction

xG and xA have become nearly universally accepted metrics in the football space. Most people know they are a better indicator of future returns than past goals and assists. As a result, in our DraftPL fantasy world, xPts (featured consistently in Useful Draft Metrics) have become a useful part of fantasy managers' toolkits. The concept was originally created by the late, great Overthinking Football blog, and it replaces actual goals, assists, goals against and clean sheets with their expected equivalents (xG, xA, xGA, xCS). Currently, sharp fantasy managers tend to use xPts in two ways:


  • To understand how a player has really been performing (removing the luck/finishing aspect that comes with returns), and so how he is more likely to perform going forward.

  • To buy low and sell high. The gap between xPts and actual FPts (or points per start, PPS, against xPPS) shows who is under-performing and who is over-performing their expected future results.


But xPts takes the luck out of only a fraction of a player's points. Under Fantrax-style scoring, about 80% of fantasy points are what we commonly refer to as ghost points: the key passes, shots on target, successful dribbles, tackles, interceptions, clearances and aerials won (minus dispossessions) that aren't goals, assists, clean sheets or goals against. We call them ghost points because they don’t show up in the headline stats, but they make up most of a player's score. 92% for defenders, 78% for midfielders and 63% for forwards (defenders' and keepers' returns are often negative once goals against are counted, which is why their share is so high). Cards, own goals and missed penalties are separate, and rare enough that we'll ignore them here. Currently, xPts treats all of those ghost points as fact/destiny. A midfielder who made 4 key passes and 3 dribbles in a match is given those points exactly as they happened, as if the next match will look the same. Yet every ghost stat is a result that depends on a player first putting himself in position to get it: a dribble won needs a take-on attempted, an aerial won needs a contest, a shot on target needs a shot. How often a player gets into those positions is far steadier than how often they come off. For example, a defender who won 0 of 4 aerial duels last game is more likely to win more next game than one who went 1 for 1. The first is contesting four a match. The second may have been in the right place once.


So, can we take the luck out of ghost points too, and put a number on "xLiveliness": a player trying a lot without much necessarily coming off? That is the idea behind expected ghost points (xGPts): the ghost points we would expect a player to get in a game based on what he did in it.


Our Approach

The goal is to give ghost points the same analytical depth that xG brings to goal scoring: score the opportunity, not the outcome and replace the outcome points with what we'd expect from the opportunity. For each ghost stat we asked what volume it is made out of (or what needs to happen to maybe get the result):


  • Shots on target: shots taken

  • Dribbles won: dribbles attempted

  • Aerials won: aerial duels contested

  • Key passes: passes into the final third, line-breaking passes, corners taken, touches and passes into the box, crosses

  • Dispossessions: touches, dribbles attempted, duels lost

  • Interceptions: opposition passes while he's on the pitch, his tackles, his recoveries

  • Tackles won: tackles attempted

  • Clearances: opposition crosses, corners and shots, minutes, aerial duels

  • Blocks: opposition shots while he's on the pitch

  • Saves (GKs): expected saves from shot quality


We then built a model based off those assumptions using the following steps:

  1. Fit. Each stat gets a simple formula: a weighted sum of its volume numbers. I.e. The weights are fitted on 50,000+ Premier League player-matches. These are simple, interpretable regressions, not complicated black-box models.

  2. Split by granular position. A holding midfielder doesn't intercept like a winger. The formation grid puts each starter into one of eight roles (goalkeeper, centre-back, full-back, defensive mid, central mid, attacking mid, winger, striker), each with its own weights. A centre-back converts 0.61 of his aerial contests into wins on this fit, a winger 0.41. Going from three position groups to eight roles cut the average bias significantly.

  3. Score it. Expected key passes × 2, expected shots on target × 2, expected dribbles × 1, and so on, using the same Fantrax values the real stats get. The few ghost items we can't model well (penalties won, goalkeeper smothers) stay as they happened. The sum is that player's xGPts in a match.


How accurate is it? Across 900+ outfield player-seasons (900+ minutes) the correlation between actual and expected ghost points is 0.97 (1.0 would be a perfect match) and the average miss is 14 points on a base of 165.


A Practical Example

GPts only count what came off. xGPts counts what the player was involved in: how much he tried, how often he was on the ball in the places that produce points. That makes it more comparable to the eye test. A winger might take people on all afternoon, get shots away, lose the ball, and potentially go home with nothing in the fantasy box score. His GPts say he did little, but your eyes and XGPts say he was dangerous.


Here is a real example from GW5 of this season. Read each row as a count of what the player did, what the model expected given his volume, and the Fantrax points each is worth. Everton beat Ipswich 1-0 and Kiernan Dewsbury-Hall played 88 minutes as the attacking midfielder. His ghost points were 4.0. The model expected 11.6.


Stat

What he did

What the model saw (his underlying activity)

What the model expected

Points (actual)

Points (expected)

Shots on target

0 (from 6 shots)

6 shots taken; an attacking midfielder puts about 36% of his shots on target

2.2

0.0

+4.3

Key passes

2

3 passes into the box, 4 into the final third, 6 touches in the box, 3 crosses, 2 corners taken (12 long balls, which get no credit)

2.4

+4.0

+4.7

Tackles won

0

2 tackles attempted (about 61% of tackles are won)

1.2

0.0

+1.2

Dribbles won

0

1 dribble attempted

0.5

0.0

+0.5

Aerials won

1

2 aerial duels contested

0.7

+0.5

+0.4

Interceptions, clearances, blocks, crosses

0

Ipswich's passes, shots and crosses while he was on the pitch (about 460, 13 and 13), plus his 5 recoveries, 2 tackles, 2 aerial duels and 1 open-play cross

about 1.5 in total

0.0

+1.1

Dispossessions

1

65 touches, 1 dribble attempted, 4 duels lost

1.1

−0.5

−0.5

Ghost points




4.0

11.6


Most of that 7.6-point gap comes from one line: six shots, none on target, where the model expects a bit over a third of an attacking midfielder's shots to be. Was that just bad luck or was he genuinely poor? Likely, it was some of both. All six shots had an xG of just 0.37, and xGPts counts shot volume, not quality, so 11.6 might flatter him a little. You might think of that as "busy and not very sharp". It still tells you something the 4.0 doesn't: he was getting on the ball where points come from, and when he does again, more gpts & fpts will come of it (as they did in GW6).


The same gameweek saw the opposite case. Morgan Gibbs-White made six key passes for Forest against Coventry where the model expected 2.6, and his ghost points were 15.0 against an expected 7.7. Those six key passes added up to an xA of just 0.40, and Forest lost 1-0. The expected model doesn't count key passes. It counts what usually leads to them:

Stat

Gibbs-White

Typical AM starter

Expected key passes

Passes into the box

4

1.7

1.48

Passes into the final third

6

4.6

0.43

Crosses

6

2.6

0.37

Touches in the box

3

3.4

0.34

Corners taken

0

1.0

0.00

Total



2.6


More than half of the 2.6 is the four passes into the box, already well above what his role usually produces. So 2.6 would already be a good night of passing, and he made six. Only about 3% of the 463 attacking-midfielder starts in the last two seasons had six or more key passes. The gap vs his expected though is the finishing end of the move, which the model can't see. Probably a bit of skill in who he finds and where but also a lot of luck on this particular day (perhaps via some shot-happy attackers).


Does It Predict Future Performance?

Take every outfield player with 450+ minutes in the first six gameweeks and 900+ after, across 2023/24 to 2025/26. Of the 103 whose GPP90 sat 1.2 or more away from their expected number after six gameweeks, 81% moved closer to their expected number over the rest of the season, closing about 70% of the gap on average. Meaning that after the first 6 gameweeks of the season, players' average expected ghost points were closer to their avg. ROS ghost points (than their actual first 6 gw avg. actual ghost points)


For further proof, let's try to predict each player's ghost points per 90 for the rest of the season from only his first six gameweeks. Using the expected number misses by less than using the actual one in every season (the table shows the average miss, in ghost points per 90):

Average miss, ghost points per 90

2023/24

2024/25

2025/26

All three

Using GPts after six gameweeks

1.41

1.34

1.49

1.41

Using xGPts after six gameweeks

1.37

1.15

1.22

1.24


That's a 12% smaller miss across the three seasons and 18% smaller last year. Six games is not many starts, so what a player completed in that window is noisy, but what he attempted is steadier!


What's the Ideal Sample Size?

We took windows of 1, 3, 5, 10 and 19 games and asked how well each number, measured over that window, predicted the same player's ghost points per 90 over his next 10 games. The yardstick is the average miss: how far off the prediction was, on average. If a method said a player would produce 8 ghost points per 90 and he produced 10, that is a miss of 2. Across all the players, a smaller average miss means a better guide.




  • One game: guessing from what he actually scored misses by 3.1 ghost points per 90 on average. Guessing from his expected ghost points misses by 2.1, a third closer.

  • Three to ten games: expected is still the closer guess, but the lead shrinks, from misses about 20% smaller to about 10% smaller.

  • A full season: the two are level. Predicting next season, actual and expected ghost points score 0.69 and 0.68 on the 0-to-1 correlation scale from earlier. The best guess is a blend of both.


Why? over a few games, what a player attempts is steady and what he completes is noisy. Over a season the completions have evened out, and any real difference between expected numbers and results is more likely to be skill than luck. This means you should trust xGPts moreso for smaller windows of time!


How much of the gap is luck?

The easiest way to tell a lucky gap (between GPts and xGPts) from a real one is whether it repeats. We took every outfield player with 1,200+ minutes in two consecutive seasons (304 pairs) and measured how closely this season's gap predicts next seasons. The score runs from 0 (no relationship, pure luck) to 1 (the same gap every year).


Figure 3. Year-to-year persistence of the gap, per 90.


  • Returns gaps barely persist. Goals above xG: 0.13. All returns combined (FPts − xPts): 0.13. Assists above xA: 0.22. This is common knowledge and why xG & xA are so accepted (and xPts so useful)

  • Ghost gaps persist more. Combined, 0.40, with the individual stats running from 0.26 (shots on target, key passes) to 0.55 (dispossessions). Aerials won, clearances and interceptions all sit near 0.5.

  • Tackles won are the exception at 0.13. We expect them as a flat share of tackles attempted, so the gap is just tackle success rate, which turns out not to be a repeatable skill.


So, the gap between GPts and xGPts is part luck and part skill (certainly moreso than xG). Roughly 40% of a ghost gap shows up again the next season. For a returns gap it is about 13%. The clearest skill example is James Tarkowski's aerials won against expected: +17, +18, +19 and +18 across four seasons. At 1 point per aerial it is worth about 18 fantasy points a year, small but almost free because it turns up every season. He isn't alone: of 200 outfield players with three or four qualifying seasons, 52% had the same sign of aerial gap every year, against roughly 20% if it were a coin flip. Van Dijk (+0.71 per 90 over four seasons), Maguire (+0.63) and Konaté (+0.49) are the best of them.



One caveat: a persistent ghost gap is skill plus whatever the model doesn't know about a player's role. A full-back who always gets forward to cross may be a skilled crosser or just have a different role. Both persist, so it matters little for a manager, until the player changes team or role and the gap may not come with him.


What this means is that gaps between xGPts and GPts are not always luck. Looking at a players past gap can often give you a good indicator as to whether the over/underperformance is going to continue.


XXPts: Building the Complete Picture

Previously, xPts replaced a player's returns with expected ones. xGPts replaces his ghost points with expected ones. Do both and you get a number that sees the whole player's performance. XXPts (or extended expected points if you will, thanks FPLBoss):

xxPts = xPts + (xGPts − GPts)

Cards and own goals stay as they happened, because we have no model for referees. The gap between what a player scored and his XXPts splits cleanly in two, and that split is the point:

  • Returns gap = FPts − xPts: goals, assists, goals against and clean sheets above or below what the chances say they should be. This is almost entirely luck and not repeatable, with few exceptions.

  • Ghost gap = GPts − xGPts: tackles, dribbles, aerials and the rest above or below what the volume says they should be. This is partially luck and partially skill, so can be repeatable, but often is noise in short periods of time.


Which number to believe over half a season

We took 448 player half-seasons (800+ minutes in each half), split them into five groups by how far their first-half FPts sat above or below their XXPts, and looked at what each group did in the second half (1H and 2H below are first and second half).



First-half group

1H FPts/90

1H XXPts/90

2H FPts/90

Most over-performing

12.4

9.9

10.5

Over

10.5

9.5

10.0

Middle

8.9

8.6

9.0

Under

8.1

8.7

9.2

Most under-performing

7.4

9.3

9.0


The top fifth gave back 1.9 points per 90 and the bottom fifth gained 1.6, moving most of the way to their XXPts but not all of it. XXPts predicted second-half points better than actual FPts did: a correlation of 0.66 and an average miss of 1.94 per 90, against 0.62 and 2.21 for first-half FPts. Again, meaning you're better off trusting XXPts than FPts for a player's real level over a long period of time.


When it works, and when it doesn't

It works best for outfield starters in settled roles, which is most of your roster. It's also more useful when examining shorter period of times, as more gap/variance between performance and results (ala luck).


It's weaker when:

  • A player changes roles or teams. The model uses the role he played in that match, so a new system can change what to expect, and a ghost gap may not travel with him.

  • He takes the set pieces. Corners and penalties are only partly captured, so a dedicated taker can score above what his volume suggests consistently.

  • It's a goalkeeper. Saves are modeled well. Clean sheets and goals against are team results, so expect those to fade like any other returns.


How to Use XXPts Practically

  1. On a game to game level to see if a player had a meaningful, lively fantasy game use XXPts. Use it to assess whether they're performance was repeatable, lucky, or unlucky.

  2. Over longer periods of time, look at which gap it is before the total. A big gap that's mostly returns is the one to expect to fade (Semenyo was +70 returns of +89 in 2025/26). A big gap that's mostly ghost points (Tarkowski, van Dijk) is half real (aka there's more skill involved, not just luck). Van Dijk finished 2025/26 59 points above his XXPts, only 3 of them from returns (largely due to aerial "over-performance").

  3. Buy negative gap players, particularly those on the return side. If the chances are still being created, the points are coming. Inversely, sell a positive gap player who's over-performing expectations.

  4. Treat team-level returns as team-level luck. A defender's clean sheets and goals against depend on the whole team, so the gaps move together. If one Bournemouth defender is unlucky (hint Silva, Truffert), they all are. Buy the defence, not the player.

  5. Match the number to the sample. For a game or a month, lean on xGPts/xxPts. For a full season, lean on what he actually did.

  6. Don't over-correct. The top fifth of over-performers gave back about 75% of the gap, not all of it. A good player's season won't completely revert to the XXPts line either.


Where 2026/27 stands after six gameweeks

Six gameweeks is not many starts, so this is a watchlist and not a verdict. Here is every outfield player with at least five starts (138 of them), points per start, actual against expected.



Above the dashed line is scoring more (FPts) than the numbers say they should be (XXPts). In the tables, the gap is actual minus expected, split into the returns gap and the ghost gap from earlier.


Over-performing

Player

Starts

Actual /start (PPS)

Expected /start (XXPPS)

Gap /start

Returns gap /start

Ghost gap /start

Joao Pedro (Chelsea)

5

19.4

10.9

+8.6

+7.6

+0.9

James Tarkowski (Everton)

6

16.8

9.4

+7.4

+4.5

+2.8

Pascal Gross (Brighton)

6

19.5

12.6

+7.0

+5.8

+1.1

Josko Gvardiol (Man City)

5

15.7

9.3

+6.3

+5.9

+0.4

Maxim De Cuyper (Brighton)

6

15.9

9.6

+6.3

+6.2

+0.2

Mohamed Belloumi (Hull City)

5

15.4

10.1

+5.4

+4.5

+0.9

Morgan Rogers (Chelsea)

6

15.8

11.3

+4.5

+3.2

+1.3

Jarrad Branthwaite (Everton)

6

11.9

7.5

+4.4

+1.6

+2.8


Under-performing

Player

Starts

Actual /start

Expected /start

Gap /start

Returns gap /start

Ghost gap /start

Gonzalo Garcia (Fulham)

6

6.2

12.0

−5.8

−3.6

−2.2

Antonio Silva (Bournemouth)

6

6.7

11.1

−4.4

−4.7

+0.3

Adrien Truffert (Bournemouth)

6

6.0

9.7

−3.7

−3.9

+0.2

Oscar Bobb (Fulham)

6

5.6

9.2

−3.6

−2.4

−1.1

Adam Smith (Bournemouth)

6

0.7

4.1

−3.4

−3.2

−0.2

Igor Thiago (Brentford)

6

6.7

10.0

−3.3

−2.4

−0.9

Rayan (Bournemouth)

6

5.9

9.2

−3.3

−2.4

−0.9

Neco Williams (Nottingham Forest)

6

9.9

13.1

−3.2

−1.3

−1.9


Look at the last two columns first. Joao Pedro, Gross, Gvardiol and De Cuyper are almost entirely returns arriving faster than the chances behind them, which is the part to moreso expect to fade. Tarkowski and Branthwaite have a returns gap and a ghost gap of +2.8, and the ghost gap is half worth believing (so they'll likely come down but not all the way to their expected XXPPS). On the other side, four Bournemouth players (Silva, Truffert, Adam Smith, Rayan) are mostly returns, with ghost points close to expectation: a team that has conceded more than its chances against say it should. Buy the defence. Gonzalo García and Oscar Bobb at Fulham are under on both, so the volume is there and not much of it is coming off.




Ghost points above expectation

Player

Starts

Actual /start

Expected /start

Gap /start

Ethan Ampadu (Leeds Utd)

6

7.5

4.7

+2.8

Jarrad Branthwaite (Everton)

6

9.6

6.8

+2.8

James Tarkowski (Everton)

6

11.6

8.8

+2.8

Reinildo (Sunderland)

5

8.8

6.0

+2.8

Luke Shaw (Man Utd)

5

9.2

6.7

+2.5

Jack Rudoni (Coventry City)

5

8.1

5.9

+2.2

James Hill (Bournemouth)

6

10.2

8.1

+2.1

Milan van Ewijk (Coventry City)

5

7.8

5.7

+2.1


Ghost points below expectation

Player

Starts

Actual /start

Expected /start

Gap /start

Bruno Fernandes (Man Utd)

6

9.0

11.6

−2.6

Matt Grimes (Coventry City)

6

3.4

5.7

−2.3

Gonzalo Garcia (Fulham)

6

4.7

6.9

−2.2

Lewie Coyle (Hull City)

6

2.5

4.5

−2.1

Semi Ajayi (Hull City)

6

5.1

7.2

−2.0

Neco Williams (Nottingham Forest)

6

8.8

10.7

−1.9

Calvin Bassey (Fulham)

6

5.4

7.3

−1.9

Anan Khalaili (Crystal Palace)

5

8.0

9.8

−1.8


The over-performers are mostly defenders and defensive midfielders (Tarkowski, Branthwaite, Hill, Reinildo, Ampadu, van Ewijk, Shaw), which is moreso where persistent gaps live: aerials, clearances and interceptions. Of the under-performers, Fernandes and García are busy attackers getting little out of it, while Grimes, Coyle, Ajayi, Neco Williams, Bassey and Khalaili are deeper players whose volume hasn't turned into tackles, interceptions or clearances yet. Most of gaps like those tend to correction. You should trust the direction the numbers expect it to move, not necessarily the amount. I.e. expect both Bruno's GPPS & PPS to improve as a result, but maybe not fully to 11.6 GPPS.


Now what???

Going forward, the Draft Society will consistently be publishing expected ghost points (xGPts & XGPPS) and our new (extended) expected points (XXPPS) weekly in an upcoming new tool from DraftLad.



***Click here to view the full Ghost Point Tracker table!***


For all the latest from The Draft Society, follow @Draft_Society on Twitter!

And for more in-depth and exclusive resources, become a member of The Inner Circle.

The Draft Society, a Fantasy Football Community


Toolkit promo

Have you heard about our revolutionary new Draft Fantasy Football app? We call it The Fantasy ToolKit. Expand to read more!


Each gameweek, The Fantasy Toolkit will bring you:

  • Recommended waiver adds & drops

  • Optimal lineup suggestions

  • Matchup projections

  • Trade calculator

  • All in one customized and personalised package

It's included in our Ultimate Pass and Season Pass plans and will give you a massive leg up on your league-mates. Check out a full demonstration video HERE for more info!


Comments


bottom of page