I have spent last season tracking every Premier League match through my own model, logging xG, xPTS, shots and many underlying metrics, for and against, home and away, across all 20 clubs.
Now the season is over, I have gone back through the data and compared it with the actual final tables, overall, home and away, to find where the underlying numbers told a different story to the results.
Most of the time the two line up reasonably well. Teams creating good chances tend to score enough of them and finish somewhere close to where the underlying numbers suggest they should. This season produced some major exceptions though, in both directions, and those are the ones worth looking at more closely.
Crystal Palace could not buy a goal
No side in the Premier League underperformed its chance creation quite like Crystal Palace. Palace scored 41 goals from almost 58 xG, a shortfall of around 17 goals and comfortably the biggest finishing underperformance in the division. That translated directly into points too, 45 actual against 55.9 xPTS, a gap of almost 11 and the second biggest points shortfall behind only Wolves.
It was not simply one bad part of the season either. At home, Palace scored only 19 goals from 31.5 xG, a huge 12.5 goal difference, and collected 21 points against 29.8 xPTS. That home return alone explains a large part of why they finished 15th rather than pushing towards the top half.
The shot data makes the problem even clearer. Palace had 159 shots inside the box at home, only slightly below some of the better attacking sides in the league, but converted only 32.8% of their 58 shots on target inside the box. The Premier League home average was 48.5%.
Palace created enough chances. They simply did not finish enough of them.
Sunderland's defence was the real story of their promotion season
Sunderland finished seventh and comfortably clear of the bottom half, but their attacking numbers were almost exactly where the model expected. They scored 42 goals against 41.5 xG, so there was almost no overperformance at that end of the pitch.
The defence is where it gets interesting. Sunderland conceded only 48 goals from 60.6 xGA, outperforming the model by more than 12.5 goals across the season. Crucially, that was not simply driven by their home record. They conceded 5.8 fewer goals than expected at home and another 6.9 fewer away.
The points model shows just how significant it was. Sunderland collected 54 points against only 41.65 xPTS, the biggest overperformance anywhere in the Premier League. That split reasonably evenly by venue too, 33 home points against 24.43 expected and 21 away against 17.22 expected.
Whether the difference came from goalkeeping, their defensive structure or a settled back line, Sunderland consistently conceded fewer goals than the quality of chances they allowed suggested they should.
Manchester City's runner up finish leaned on volume as much as quality
Manchester City finished second, but even their strong final position came with some significant overperformance underneath it. They scored 77 goals from 68 xG and conceded only 35 from 44 xGA, outperforming the model at both ends.
The points followed the same pattern, 78 actual against 68.23 xPTS, a gap of almost 10. Most of that defensive and points overperformance came at home, where City conceded only 14 goals from 22 xGA and collected 45 points against 36.15 xPTS, the biggest home points overperformance in the league.
The interesting part is their attacking numbers. It would be easy to put City's home output down to elite finishing, but they converted 48.4% of their shots on target inside the box, strong without being exceptional and below Liverpool's 57.6%.
What separated City was volume. They generated 213 shots inside the box at home, more than any other team in the sample. Their attack was built around repeatedly creating chances rather than relying on an extreme conversion rate.
Wolverhampton Wanderers were bad and then unlucky on top of it
Wolves finished bottom and the model already rated them as the weakest side, but their actual results were considerably worse than even that poor underlying process suggested.
They collected only 20 points against 41.01 xPTS, a shortfall of 21, comfortably the biggest negative gap in the division. Away from home it became even more extreme, only six points collected against 18.18 expected.
Finishing was a huge part of the problem. Wolves scored only eight away goals from 18.7 xG, a shortfall of almost 11 and the biggest attacking underperformance of any home or away split in the league. They still generated 96 shots inside the box and put 40 on target, but converted only 20% of those efforts against a league away average of 43.5%.
Their home defence went the other way, conceding 34 goals from 26 xGA, while Wolves collected only 14 home points against 22.83 xPTS.
Wolves were poor by the underlying numbers, but they were also significantly unlucky on top of being poor.
Nottingham Forest were two different teams
Nottingham Forest's season makes far more sense when you split their home and away numbers.
At home they scored only 20 goals from 28.8 xG, a shortfall of almost nine. Away from home they went completely the other way, scoring 28 from only 19.6 xG, outperforming the model by more than eight goals.
The points tell almost exactly the same story. Forest collected only 20 points at home against 29.23 xPTS, but took 24 away against an expected 18.67.
Their finishing numbers support the split too. Forest converted only 39.2% of their shots on target inside the box at home compared with 47.5% away.
Across the full season those extremes partly cancel each other out, but the home and away split shows two completely different versions of the same team. Forest consistently underperformed their process at home while doing the opposite on the road.
Liverpool's away defence had a crack in it
Liverpool's overall numbers look fairly normal. They collected 60 points against 61.08 xPTS, almost exactly where the model expected them to finish.
The interesting number sits in their away defence. Liverpool conceded 33 goals on the road from 27.8 xGA, more than five goals worse than the quality of chances they allowed suggested.
That also showed up in their away points return, 24 actual against 26.88 expected.
It is nowhere near as extreme as Wolves, Sunderland or Palace, but it is worth watching. Liverpool's overall season matched their underlying numbers closely, while their away defence was one area where the actual results were noticeably worse than the process.
Burnley's relegation was mostly about away defending
Burnley's relegation was not a case of bad luck. They finished with 22 points against 22.08 xPTS, almost a perfect match between actual results and the model.
The way they got there is more interesting. Burnley scored 38 goals from only 30.5 xG, while at home they conceded 29 from 36.8 xGA, outperforming expectation at both ends in different ways.
Away from home was where the real damage was done. Burnley conceded 46 goals against 38.9 xGA, more than seven worse than an already poor underlying defensive process.
Their overall numbers were never good enough to suggest they deserved to survive, but the away defence made a bad season even worse. Burnley are a good example of why the final points total alone does not always explain what happened underneath it, even when the model and actual table finish almost perfectly agree.
Tottenham's home form was the league's quietest collapse
Tottenham finished 17th with 41 points against 49.93 xPTS, already one of the bigger underperformances in the league. Almost all of that gap came at home.
Spurs collected only 15 points from 19 home matches against 25.21 xPTS, a shortfall of more than 10 and the biggest home points underperformance anywhere in the division.
Away from home they were almost exactly where the model expected, taking 26 points against 24.72 xPTS.
The individual goal differences were less dramatic. Tottenham scored 22 home goals from 24.6 xG and conceded 31 from 26.5 xGA. Neither looks particularly extreme in isolation, but put them together across a full home season and the points disappeared quickly.
Tottenham's overall numbers suggest a team that underperformed. The venue split tells us where it happened. Almost all of the damage was done at home.
Three quiet overperformers: Aston Villa, Manchester United and Fulham
Not every anomaly needs an extreme finishing collapse or defensive overperformance. Aston Villa, Manchester United and Fulham all finished comfortably ahead of their xPTS numbers, but each did it slightly differently.
Aston Villa collected 65 points against 55.18 xPTS, a gap of 9.82 and the second biggest overperformance in the league. Unlike some of the teams above, there is no single extreme number explaining it. Villa finished 5.33 points above expectation at home and 4.49 away, scored 56 goals from 53 xG and conceded 49 against 46.8 xGA. They simply collected slightly more than the underlying numbers expected across both venues and both ends of the pitch.
Manchester United followed a similar pattern. Their 71 points came against 62.32 xPTS, a gap of 8.68, split between 3.53 points above expectation at home and 5.16 away. They scored 69 goals from 64.5 xG and conceded 50 from 47 xGA, with no single huge anomaly driving the difference. United consistently squeezed more points from their performances than the model expected.
Fulham are the exception because almost all of their overperformance came at home. They collected 35 points at Craven Cottage against 28.93 xPTS, a positive gap of 6.07, while their 17 away points were actually below the 19.40 expected.
The goals follow the same pattern. Fulham scored 30 at home from 26.1 xG but managed only 17 away from 21 xG. Their overall season therefore hides a clear venue split. Fulham's final position was built heavily on outperforming their underlying numbers at home.
GambleAware