← Methodology

Projected WAR & production trajectory

Two forward-looking reads: a recency- and minutes-weighted projection of a player's current rate of impact, and an honest, skill-based label for whether their underlying game is developing, stable, or declining.

Projected WAR percentile

Rather than average a player's last few seasons equally, we lean toward the recent past and toward the minutes that actually carried weight. A player's most recent season counts for more than the one before it, and time on ice decides how much any season contributes, so a heavy workload speaks louder than a short cameo. The result is a single current rate of impact, expressed as GAR per 60 minutes, which we then percentile-rank within position group, comparing forwards to forwards and defensemen to defensemen. The projection answers how good a player is right now, as a read on current form rather than a restatement of one past year. It requires a minimum recent workload to qualify, and it is attached only to a player's latest qualifying season.

A note on correctness: the projection is stamped on exactly one row per player, their single most-recent qualifying season, and left blank everywhere else. That discipline is what stops the metric from quietly leaking a player's future back onto their older seasons, which would flatter the numbers you see. On the current data, 944 players carry a projection and not one of them has it stamped on an earlier season.

Production trajectory

Alongside the projection sits a plain-language label: developing, stable, or declining. It is driven by the change in a player's underlying skill from one season to the next, read through an age lens. A clear skill gain from a young player reads as developing; a clear skill drop from an older player already below average reads as declining; everything else is stable. Crucially, the label keys off skill, not raw point totals, because points can be propped up by luck long after the underlying game has started to erode.

How we keep it honest

We tested the label the skeptical way: does knowing a player is labeled 'declining' actually help predict that their production falls next season? On raw points per game, the answer is essentially no. Grouped by label, next-season points-per-game barely move, and the players we tag 'declining' actually saw their scoring tick up on average. That is not a failure of the label so much as a feature of hockey: counting stats are sticky, and luck props them up even as skill slips. So we do not present the trajectory label as a points forecast, and we say so plainly.

LabelNext-season points-per-game changePlayers tested
Declining+0.024 (production actually rose)863
Developing-0.007 (roughly flat)1,415
Stable-0.004 (roughly flat)4,488

The trajectory label is one input into the sell-high flag below. Its companion, the buy-low flag, works differently — it is driven by finishing variance and injury context alone (a player finishing well below their own baseline, with no injury explaining the dip; see the finishing methodology page for how it is built) and does not use the trajectory label at all. We publish both flags' forward tests here, side by side, so the two reads can be compared on the same footing. Measured on the corrected, in-scope population, buy-low-flagged players saw their points-per-game rise the following season 65.4% of the time, with an average gain of 0.083 points per game — against a 42.7% improvement rate for in-scope players the flag did not select, a +22.7 percentage point lift. Both flags only fire on in-scope seasons, so a thin sample never triggers them.

Buy-low flag populationShare that improved next seasonPlayer-seasons
Flagged (in-scope)65.4% (mean gain +0.083 PPG)208
Not flagged (in-scope baseline)42.7%2,174

Where the label earns its keep is as one input into the sell-high flag, our read on which strong seasons are unlikely to repeat. Measured on the corrected, in-scope population (only seasons with enough shot volume to trust the underlying skill read), flagged players declined the following season 77.6% of the time, with an average drop of 0.126 points per game. Restrict to players who also carried a known trajectory label and the hit rate rises to 79.5%. The flag itself is gated to in-scope seasons, so it never fires on a sample too thin to mean anything.

Sell-high flag populationShare that declined next seasonPlayer-seasons
All flagged (in-scope)77.6% (mean drop 0.126 PPG)98
Flagged with known trajectory79.5%88
The honest limits: these hit rates use next-season points-per-game as the definition of 'decline' or 'improvement,' which understates skill erosion (and can mask skill gains), because luck moves counting stats around independent of the underlying skill change. A skill-based definition would read somewhat differently, and there is no single canonical number we could hand you and defend as the number. Older figures you may see quoted elsewhere for either flag predate a data-quality fix and were measured on a contaminated, sub-threshold population; we do not stand behind them and do not publish them. We also do not yet have a true forward test of the WAR projection itself against realized next-season rates, so we present it as a well-constructed, leak-free current-form read, not a validated forecast. And as always, goalie value is intrinsically noisier than skater value; treat trajectory reads on goaltenders with extra caution.

Validation figures reflect the data through 2025-26 and are recomputed each season. Head-to-head benchmark tests (log-loss, AUC, bootstrap intervals) are dated snapshots of a specific held-out season, labeled where they appear.