Football Elo revisited
Revisiting football club elo data to analyse the current state of top English clubs.
Long ago, I’d discovered data from clubelo.com which gives an chess-style Elo ratings to football clubs. While this has little to do with trophies and relegation, it is a great way to analyse underlying performance of a football club, since it takes into account all games played.
I’d done a bunch of analyses then, such as:
Liverpool’s evolution over the years
And then like I’m likely to do, promptly forgot about it. Until this weekend when I saw some post about football and Elo - yeah this one from Nate Silver about his PELE model, when I decided to resurrect this.
Given the tooling that I have now (Codex (which I used for this one), Claude Code, etc.), this was rather simple. I just pointed Codex to my football folder on my laptop, asked it to organise, clean up and push to git all the code there,
Then I asked it to update the data, for which I think it updated the script (I haven’t bothered seeing it). And then asked for a couple of pieces of analyses.
Liverpool under Klopp and Slot
First, I wanted to see Elo wise, how Arne Slot (who got recently booed by the supporters after an utterly depressing draw with Chelsea) has fared. I simply asked Codex to take the Klopp and Slot period data and annotate it with key events. There was a bunch of back and forth prompting, and then I got this:
I’d never really analysed the Klopp era beyond 2019, so this is a good time to do so - he took Liverpool on an absolute bull run until early 2020 (I suspect the big drop there is the loss to Watford in the title winning season, or could be some data issues), and then there was the slip in 2020-21 (when pretty much the whole backline got injured).
Then there was another massive bull run in the near-quadruple season of 2021-22, and then yet another inevitable drop. Now, the interesting thing is that there wasn’t that much improvement in Klopp’s final season, when Liverpool mounted a strong title challenge before fading away in the final month. After the steep decline of 2022-23, he just held the club steady (with a new midfield) before handing over the reins to Slot.
Slot, of course, started off rather well, leading a massive bull run culminating in the league title. There were signs of small drops late last season (after the title had been won), and that has sustained into this season when Liverpool are still fighting for a Champions League place.
The new English Big Three
Next, I wanted to look at Arsenal’s recent rise, and how that stacks up against Manchester City and Liverpool, who between them have won all titles since 2017. The prompt was again simple:
› now one more graph overlyaing elos of Arsenal, Liverpool, Manchester City from 2017 onwards, with key points marked on each line. use publicly available data to do this
That was sufficient to produce this rather insightful graph. Yes, it was a one line prompt (deep into the conversation) that produced this (it has access to my data visualisation skill).
While Arsenal and Manchester City might be fighting for the title at the time of writing, Elo wise, Arsenal are far far ahead. In fact, they’ve been on a largely secular bull run since the time Arteta was appointed (and were far behind ManCity on the Elo front during their close title loss in 2024), and were rather close to Liverpool during last season’s title run (which was won comfortably by Liverpool).
There are more such stories you can glean from looking at the club historical Elos. You can find data for all Premier League clubs here (this is an old Shiny app I’d built in 2019 or so; again it took 2-3 commands for Codex to update it). The code for it is on my git.
A note on LLM data analysis
I might have alluded to this in other posts as well, but the great thing about LLMs is that you can do some piece of analysis once, and then all the repeatable work can be outsourced to the LLM. Basically all the boring work gets taken away. While I’ve been bearish in general on conversational analytics chatbots, I’ve now come round to the view that if you can give them context of the data team’s work, they can be great for “follow up work”, translating work from one part of the company to the other, etc.
They can also interpret data for you. I asked Codex to “write 6-7 bullet points on the Arsenal, ManCity, Liverpool graph” and it produced this:
- Liverpool’s rise under Klopp is the sharpest slope in the chart. From roughly the mid-1800s in Elo in 2017, they surge past both Arsenal and City by the 2019 Champions League win, and then pull even further away when the 2020 Premier League title is confirmed.
- Manchester City’s line is less about one dramatic jump and more about staying outrageously high for outrageously long. Even when the 2017-18 title was confirmed, City were already near the top, and they mostly stayed there.
- City’s real “we own this era” moment is the 2023 treble. Liverpool hit their peak earlier, but City’s line spends more time in the elite stratosphere, which is why the graph reads as dynasty rather than just greatness.
- Arsenal are the clearest regime-change story. Before Mikel Arteta’s appointment in December 2019, their Elo is drifting around the low 1800s. After that, the line turns upward almost structurally.
- The 2023 Community Shield win over City looks small in football-history terms, but on this graph it sits in the middle of Arsenal’s transition from “improving side” to “genuine elite”.
- The 2023-24 title race shows up beautifully in the data. Arsenal keep rising, but City do not blink, which is why City finish with a record fourth straight league title even while Arsenal increasingly look like the next dominant team.
- The present-day picture is the interesting part: Arsenal are now highest, City remain the long-run benchmark, and Liverpool - despite the biggest recent peak and the Klopp farewell still hanging over the chart - look more like a side searching for a second act than the one setting the standard.
Judge it as you may!




For City, it will be interesting to do this analysis a year post Pep's leaving. I have so many forks which I want to do from your git (including the election one) but no time!