Today is Valentine’s Day so let’s do the most romantic thing possible: use a model to put all 31 NHL teams in order from best to worst. After all, what is this day about if not forcing an inherently nebulous and unmeasurable concept into a small box where we can simplify it and market it to people?
The model we use here is a Bradley-Terry, which is a pairwise ranking system that orders the teams based on how well they’ve played against their competition. So beating the Penguins 4-2 is better than beating the Red Wings 4-2 and so on. We also use two different versions of the model. The secondary version is based on goals as described in the previous sentence. The primary model uses the same approach but replaces actual goals with expected goals in order to remove some of the variance associated with goal outcomes.
We last did this exercise at the end of January and the Lightning were well in the lead at that time. So let’s take a look at where we are now. All data for this model comes from Natural Stat Trick.
As recently as yesterday, the Lightning were still in the top spot. But Vegas’ impressive showing last night against the Blues where they generated 72% of the expected goals pushed them past the Lightning into first place.
The first thing that sticks out to me here is that using this method, we’re identifying a defined top four. Vegas, Tampa, Pittsburgh, and Boston appear to be the strongest teams in the NHL based on their game by game results. At the other end of the spectrum, the Red Wings continue to be aggressively worse than anyone else both in terms of goals and expected goals. They’re rolling through the NHL with the most impressive tank since the 14-15 Sabres.
The next plot shows the distributions of individual game outcomes for all 31 teams.
The Kings are another fun team to view in this way. The difference between their expected and actual goal results is enormous. By xG, the model ranks them as the 10th best team in the NHL. By actual goals, the second worst. That is a massive gap and we can see it in their distributions. The blue curve is shifted far to the left, while the orange one is a little bit above average.
We can also use the power ranking to get a quick view of each team’s strength of schedule.
With teams having played close to 60 games, we’ve reached the point in the season where strength of schedule is mostly negligible. The dotted lines represent the average difficulty and the teams are arranged from hardest schedule to easiest. While the distributions are different, the result is that on average, teams have all faced similar quality of competition.
The last plot in this exercise shows how each team has performed against varying levels of competition.
A flat trend line means teams get the same results all levels of competition. A line that slopes down to the right would indicate that a team gets worse results against good teams, which would be expected. As an example, the Lightning appear to get similar results regardless of the level competition. By contrast, the Leafs seem to struggle with better teams.
With about 25 games left for most teams, the stretch run begins now. We’ll revisit these rankings next after the trade deadline. The Penguins already made a big splash by acquiring Jason Zucker from the Wild. In a couple weeks, we’ll find out whether the other three teams that join them at the top of the rankings made moves to keep pace.
Code: The code to reproduce the model and the viz in this article can be found on my GitHub. I know my code is bad and ugly. View it at your own risk. And please do not bully me.