“The league table never lies!” and it usually doesn’t, but sometimes, there’s a bit more that can be extracted from league results, especially during the early parts of the season. If a team has faced difficult opponents, but has the same number of points as another team with a much easier schedule, then the points’ total may not reflect the whole picture. This is an attempt to produce an alternative league table which takes into account the strength of schedule faced by each team. For lack of a better name, I’ve called it the Schedule-Adjusted League Table.
The idea behind the Schedule-Adjusted League Table is to compare the teams based on their results against the same opponents. Using the Premier League as an example, take Arsenal and Tottenham. As of the 11^{th} of November, these are their matches played:
Arsenal Matches | Tottenham Matches | ||
Opponent | Venue | Opponent | Venue |
Man City | Home | Newcastle | Away |
Chelsea | Away | Fulham | Home |
West Ham | Home | Man United | Away |
Cardiff | Away | Watford | Away |
Newcastle | Away | Liverpool | Home |
Everton | Home | Brighton | Away |
Watford | Home | Huddersfield | Away |
Fulham | Away | Cardiff | Home |
Leicester | Home | West Ham | Away |
Crystal Palace | Away | Man City | Home |
Liverpool | Home | Wolves | Away |
Wolves | Home | Crystal Palace | Away |
Out of their 12 matches each team has played so far, there are 4 of them that are against the same opponents, at the equivalent venue (home or away). These are shown in the following table, accompanied by the number of points each of Arsenal and Tottenham have secured in each match:
Arsenal | Tottenham | ||||
Opponent | Venue | Result | Points | Result | Points |
Man City | Home | Lost | 0 | Lost | 0 |
Newcastle | Away | Won | 3 | Won | 3 |
Crystal Palace | Away | Drew | 1 | Won | 3 |
Liverpool | Home | Drew | 1 | Lost | 0 |
Of these 4 matches, Tottenham took 6 points (or 1.50 per game) whereas Arsenal took 5 points (1.25 per game). Using the same basis to compare these two teams, we might argue that Arsenal are slightly worse than Tottenham at a rate of 1.25 – 1.50 = -0.25 points per game.
Let’s now turn our attention to another pair, Arsenal and Man United. Using the same procedure we find that these two teams have both faced the following 4 opponents at the equivalent venues:
Arsenal | Man United | ||||
Opponent | Venue | Result | Points | Result | Points |
Chelsea | Away | Lost | 0 | Drew | 1 |
Everton | Home | Won | 3 | Won | 3 |
Leicester | Home | Won | 3 | Won | 3 |
Wolves | Home | Drew | 1 | Drew | 1 |
Man United took 8 points (2.00 per game) from these 4 matches, whereas Arsenal had 7 points (1.75 per game). This would suggest that Arsenal are slightly worse than Man United too (also at a rate of -0.25 per game). So let’s now compare Man United with Tottenham. Same drill as before, here are their 3 common opponents:
Man United | Tottenham | ||||
Opponent | Venue | Result | Points | Result | Points |
Brighton | Away | Lost | 0 | Won | 3 |
Watford | Away | Won | 3 | Lost | 0 |
West Ham | Away | Lost | 0 | Won | 3 |
Man United took 3 points whereas Tottenham had 6. There was also a match between the two teams which ended in a win for Tottenham, so out of these combined 4 matches Man United had 0.75 points per game whereas Tottenham had 2.25 (a difference of -1.50 points per game from Man United’s point of view).
Overall, there are 190 pairs of teams in the Premier League which we need to compare. Note that the pair Arsenal-Tottenham is the same as the pair Tottenham-Arsenal. We can compute the relative difference in points per game for each of these pairs and then solve an overdetermined system of equations (190 equations with only 20 unknowns) to find the rating for each of the 20 teams. As there will most likely be no exact solution to the system, we estimate the solution by minimizing the sum of squared errors.
More specifically, for a 20-team league, we construct W, a 190 x 20 matrix (one row for each pair of teams, one column for each team), a 20 x 1 vector x, which stores the ratings of each team (to be calculated) and a 190 x 1 vector r which has the relative difference in points gained per match. The W matrix consists of 0s apart from the column corresponding to the pair’s first team where the matrix element takes the value 1, and the column corresponding to the pair’s second team where the matrix element takes the value -1. To illustrate this, in a 4-team league, where there would be a total of 6 pairs, the W matrix would be given by:
(Team A) | (Team B) | (Team C) | (Team D) | |
(Pair A-B) | 1 | -1 | 0 | 0 |
(Pair A-C) | 1 | 0 | -1 | 0 |
(Pair A-D) | 1 | 0 | 0 | -1 |
(Pair B-C) | 0 | 1 | -1 | 0 |
(Pair B-D) | 0 | 1 | 0 | -1 |
(Pair C-D) | 0 | 0 | 1 | -1 |
Essentially, the system that we need to solve is defined by Wx = r. As there will generally be no solution to the system, we can approximate it by minimizing the sum of squared errors, which leads to the ratings solution vector given by:
x = (W^{T}W)^{-1}W^{T}r
where the inverse is a generalized inverse. Once the ratings solution vector x is calculated, a suitable scaling is applied – huge thanks to Christopher D. Long (@octonion) for the help provided in this part – and the schedule-adjusted points for team i is given by:
AdjPts_{i = }m_{i }* (x_{i} + TotPts/2n)
The results from this analysis in tabular and graphical form are presented below (after 12 Premier League matches):
Actual Points | Adjusted Points | |
Man City | 32 | 33.67 |
Liverpool | 30 | 30.94 |
Tottenham | 27 | 29.57 |
Arsenal | 24 | 26.61 |
Chelsea | 28 | 26.44 |
Man United | 20 | 22.4 |
Everton | 19 | 19.5 |
Watford | 20 | 18.46 |
Wolves | 16 | 18.04 |
Bournemouth | 20 | 18.03 |
Leicester | 17 | 17.22 |
Brighton | 14 | 14.54 |
West Ham | 12 | 13.86 |
Crystal Palace | 8 | 9.32 |
Newcastle | 9 | 7.18 |
Huddersfield | 7 | 7.11 |
Burnley | 9 | 6.71 |
Southampton | 8 | 5.87 |
Cardiff | 8 | 5.45 |
Fulham | 5 | 2.08 |
This methodology would suggest that teams like Arsenal, Tottenham, Man United and Wolves have registered points’ totals which underestimate the true value of those wins and draws. On the other hand, the value of the points gained by teams like Fulham, Cardiff, Burnley and Southampton is in fact lower, once the strength of teams they faced is taken into consideration.
We can also view how the schedule-adjusted points compare against the actual points on a gameweek-by-gameweek basis in the following animation:
In a sense, teams above the 45-degree orange line are shortchanged as the true worth of their points gained is more than the league table would suggest, whereas teams below it may be viewed as having a deceptively high number of league points given the true worth of those points. Alternatively, one could view the teams’ ranking on the horizontal axis as the actual league table and the teams’ ranking on the vertical axis as the schedule-adjusted league table. As the season progresses, the points will approach the diagonal, before lying exactly on it in their final ranking, whichever that may be.
Some additional notes on the methodology:
It should be stressed that this methodology can be extended and applied to other similar situations irrespective of the metric used. For example, given its recent popularity, one could use it to assess the true worth of xG figures registered by teams, once the difficulty of the opposition has been taken into account.
So there you have it! This piece provides the idea and the methodology to produce schedule-adjusted rankings. Next time someone points at the league table to support an argument, get your calculator out and check if that table is indeed telling the truth. Happy schedule-adjusting!