Using Calculus to Quantify Consistency in the NHL

The final metric of the teamplay category in the main cards has been a revolving door for years. It has taken the form of many iterations over the project’s life cycle, from a “Smart Changing” stat in the beginning, to a With-Or-Without-You teammate impact, and an attempt to capture player compatibility most recently. But I have always toyed with creating a consistency-related measurement to see how reliable any given player is on a game-by-game basis. I was just never able to build a framework that provided the results I had hoped, until now.

The Data

The approach I have landed on is somewhat math-heavy (hey “Calculus” is quite literally in the title of this article so you know what you were getting yourself into by reading this) but I will do my best to make it as interpretable as possible. First, the calculation is done using AllThreeZones‘s microstat game scores. These are weighted sums of various tracked events throughout a game such as zone entries, chance set-ups, defensive zone retrievals, and more to estimate a player’s performance in any given game. For the purposes of this tool, the scores are then converted to percentiles relative to position (F or D).

It should be noted that since these games get manually tracked as the season moves along, the data will not cover all 82, but rather a smaller yet still representative and stable sample of roughly 20-40 games for most NHL regulars.

The Plot

Using this data, we can build a density curve to visualize the distribution of skaters’ performances. The density in pink is the player’s “Actual” density for the selected season, while the teal represents their “Expected” spread given their average game score and the density of similarly talented players. For example, a player with a high average (80-100%) will rarely have games significantly below that. In contrast, those with a more middle-of-the-pack mean (40-60%) are more likely to have a wider range of outcomes (flatter density rather than concentrated).

Dante Fabbro, 2023-24
(Average Game Score Percentile: 55.1)

Kirill Kaprizov, 2023-24
(Average Game Score Percentile: 88.4)

The final element left to explain is the decayed average. This line shows a player’s progression throughout the season through the change in their average over time. It differs from a regular average by placing more emphasis on recent play, meaning the importance of older games gets progressively decayed as we get further and further away from them. Similarly to the density curves, the x-axis corresponds to the performance level (0-100%). This time around however, the verticality represents the amount of games tracked and is portrayed on the right side of the plot.

The Calculation

With all components established, we can finally move on to how they are used in capturing consistency. What I have decided to measure is how much more often than expected is a player performing worse than his baseline, while putting more emphasis on especially poor games. To achieve this, we employ a method that uses integrals to compute a weighted penalty area between the actual and expected density curves.

First, we need to establish what this baseline is. After some testing, I have opted to set it at 80% of the player’s average performance. Through this approach, we can cover disappointing games while excluding slightly below-normal quality games by the selected skater. The baseline is also bounded within the league’s 20-to-80 percent thresholds meaning it can never be set under or over this range. This stems from the intuition that we should never penalize games at or above the 80% mark, while games ranking worse than 20% should always be punished.

Now we can integrate over the region from zero to this benchmark, calculating the area where the player’s actual density exceeds the expected spread. The final step is weighting this section. Since awful games should incur a heavier penalty than simply underwhelming ones, we multiply the range by a function that increases in value the further away it gets from the player’s baseline.

One last factor is added to the weight calculation using the skater’s decayed average. This is to ensure that players who continuously grow throughout the year do not get punished for their progression. Performances that are either earlier on in the season, or are improvements on their play at the time, get weighted back down thanks to this.

The Results

Another way to think of how these weights affect the area is by imagining them as a 3rd dimension, where we now integrate for the volume of this curve structure. But putting all this calculus aside, we are now left with a penalty area that has been weighted and summed into one final number. Skaters with lower penalty values (near zero) would indicate that they rarely have poor outlying games, and are generally more consistent, resulting in a higher consistency score.

Above are the top 10 forwards and defensemen using this penalized area score over the last 3 seasons. It is no surprise to see this list mostly populated by star players, but it should be noted that skaters lower in the lineup figure just outside of these leaderboards. Reliable top 4 defenders such as Dylan Demelo, Mikey Anderson, Matt Roy, and K’Andre Miller populate the top 25 list for defensemen. On the forward side, all player types are represented from less-prominent scoring options like William Karlsson & Teuvo Teravainen, to versatile middle-6 pieces in Vlad Namestnikov & Nick Paul, and even life-long shutdown bottom-6ers akin to Zemgus Girgensons & Colton Sissons.

The Consistency Spread is free to all. You can access the tool here, which covers skater data since 2020-21 and will continue to be updated like the other dashboards here at LB-Hockey.

The link can also be found here at our new “Free Tools” page which will host all current and future free dashboards the site produces moving forward.

Discover more from LB-Hockey

Subscribe now to keep reading and get access to the full archive.

Continue reading