Fixing Corsi: A Smarter Way to Track Shot Quality in Hockey

Corsi has been one of the most widely used “advanced” hockey stats for evaluating player performance for over a decade. It’s extremely useful for determining a player’s impact on the creation of on-ice events. However, it has some glaring inherent flaws. First, it assumes that all shot attempts are created equally. A shot attempt from the blue line, about 60 feet from the goal, is counted the same as a shot from a high-danger area like the slot, 10-20 feet from the goal. Obviously the shot attempt from the slot has a higher probability of scoring than the shot attempt from the blue line.

Corsi can also generate misleading player impact data. For example, a “trigger-happy” defenceman might post a higher Corsi score than a forward who takes more selective shots from high-danger areas. In 2021, Krueger and Enos proposed a solution to these data limitations. They suggested the division of six distinct zones, each zone possessing a different weight.

While an improvement from Corsi, a major weakness in the Krueger-Enos analysis is the zone weights do not accurately reflect actual probabilities, meaning each zone may not be weighted accurately. To address this shortfall, sampling all shot attempts encompassing multiple seasons would help to produce data not based on zone, but on coordinates.

 However, this approach is not currently possible for two main reasons:

1)    Most leagues do not have available play-by-play data for shot location coordinates.

2)   Even in leagues that may already collect shot location data, the sample size is often insufficient to produce statistically reliable results for individual shot coordinates

For these reasons, the six-zone framework, as proposed by Krueger and Enos, will be used.

To gather the data, I used the InStat shot database, which uses the six-zone format. For this article, I analyzed the major junior Western Hockey League (WHL). The WHL was selected and scraped shot attempts for each WHL team over five seasons, more than enough to data to produce meaningful results.

WHL shot data was imported into an Excel spreadsheet, with each zone categorized by total goals (G), shots on goal (SOG), and shot attempts (SA). The shot data calculated average goals per shot attempt (G/SA). Each zone’s G/SA was divided by the sample's average G/SA. This means zones with below-average values have a ratio less than one, zones with above-average values have a ratio greater than one, and a value of one represents the average shot attempt weight:

This table represent weights for each zone in the WHL. Shots from Zone 6 are significantly more dangerous (2.81 times greater impact) than shots from Zone 5. Differences are even more dramatic between Zone 6 and Zone 1. Here, Zone 6 shots have an impact 21.98(!) times greater than Zone 1. This is likely because nearly 57% of shots from Zone 1 either miss the net or are blocked by opponents, as compared to Zone 6’s 20%.

This weighted Corsi For feature is one of the many features built into my team and player analytic bundles. This data can help team coaching, scouting and management to identify team and player strengths and weaknesses.

For those interested in learning more about how this, and other advanced data analytics offered For more information on how my analytic bundles can help your team, e-mail me at m.bassettbusiness@gmail.com or book a free consultation on my website!