When Analytics and Video Games Meet: Reworking NHL 20’s Ratings Using Real-Life Data

When Analytics and Video Games Meet: Reworking NHL 20’s Ratings Using Real-Life Data

EA Sports, It’s In The Game

Simply hearing those few words brings back memories of the countless hours I and many others have sunk into the different EA sports titles. FIFA may be the best-selling game but as a hockey fan, the NHL series has been near and dear to my heart for years. NHL 04 on PC was my first ever, with Thrashers’ Dany Heatley on the cover before he was replaced by Joe Sakic. It’s also around that time my hockey fandom really kicked off. I’ve always been more of a GM/Franchise mode player, so player ratings have always been of particular interest to me.

I remember Peter Fosberg being the highest rated player in the game at a 97, 3 points higher than anybody else. I remember Alex Kovalev, who instantly became my favorite player after being traded to the Canadiens because he was the only 90+ rated skater on the team.

With the hockey world going into lockdown in March, right as the playoffs were about to kick off, NHL 20 was the best way to get my hockey fix. This time, however, instead of hopping into franchise mode, I went to the rosters page. Now, we all know the rating system isn’t perfect. Boiling things down to one number is nearly impossible, especially when there are so many different ways to be an effective hockey player. 

EA has done a solid job of placing players in a logical overall range for the most part. However, there are some red flags that come up for me when looking at the individual attributes. Here are a few examples:

In EA’s most recent roster update (March 30th), Duncan Keith is as fast as Patrick Kane, both at 90 speed. Alex Ovechkin has a better stick check rating (89) than Jaccob Slavin (88), despite the Hurricanes defenseman having one of the best and most active sticks in the NHL and totaling the second-most stick checks in 2019-20.

Same goes for goalies, as Frederik Andersen has a 90 five-hole rating despite being beat 26 times between the legs this season, 3 times more than runner-up Braden Holtby and one of just 3 goalies to allow 20 such goals this year. Connor Hellebuyck, meanwhile, has allowed just 17 in about 400 more minutes and has an 89 five-hole rating.

Now, I understand that determining player attributes for the nearly 900 skaters and 60+ goalies who made at least one appearance last season is a massive task and that doesn’t even take into account the AHL, SHL, DEL, CHL, and multiple other leagues EA has to also rate. Still, with all this time with no hockey to cover, I decided to try my hand at updating the NHL 20 rosters myself but with an analytical approach, based on real-life data from Sportlogiq.

For every player who took the ice this season, we track over 200 different events per game that range from pretty straightforward stats like shots and shot locations to more granular things like puck on stick time for skaters and save percentage by area of the net for goaltenders. 

With all those metrics to my disposition, I wanted to see if I could come up with a way to rework the ratings system in NHL 20 and help make players more closely resembling their real-life counterparts. It took many hours of data compiling, playing around in excel sheets, and manually entering the new ratings in-game and the results are definitely interesting. 

The Process

For each skater, I took nearly 60 data points into consideration to rework the attributes and over 30 for goaltenders. Most of the statistics used were per-20 for skaters and per-60 for goaltenders. There was also a playing time threshold to remove small sample size outliers. I settled on 20 games for skaters and 650 minutes played for goalies. 

I needed to normalize the data a bit because comparing percentages with seconds and per-20 averages would be a headache. I settled on using percentile ranks. That way, every statistic is on the same 0-100 scale, making it much easier to work with data in different formats. Also important to note that forwards and defensemen were graded on separate percentile scales.

I then classified each data point under the relevant attribute. Some were extremely obvious, like stick checks going under stick checking, others weren’t as straightforward, like controlled entries and exits going under speed. Each in-game attribute had at least 2 or 3 statistics taken into consideration, with some having over 10.

In most categories, I also added some form of time on ice variable after running into many issues of small sample sizes being overvalued. Anton Khudobin, for example, consistently graded out as one of the best goalies in the league in nearly every category and ended up being around a 90 overall in my first few attempts. 

Nobody would say Khudobin should be rated in the 90s, but he did post a .930 save percentage and a 2.22 goals against average, which ranked first and third respectively this season. He hit those numbers on just 26 starts though, 46th in the league. Khudobin and Jordan Binnington both saved roughly 0.3 goals above average per 60 minutes for their respective teams. However, Binnington did so over 50 starts, nearly twice as many as Khudobin, therefore Binnington would receive a higher rating because he maintained his level of play over a larger share of games.

Adding total minutes played for goalies and time on ice per game for skaters was my way of rewarding players who maintain a strong level of play while also handling a heavy workload. 

Now, for the process itself, I’ll use Braden Holtby’s five-hole attribute as an example. To make up the number that will later be entered in the game, I used three data points: five-hole save percentage, five-hole actual to expected goals, and time played. Each data point was represented by Holtby’s percentile ranks, which are as follow:

Five-hole save %: 16th percentile

Five-hole actual to expected goals: 23rd percentile

Time played: 84th percentile

In the case of the five save stats, all three data points were weighted equally, each making up 33.3% of the final number. The weighing will vary in different categories and will not always be an even split. This gives Holtby a 41 rating. Now, I can’t take that 41 as-is and input it as Holtby’s five-hole attribute for a couple of reasons. 

First, the lowest a player attribute can be in NHL 20 is 36, not 0. Holtby’s 41 would be one of the worst possible in the game when it is actually more middle of the road.

Second, EA has more than just the NHL to worry about. Players from all leagues, going from the AHL to the various CHL junior leagues as well as European pro leagues like the SHL, need to work within the same overall system. Holtby’s five-hole was weak this year by NHL standards, but there’s no way it would be a 41. That would make him worse than 16-year-old backup goaltenders playing junior hockey. That won’t do.

To work around that, I needed to take this new five-hole rating and put it on an NHL-caliber scale. To achieve this, I used a bell curve to bring everybody up to NHL standards. This basically takes all the new ratings and forces them into a new range. 

After some trial and error, I settled on 75 being the minimum and 95 being the maximum. I kept the maximum at 95 because EA has gone with lower attributes in recent years and hasn’t doled out any 99 that I could find, at least not outside of Ultimate Team, so this allowed me to keep things within a range that still looked legitimate to what players are used to with the base game. I went with 75 for the minimum, because anything lower than this isn’t considered NHL caliber anymore and all the eligible players had at least 650 minutes of ice time this season.

This means that Malcolm Subban, who posted the worst five-hole rating at a whopping 8, will receive a 75 when transposing to the game. Connor Hellebuyck had the highest five-hole average with 88, so his in-game rating in that area will be 95, the maximum on the new scale. Everybody else will fall in between those two. Holtby’s 41 becomes an 83 with this new method.

The same process was repeated for all eligible players and all the attributes I included in this reworking. I then entered the roughly 5000 new attributes into NHL 20 manually. Some surprising names shot up in overall when it was all said and done, some superstars dropped quite a bit, and a few goalies even lost their number 1 status. 

Now, I won’t do an in-depth dive into the results right here, or else this article would be way too long. Starting next Tuesday, I will detail the results of my experiment, with goaltenders first, followed up by the skaters. Then, I’ll run a playoff sim on NHL 20, trying to approximate the new playoff format as best I can, to see who comes out on top and get a better picture of how the new ratings impacted various teams. Make sure to follow us on Twitter @ThePointHockey so you won’t miss this 5 part series!

Part 2

Part 3