Forwards
Peak at 24 (95% range 24 to 26); after it, −1.07 points per 82 a year over the next five years. Ignoring the players who leave puts the peak at 26.
Every NHL season since 2000-01, set against what a player's earlier seasons and his age predicted. Aging curves are corrected for the players who leave the league, and each label about a career was tested on seasons the model had not seen before it was allowed on the site.
The average change from one season to the next at each age, chained into a curve. Players who decline tend to leave, which makes a naive curve too kind to older players; the headline curve fills in those exits (the method that recovered known curves best in a simulation study).
Peak at 24 (95% range 24 to 26); after it, −1.07 points per 82 a year over the next five years. Ignoring the players who leave puts the peak at 26.
Peak at 26 (95% range 23 to 28); after it, −0.88 points per 82 a year over the next five years. Ignoring the players who leave puts the peak at 26.
Peak at 24 (95% range 24 to 25); after it, −0.24 save % above league a year over the next five years. Ignoring the players who leave puts the peak at 24.
Source: CapOrCup careers desk · as of 2026-09-29
A player who has a bad season often has no next season, so his decline is never counted. Comparing the naive curve with the corrected one shows how much that matters.
In a simulation with known curves and three ways of leaving the league, the error of each method (lower is better): naive 0.062, weighting by the chance of staying 0.064, filling in the exits 0.039. The last is the headline method.
Source: CapOrCup careers desk · as of 2026-09-29
Each label describes a run of seasons, not a person. Its percentage is the share of 200 re-measurements of the player's seasons (the points or saves redrawn from their own sampling noise) in which the label still applies. Lists are split by position; a position with no list did not pass the test.
A season two or more standard deviations above what his earlier seasons and age predicted, after which the next one or two seasons came back to within one standard deviation of the old expectation. Ranked by the share of re-measurements in which the call holds.
None shown: this label did not pass its test for this position.
The same kind of spike, followed by two seasons that both stayed at least 1.5 standard deviations above the old expectation. Ranked by the share of re-measurements in which the call holds.
None shown: this label did not pass its test for this position.
Two consecutive seasons at 26 or older at least 1.5 standard deviations above what everything through 25 predicted, from a player who was not in his position's top quarter at 25. Ranked by the share of re-measurements in which the call holds.
None shown: this label did not pass its test for this position.
NHL ice time through the age-25 season above the 90th percentile of the projection made at the draft. Ranked by the hours beyond that bound.
None shown: this label did not pass its test for this position.
Source: CapOrCup careers desk · as of 2026-09-29
The level of a season is era-adjusted points per 82 games for skaters (so a point in a low-scoring year counts for more), and save percentage minus the league's save percentage for goalies. A season counts when a skater plays 20 games or a goalie faces 500 shots.
The expected level for a season comes from a regression-to-the-mean forecaster: it follows each player's level from his earlier seasons, allows for noise in a short season, and drifts it with age. It was fitted on seasons up to 2018-19 and checked on the seasons after. A mixed-effects model was tried as the forecaster and lost on those later seasons for every position (forwards: squared error 162.3 against 153.7), so it is kept only as a benchmark.
Each label was written down with its test before the data were read, and ships only if it held on later seasons. Flash in the pan: after 120 spike seasons from 2018-19 on, the next season landed 0.28 standard deviations below the regression-to-the-mean forecast, so spikes are partly luck beyond ordinary regression. Sustained breakout: 42 label-holders stayed +1.51 standard deviations above the old expectation the season after. Late bloomer: 34 label-holders, +1.24. Exceeded ceiling at the draft: on the held-out draft classes 2015-2018, 10% landed above the 90th percentile, close to the 10% it should be.
The goalie labels were first built with an aging curve that fell 0.24 save-percentage points a year after 24, used only when labelling and never in the test; that put a veteran goalie's expected level far too low (one 2024-25 season read as a spike against an expected level below league average). The goalie forecaster now has no aging drift, and the goalie-only test was registered before it was run (careers-goalie-labels-v1).
The full record, including every pre-registration and its outcome, is on the integrity page and in the model register.