Own-baseline finishing variance
We measure finishing against each player's own history. So a hot season reads as hot for that player. Finishing barely repeats from year to year. So a hot run on few shots is toned down a lot.
Why we use the player's own baseline
Comparing a player's finishing to the league average gets career snipers and grinders wrong. It calls the sniper 'lucky' every year and the grinder 'unlucky' every year. We ask a narrower, fairer question instead. Is this player finishing above or below his own normal level, given the chances he actually took? Every shot is first valued by our home-grown expected-goals model. So a season's finishing is goals scored compared with what those exact looks were worth. The signal is how far a player strays from himself, not from everyone else.
That baseline is the player's own record from earlier seasons. It uses only seasons in which he shot enough to matter. We need at least two earlier qualifying seasons before we trust a career baseline. A season is then read against that personal norm, not against a league-wide constant.
Stabilizing small samples
A single season of shooting is noisy. So each player's reading is pulled toward a neutral expectation. The pull is gentle for players with lots of shots and firmer for those with few. It is strongest where the sample is thinnest and fades as the evidence grows. That way a hot ten-game stretch cannot pass itself off as talent. The result is a cautious, steady read on how a season's finishing compares with the player's own baseline. We treat any season with fewer than 200 unblocked shots as too thin to stand on its own. We flag it as low-sample. How firmly we pull also depends on position. A defenseman's shots carry far less expected-goal weight than a forward's. So the same shot count is a thinner sample for him.
How much does one season count? Less than it looks. Take the shot total a typical ranked forward reaches in a season. At that volume, only a minority of his published number is treated as his own. The rest is the neutral expectation he is being pulled toward. A season has to be unusually heavy in shots before the number becomes mostly his. That is what a season is worth, given how little finishing repeats in our own data.
This is also why a great finisher's down year reads as mid-pack, not as a collapse. The ranking compares this season with this season's field. The pull toward neutral is stronger the thinner the season is. So a career sniper who shoots cold for one year lands near the middle of the pack. One season's evidence is not strong enough to overturn neutral. And the season ranking does not borrow his earlier years to prop him up either. Read the season percentile as what this season's shooting supports. Read the own-baseline comparison above it for how it sits against his history.
For forwards with enough history we also publish a career finishing percentile beside the season one. It pools a player's qualifying seasons to date, leaning on recent seasons more than older ones. It ranks that pooled reading against the other forwards with similar history this season. This number says what the season one cannot. A proven finisher coming off a cold year reads mid-pack for the season and near the top for the career. Both are true. We publish the career reading only once it has at least three qualifying seasons behind it. With less history, there is too little shooting to tell skill from a hot or cold run. Defensemen do not get either reading, for the reason below.
Why we do not rank defensemen on finishing
We rank forwards on finishing, and we do not rank defensemen at all. This is a measurement limit, not a paywall. On the free card, a defenseman's finishing reads n/a. Subscribers see his raw finishing numbers: the finishing factor, goals above expected and the gap to his career level. Each one is marked 'raw, not ranked for defensemen'. On either tier, we never show a conclusion drawn from those numbers for a defenseman. He gets no percentile or tier. He gets no buy-low or sell-high flag and no career finishing reading. We tested how repeatable finishing is by splitting each player's season in half and checking whether the halves agree. Forwards showed a real if modest signal at every shot volume. Defensemen did not. Their halves agreed no better than they would if finishing were pure chance. At the volumes a defenseman actually reaches, the randomness of which shots go in explains the entire spread. Ranking them anyway had a real cost. Defensemen were a fifth of the ranked players. But they made up nearly half of the top tier of finishers we were showing. That is what noise looks like when you sort by it.
What we show for defensemen instead: the shot profile
Finishing is not the only thing a shot carries. We went looking for anything in the finishing family that does repeat for defensemen. One thing did, and clearly: the expected-goal value of the attempts they take. A defenseman who shoots from close to the net at even strength this season mostly does it again next season. The two halves of a season line up closely. For finishing, they agreed no better than chance. So the defenseman's card carries a shot profile in place of a finishing rank. The label is Point shooter, Mixed or Net-front. It describes where his even-strength attempts come from compared with other defensemen that season. The within-season percentile sits behind the label. For defensemen this row replaces the card's all-strength shot-quality percentile. That one had no attempt floor and no pull toward average. So there is one measure, and it is the better-measured one.
Be clear about what this is and what it is not. It describes shot selection: where a defenseman shoots from and how good those looks are. Each look is valued by the same expected-goals model we use everywhere else. The values are averaged over his even-strength attempts. When his attempt count is thin, the average is pulled toward the league defenseman average. We need at least 100 even-strength attempts in a season before we label it. Roughly seven in ten regular defensemen get there. It is not finishing. It says nothing about whether those attempts went in. A Net-front defenseman is not a better shooter than a Point shooter. He takes different shots. It is not a skill grade either. The label is this season's profile and can change from one year to the next. So we say 'this season's shot profile' and mean it. The number underneath is expected goals per attempt. That is a model output we do not publish at any tier. The label and the percentile are the conclusions drawn from it. Conclusions are what we show for free.
From finishing to buy-low / sell-high
A player finishing well below his own earlier seasons is flagged buy-low. That flag fires only if no significant injury is on record. A player finishing well above his own earlier seasons is flagged sell-high. Only the buy-low flag checks injuries. A player with no injury record counts as healthy. The sell-high flag has no injury condition. For players under 30 it uses the trajectory label instead. The trajectory methodology page describes both flags and their limits. It prints no record for them yet, because their record is being re-measured.
How the numbers hold up
Finishing is one of the least stable things in hockey. That is the whole reason to pull it toward neutral. Take forwards with at least 200 unblocked shots in back-to-back seasons (1,423 pairs). A player's raw finishing in one season correlates with the next at just 0.24. Raw shooting percentage does better, at 0.36. A number that barely repeats should not be taken at face value. So we pull each season's extreme reading toward a neutral 1.0. The less evidence behind a reading, the harder the pull.
Across qualified player-seasons, this pull narrows the spread of finishing readings. It brings the outliers in from both ends. It does so most where few shots stand behind a reading.
The finishing table covers 15,178 player-seasons across 2,923 players. That spans 17 seasons, from 2009-10 through 2025-26. Of those, 2,899 clear the 200-shot floor and count as in scope. The rest are kept but flagged low-sample. Among qualified seasons, shot counts run from the 200-shot floor up to 597 in a single year. 3,189 player-seasons carry a baseline built from at least two of the player's earlier qualifying seasons. Of those, 1,706 are in scope. A season is never compared with seasons that came after it.
Counts on this page are read from the published data through 2026-27. A figure from a one-time study says when it was measured.