This is our old blog. It hasn't been active since 2011. Please see the link above for our current blog or click the logo above to see all of the great data and content on this site.

NHL Elo Player Rater

Posted by Justin Kubatko on March 20, 2011

Today I would like to introduce a new feature that I think will be a lot of fun: the NHL Elo Player Rater.

The Elo rating system is a method for calculating the relative skill levels of players in two-player games. The creator of the system, Arpad Elo, was a professor of physics at Marquette University who wanted an improved chess rating system. Although the system has its roots in chess, today it is used in many other games.

We decided to take Elo's work and apply it to the ranking of hockey players. Our player pool consists of all NHL players who meet at least one of the following career criteria:

  • 200 goals (skater)
  • 300 assists (skater)
  • 150 wins (goalie)
  • 3 NHL All-Star games (skater or goalie)
  • 3 NHL All-Star teams (skater or goalie)

All players have an initial rating of 1500 points. These ratings are then updated by randomly selecting pairs of players and having them "play" each other.

We start by computing the win probabilities for each player (let's call them A and B):

P(A wins) = 1 / (1 + 10^((RB - RA) / 400)) P(B wins) = 1 / (1 + 10^((RA - RB) / 400))

where RA = rating for A RB = rating for B

After the winner has been determined, the ratings of the two players are adjusted. If A wins the match then the new ratings are:

RA_new = RA + K * P(B wins) RB_new = RB - K * P(B wins)

The "K" above stands for the "K-factor" and has a value of 10.

While if B wins the match then the new ratings are:

RA_new = RA - K * P(A wins)
RB_new = RB + K * P(A wins)

For example, suppose Wayne Gretzky ("WG") has a rating of 2500 and Mario Lemieux ("ML") has a rating of 2450. The win probabilities for each player are:

P(WG wins) = 1 / (1 + 10^((2450 - 2500) / 400)) = 0.571
P(ML wins) = 1 / (1 + 10^((2500 - 2450) / 400)) = 0.429

If WG wins then the new ratings are:

WG_new = 2500 + 10 * 0.429 = 2504
ML_new = 2450 - 10 * 0.429 = 2446

While if ML wins then the new ratings are:

WG_new = 2500 - 10 * 0.571 = 2494
ML_new = 2450 + 10 * 0.571 = 2456

Here are a few more notes about the way we have chosen to implement the Elo rating system:

  • This is a community-based project with the goal of rating the best players in NHL history. In each matchup, the user should choose the player who they believe was the better player. It is up to the user to determine how much weight to give to offense versus defense, peak value versus career value, regular season versus playoffs, etc.
  • Before opening this up to the public we simulated thousands of matchups in order to give the players more realistic starting ratings. These starting ratings do not necessarily represent the opinions of the owners of this site.
  • Pairs are not chosen completely at random. The first player is randomly selected to begin the process. Following that, a second player with a rating within 250 points of the first player is randomly selected to complete the pair. We did this in order to prevent bizarre choices (e.g., Tiger Williams over Gordie Howe) from distorting the ratings.

As always, please send us some feedback if you have any comments or questions.

Comments are closed.