HockeyAlpha

Methodology

The Alpha Rating

One number, 40 to 99, for every NHL skater with ten or more games played. It is deliberately simple to read and deliberately explicit about what goes in. This page is the full recipe, including the weights, and an honest list of the places it breaks.

The shape of the number

The rating is production-anchored. Its backbone is points per game, expressed on a value scale rather than a rank: a skater's P/GP is divided by the 95th-percentile P/GP of his position group and multiplied by 90, capped at 115 so a generational season separates from a merely great one instead of both compressing at 99. Around that anchor sit four percentile sub-scores - scoring, playmaking, transition, defense - each ranked within position group (forwards vs defensemen, 20+ GP pool).

forwards: 40% production + 27% scoring + 23% playmaking + 6% transition + 4% defense
defensemen: 18% production + 12% scoring + 14% playmaking + 22% transition + 34% defense
rating = 40 + 59 x (composite / 100)

Every sub-score is shrunk toward league average by gp / (gp + 12), so a hot 15-game stretch cannot outrank a full elite season. The same shrinkage applies to the production anchor.

The four sub-scores

Scoring - half goals per game, half individual expected goals per game (our own xG model, documented in full on the methodology page). Finishing and chance volume, in equal parts.

Playmaking - half assists per game, half Chance Creation. Chance Creation is an event-derived proxy, and we measured what it actually contains: 93-97% of its credited xG comes from rebounds the player's own shots generate, and 3-7% from offensive-zone takeaways. It adds a real signal the assist column misses, but it is rebound generation, not passing - which is why it shares the weight with assists instead of carrying it.

Transition - 45% Transition Impact (rush shots plus zone-coded takeaways minus giveaways), 35% rush shot volume, 20% on-ice xG share. The blend exists because raw giveaway counts punish exactly the players who carry the puck most; rush volume and involvement pull the sub-score back toward what your eyes see.

Defense - for forwards, 70% Suppression (blocks plus defensive-zone takeaways minus defensive-zone giveaways) and 30% takeaway-to-giveaway ratio. For defensemen, 40% Suppression, 30% blocks per 60, 30% take-give ratio.

Does it repeat? (measured, all six seasons)

A proxy that does not repeat season over season is noise with a name. We computed year-over-year correlations for every input across 2020-21 through 2025-26 (players with 40+ GP in both seasons, ~485 pairs per season), against reference metrics whose stability is known:

metricyear-over-year r (mean)
Shot attempts per game (reference)0.90
Individual xG per game (reference)0.92
On-ice xG share0.91
Transition Impact (ZEIS)0.85
Suppression0.75
Chance Creation (PSPL)0.54

Read: xG share and Transition Impact repeat nearly as well as shot volume itself - they are measuring something real about the player. Suppression is moderately stable. Chance Creation is the weakest input at r = 0.54, roughly half the reference - one more reason it gets only a quarter of one sub-score rather than a pillar of the rating.

What it is good for

Ordering skaters within a position group, at a glance, on one season of evidence; separating tiers (an 82 is a first-liner, a 68 is a middle-sixer); and anchoring arguments that would otherwise be three stats deep before they start. The top of the board is McDavid, MacKinnon, Celebrini, Draisaitl, Kucherov; the bottom of the rated pool is enforcers and 13th forwards. Both ends passing the smell test matters more than any single formula choice.

Where it breaks

Defensemen are underrepresented at the top. Only 7 of the top 50 are D, against roughly a third of skaters; Cale Makar is the first defenseman at #18 overall. Within-position ordering is sound (Makar, Hutson, Sanderson, Fox, McAvoy), but cross-position comparison inherits a production anchor that favors forwards. Treat "best defenseman vs best winger" claims with care.

The proxies inherit feed limitations. The public play-by-play has no passes, no zone entries, no tracking. Every input above is built from shots, hits, takeaways, giveaways and faceoffs, and a clean puck-mover who does none of those on a given shift is invisible to it.

No teammate or competition context. The rating does not know who a player skates with or against. A sheltered second-liner on a great team and a matchup-eating center on a bad one are measured by the same columns.

One season at a time. The rating is a season snapshot, not a career projection. Year-to-year movement mixes real change with the noise quantified in the table above.

Every formula on this page ships in src/lib/rating.ts and is computed nightly from official NHL play-by-play. Questions or holes: support@hockeyalpha.com.