How did bookmakers rate each Premier League team across the 2024-2025 season?

football
betting
statistics
I use Python to derive team ratings from Pinnacle Sports Asian handicaps, and visualize how each team’s rating changed throughout the 2024-2025 Premier League season.
Author

John Knight

Published

9 August 2025

I use Python to derive team ratings from Pinnacle Sports Asian handicaps, and visualize how each team’s rating changed throughout the 2024-2025 Premier League season.


If I asked you to rank the strength of the 20 Premier League teams, how would you do it? Gut feel? Last year’s table? Goal difference? Elo? xG? Perhaps you’d build a model?

Personally, whenever I want a quick ranking of teams or players in a sporting event, I head straight for the betting markets. Specifically, I look at either Betfair or Pinnacle.

Why these two? Because they are less restrictive on winning punters, which means their odds carry more useful information. The sharpest punters in the world, with very deep pockets, have pushed and pulled each price until it reflects their information.

I thought it would be interesting to see how the betting markets’ ratings for each of the Premier League teams evolved throughout last season. For this task, I used Pinnacle’s odds because historical closing lines are archived on the wonderful Football-Data website.

Python optimisation algorithm

Using Python, I estimated rolling team ratings from Pinnacle’s Asian handicap markets. Here’s how it works:

  1. Ratings are calculated for all 20 teams on any match day of the 2024-2025 season.
  2. Pinnacle’s Asian handicap line is used as the rating for each match (with an adjustment based on the odds).
  3. A single, season‑wide home advantage is set as the mean of odds‑adjusted handicaps.
  4. For each match date, teams playing that day use prev/current/next fixtures (3). Teams not playing use prev/next (2). First and last matchdays are not rated.
  5. Minimise the squared error between (home_rating − away_rating + H) and the odds‑adjusted handicap.
  6. Final ratings are normalized to ensure a mean of zero.

Here is how the ratings look over the course of the 2024-2025 season. I added LOESS smoothing to reduce noise and make the plot more readable:

Rolling Team Ratings

I did try to stick to team colours, but it soon becomes unreadable when multiple teams play in the same colour. Honestly it is amazing how many football teams play in red! I don’t know why that is the case - maybe some attachment to red during the Victorian era when clubs were formed? Anyway, I’m sorry to Brentford fans that you ended up as lime green.

Man City’s decline

As for the ratings: firstly we can look at the start of the season, and remind ourselves that Manchester City were still considered a class above the rest when the season kicked off, rated +1.61, more than half a goal ahead of Arsenal and Liverpool.

City had won the last 4 titles, and 6 of the last 7. It’s pretty easy to connect their decline last season to Rodri’s ACL injury, and we can see that City’s rating steadily got worse throughout the season, dipping as low as +0.62 before rallying at the end.

Now, I would introduce a note of caution with regards to ratings near the end of the season. Ratings are based on the odds for each individual match, and in the final few weeks there can be vast disparities in motivation between teams. While City had some must-win matches for Champions League qualification, many other teams in the league had no such incentive since the title and relegation places were all decided relatively early. And certain teams, most notably Tottenham, had evidently prioritised cup competitions.

Speaking of Spurs, we can see that in November they were still rated +0.51 and considered a team worthy of a Champions League finish. Indeed, they had some good results around this time, putting 4 goals past West Ham, Aston Villa and Man City, but were struggling with consistency. A horrendous injury crisis then led to a loss of form and confidence, and a subsequent shift of focus to the Europa League, which they won, but their rating had declined by more than a full goal by the season’s end.

It was a somewhat similar tale for Manchester United, whose rating opened at +0.46 and closed at -0.46. Despite the loss of revenue as a result of the defeat to Spurs in the Europa League final, United have conjured another huge amount of money to buy new forwards over the summer, and it will be fascinating to see whether these two teams perform like “big 6” clubs, or more like they were rated in May: 16th and 17th in the Premier League.

The other notable decline was from Southampton. Obviously it was an appalling season for the Saints - one of the all-time worst PL seasons in fact, as they secured only 12 points. But it’s easy to forget that they actually came up looking like the most likely to survive of the three promoted teams. At the start of the season, Southampton were rated at -0.69 compared to Ipswich at -1.10 and Leicester -1.12.

Things quickly went downhill, and Southampton’s struggles emphasise the difficulty of sustaining a front-foot, possession-based strategy when transitioning from the Championship into a league where you are going to be playing against vastly superior talent.

On the rise: Newcastle, Aston Villa, Bournemouth et al.

On the flip side, there were numerous teams that improved as the season wore on, relative to their ratings in August. Newcastle and Aston Villa were both considered outsiders for a Champions League place, and the Geordies clearly benefitted from an absence of European football that had proved such a burden the previous season.

Villa, meanwhile, were distracted by their own run to the Champions League quarter-finals, and it is notable that their form picked up in the second half of the season after the slog of the newly expanded league phase was over. In fact, Villa ended the season with a rating of +0.68 which put them marginally ahead of Arsenal in third place. That rating is partly helped by a fortuitous fixture list which gave them both Europa League finalists Spurs and Manchester United in their final two games, and they will be desperately disappointed to have been well-beaten by the latter in their crucial last game.

One of the great success stories in recent seasons has been Bournemouth, whose stock rose steadily throughout the season. The Cherries were rated as genuine European contenders (+0.42) at the season’s end, and it will be interesting to see how they can withstand the loss of key defenders Dean Huijsen, Illia Zabarnyi and Milos Kerkez, all of whom have been picked off by European giants.

Interestingly, despite spending much of the season in the top four, Nottingham Forest were never rated higher than mid-table, peaking at +0.05 in February. This is a good example of the cold-headed realism markets offer, while fans and TV pundits can be prone to hyperbole when they don’t have money on the line.

One pattern that emerges is a more compressed league by the end of the season. Arguably that is partly down to Liverpool and Arsenal easing off after the title had been decided. But it is also because the smaller teams that might traditionally struggle, like Bournemouth, Fulham and Brentford, all surpassed expectations.

Good luck to Leeds, Burnley and Sunderland

The bleak outlook for promoted teams has been well documented, and normally there are a few teams who narrowly escaped the drop the previous year who may be vulnerable. But with Wolves and Everton also improving after managerial changes, there is a lack of obvious candidates to go down from last year’s 17. I’m sure some will mention Spurs or United for banter purposes, but realistically if any of the new boys are going to survive, it will be because one of the smaller clubs has an unexpectedly bad year, perhaps because of injuries they don’t have the depth to withstand.

Final thoughts & the 2025-2026 season

Even if you are someone with the self-confidence to think you know better (which is most of us, if we are being honest) it’s important to be aware of the betting markets’ overall rating of teams.

If you are interested in the Python code I used for this project, feel free to check out my Github repo. I’ll probably run this code on the forthcoming season to keep track of where each team stands on a weekly basis. With only opening‑weekend prices available, there isn’t enough data to run the rolling optimisation (you need previous & next matches for context) so I’ll publish weekly updates from week two. Watch this space!

© 2025 John Knight. All rights reserved.