The best part about hockey analytics these days is the wealth of innovative data scattered across the internet.

The worst part? That wealth of innovative data is completely scattered across the internet.

Corsica, Hockey Reference, Natural Stats Trick, and the Passing Project are all excellent resources that either scour the NHL’s play-by-play data or track stats themselves. Each offers different calculations of the data, from the Expected Goals model to scoring chances, to transition and passing data. They all provide pieces of the puzzle, but in their native state, they’re number soup that’s hard to parse, let alone relate to each other.

Visualizations help, especially those from Hockey Viz and Sean Tierney’s tableaus. However, when it comes to player analysis, there are ones that show a player’s relation to his teammates, but not many that show where he sits against the league.

Perhaps the best at this is Domenic Galamini Jr’s Hero charts, which show where players rank in five categories with a simple bar chart. It’s extremely handy for quick analysis, but it’s only updated in the summer and fails to include some of the more detailed stats that are now available. CJ Turtoro’s All-3-Zones charts provide a similar service for Corey Sznajder‘s Passing Project data, but that data is isolated and doesn’t show the rest of the player’s context.

In order to finish up my post-midpoint of the season analysis, I wanted to understand how each of the Avs were performing across a number of categories. Where are their strengths, where are their weaknesses, who is getting lucky or unlucky, and what might we expect from them in the second half of the year?

There wasn’t really a visualization out there that suited my needs, so 70+ spreadsheets later, I created one.

Using the Chart

At its core, the Player Evaluation Tool (PET Chart) is an expanded HERO chart. Just like its predecessor, it’s based on standard deviations instead of percentiles – which, in simpler terms (especially for those of us who would prefer to forget high school math), means that a 5 is average, most players rank between a 4 and 6, and anything in the 0-1 or 9-10 range is very rare. Basically, it’s based on a bell curve, which fit this middle-heavy data much better than a straight ranking.

372 forwards and 186 defensemen are included, which equates to roughly 12 forwards and 6 defensemen from each of the 31 teams. Some teams have a couple more than 18 players and some have a couple less, but the top players in all-situations time on ice after Saturday, March 3rd’s games make up the cohort.

Players that were traded still count as a single player, but their data is broken down into per-team results as well as a combined season total (TOT). So, if you’re itching to see how Matt Duchene is doing in Ottawa vs. his time in Colorado, that data is available in the chart.

Each data bar shows where the player ranks in comparison to the other forwards or defenseman of the league. The analysis was done separately for each position, but they’re all searchable from the same place.

If you hover over each bar, a tooltip will pop up to help explain the stat. Due to space limitations, they’re still pretty short, so here’s a more detailed break-down to help ease any confusion.

Chart Categories

Average of Categories – a standardized average of a number of the other categories.  It ignores the luck-based stats like PDO and Goals/Goals Against vs. Expected and focuses on process/result stats like ice time, goals, shots, assists, rates against, and transition. It’s meant to give an overall idea of a player’s effectiveness to quickly help make sense of this 20 stat chart, but it’s real-life usefulness is very limited. USE IT WITH CAUTION.

Category: Context – These stats aren’t very useful on their own, but provide a framework on how to judge the other categories.

Age – the age of the player on February 1st. In today’s NHL, youth is prized, so a 10 in this category indicates a teenager.

Ice Time – all situations ice time per game. For forwards, a 5 is around 15:30 in an average game, while it’s around 20 minutes per contest for defensemen. It’s equivalent to a 2nd/3rd line forward who gets some special teams usage and a second pairing defenseman. This is the only stat in the chart that includes special teams – all other stats are strictly 5 on 5 hockey.

PDO – on ice save percentage + on ice shooting percentage, which serves as in indicator of hot and cold streaks. Anything far above (10) or below (0) a 5 means there’s a strong chance the player is getting “lucky” or “unlucky”. This stat is most useful when trying to predict how the other numbers might change by the end of the year.

Zone Starts – Most shifts in the NHL start on the fly, but when the coach gets a chance to decide who heads out for a faceoff in the offensive or defensive zones, who gets the call? Players with high (10) scores primarily start in the offensive zone and are more likely to have higher goal numbers. Likewise, players with low numbers (0) start many of their shifts on defense.

Category: Goals – the results and the process behind scoring individual goals.

Goals – 5 on 5 goals per hour, or the effectiveness of a player when it comes to scoring. Since this is a rate, it doesn’t penalize low minute players, but the elites in this category typically receive a large number of minutes as a result. However, there are some depth scoring gems that still rank very well, such as Ondrej Kase and Sonny Milano.

Goals vs. Expected – the expected goals model looks at a shot’s type, location, and other factors to determine how likely it is to become a goal. This bar factors in the number of goals the player has scored to determine if they’re netting more than expected (10) or getting robbed (0). Like PDO, this stat is most useful when trying to predict how a player’s goal totals might change through the second half of the year, as it naturally wants to regress to a 5.

Shooting % – a player’s even strength shooting percentage. For forwards, anyone with a 8-10% received a 5, while defensemen are around 4% on average. Alexander Kerfoot currently leads the league with a 31.0%, which has been great for the Avs so far, but is very worrisome moving forward. Very few players maintain a shooting percentage that far above league average over the course of their careers, and the stat has a tendency to go cold very quickly. Bank the points while you can, but this serves as a warning flag for the future.

Shots – shot attempts, including misses and blocked shots, per hour. Players who tend to shoot more tend to score more, so this is a good predictor of which way the player’s scoring might head over the remaining games this season.

Category: Assists – a player’s playmaking ability to help create shots and goals.

Assists – 5v5 primary assists per hour. It’s very difficult to predict secondary assists. Sometimes they’re awarded even when the player didn’t have a huge hand in creating the goal, and sometimes they’re not awarded at all. There’s a lot of bias and not a lot of repeatability, so focusing on primary assists – passes made directly to a goal scorer – is a better measure of a player’s playmaking abilities.

Shot Assists(Note: This is the first of seven stats taken from the Passing Project. See “Category: Passing Project” for more information below.) Primary passes leading to shot attempts per hour. Just like shots, they’re a process stat that tends to line up very well with results over a large enough sample. They also have the benefit of being less teammate-skill dependent, as it’s far easier to generate a shot attempt than actually beat a goalie. Over enough games, assist numbers tend to move towards their shot assist counterpart.

Category: Defense –  how well a player prevents the opposition from scoring while in his own zone.

Goals Against – 5v5 on-ice goals against per hour. Like the goals for category, this is expressed as a rate so it doesn’t penalize higher minute players. A 0 in this category means a player is getting lit up way more than a standard player, while a 10 indicates a very competent defensive skillset. Keep in mind that this stat is on-ice instead of individual, which means that it’s difficult to separate out the influence of teammates (especially the goalie).

Goals vs. Expected – This stat looks at the expected goals per hour rate the opposition generates while the player is on the ice. It then compares them to the number of goals allowed, with 0 representing really poor puck luck and 10 indicating all the bounces staying out of your net. If a player (and his skater teammates) are doing a good job of limiting scoring opportunities but his goalie is letting him down, this stat will be more red. Likewise, if a goalie is bailing the team out, this category will be further towards the blue.

Shots Against – As the inverse of shots for, this measures the shot attempts (including missed and blocked shots) that a player allows per hour. It too is a process stat, so as the season wears on, the Goals Against category will typically move towards meeting it.

Category: Passing Project – Context for stats taken from the Passing Project, which are tracked manually and provide more context than traditional NHL play-by-play data.

Sample Size – The NHL only records certain types of data, most of which is shot/goal based. Unfortunately, that only accounts for a portion of what happens in a game. The Passing Project aims to fill in some of those holes, but it means that Corey Sznajder must analyze each game individually instead of relying on in-arena trackers. As a result, at this time, only partial seasons of data are available for each player. The smaller the sample size, the less accurate the Shot Assist and Transition numbers are likely to be. Use them with caution.

Category: Transition – The player’s roles and play quality when 1. moving the puck out of their zone (exit) 2. making it through the neutral zone and entering the offensive zone (entry) and 3. for defensemen, preventing the other team from doing so (denied entry). Tracked by the Passing Project.

Exit Rate – How many defensive zone exits a player attempts per hour.  This stat determines a player’s role when it comes to clearing the zone and/or starting the rush. Keep in mind that a player must start on defense to generate an exit, so having a high rate isn’t always a good thing.

Poss Exit % –  Measures the quality of exits by looking at what percentage fall within the “pass” or “carry” definition, commonly know as possession exits. Good transition players (especially defensemen tasked with making the first pass out of the zone or the forwards who cycle back to carry it) tend to have a very high (10) rate of possession exits with very few dumps/clears/icing/fails. Poor transition players will try to chip the puck out, which is less beneficial for generating offense.

Entry Rate – How often a player tries to enter into the offensive zone from the neutral zone per hour. This stat shows a player’s role, specifically who is typically responsible for getting the puck into the offensive zone.

Poss Entry % – Possession entries are difficult to accomplish in the NHL, so less skilled players/lines tend to prefer a dump and chase method. Poss Entry % looks at how likely a player is to carry/pass the puck in (10) or opt for a dump/fail (0). In short, it measures the quality of the entry.

Denied Entry Rate – This stat is shown for defenseman only, since forwards typically aren’t as responsible for stopping players at the blueline. As the name suggests, this is the inverse of zone entries, or how often a player is responsible for preventing the opposition from entering the offensive zone.

Denied Entry % – This is the other defenseman-only stat, and it measures the percent of entries against that ended up as dumps and fails rather than carries or passes for the opposition.


Andi began her hockey writing by contributing to Mile High Hockey for four years before jumping to BSN Denver in 2015. She focuses her writing efforts on deeper dive analytical looks at various topics, from player profiles to teamwide looks to understand underlying trends.

  • “There wasn’t really a visualization out there that suited my needs, so 70+ spreadsheets later, I created one.”

    Necessity, mother of invention, etc.

    Nice work, Andi. Thanks.

      • Will you guys be using this tool in your future articles?
        I’d love to see it make a return in a ‘end of the year player review’ or ‘this is why Mack deserves the hart’ etc.
        I’d hate to see such a great tool get buried and forgotten over time.

        • I’m working on a player by player analysis right now (look for it in the next week or so), and plan on keeping the chart pretty up to date. It will show up again in articles from time to time to be sure.

  • This is incredible. Will this tool be accessible outside of this article on the BSN site or otherwise?
    For now, this article is getting bookmarked.

    Well done!

  • Andi–very, very cool. I looked at several players including Sam Girard, MaK, Patrick Kane. The stats are amazing, and even more interesting they helped confirm my perception from watching them play. That in itself is really amazing. Is it OK if we still try to use good ole common sense to evaluate players on occasion?

    • Of course. I mean, it’s not like this data is coming from the moon – it’s all driven by the games and understanding what contributes to wins and losses.

      This chart is good for breaking down process and results though. It often challenges what you see, especially if the player is on a hot streak and scoring all the goals despite not shooting the puck much. (coughkerfootcough) This data should make you say, “hm. That’s unusual and likely to end at some point” instead of “wow this guy is an amazing goal scorer!”

      Stats aren’t perfect, and they miss a lot of subtleties. But they are unbiased and draw from more examples than anyone could ever scout on their own. There’s a lot of value in combining the two, but the real challenge is not letting one overshadow the other.

  • Yet another reason BSN is where it’s at.
    It would be interesting if at some point it could help shed light on “chemistry”… why it is some good players thrive in some lines but not in others.
    Example: when Teemu Selanne and Paul Kariya joined the Avs we were all excited about creating the next Avs dynasty, but lo and behold, in spite of their fabulous numbers their time with the Avs was a major dud.
    Or… closer to home, everybody is talking about trading Comeau at a time when his chemistry on the third line is better than his numbers elsewhere might indicate.
    Or for that matter, the VGK coaches seem to really leverage chemistry.
    Joe Sakic seems to be giving a lot more weight to it these days.
    For that matter, how do we evaluate the coaches, and their effect on chemistry?
    Guys like MacK create chemistry whereas other guys piggy back on it, albeit effectively if given the right situation.
    Again, fabulous work Andi.
    I see you eventually becoming the CEO of Google or Amazon… 🙂

  • Wow. This is fantastic! Thanks for putting together data from a lot of places with easy visualization. Will replace HockeyViz as my go to tool.

  • >