The numbers are only worth trusting if you can see how they're built. The short version below; each links to a full technical writeup.
Every number ships with its 90% confidence interval, and nothing ships as a signal until it clears a gate built to kill it. The trust anchor for everything below.
Home-grown expected goals (xG)
A gradient-boosted model on public play-by-play coordinates (distance, angle, rebound, rush, shot type, strength, score state). Validated against actual goals it beats the dominant public model at the high-danger tail: log-loss 0.2146 vs 0.2185, top-decile bias −0.31pp vs +8.28pp (1,000-resample bootstrap CIs). It carries no goalie feature, so it is goalie-neutral by construction.
Read the full method →Transition-credit RAPM
Multi-season regularized adjusted plus-minus that isolates a player's on-ice impact from his teammates, his competition, and how he was deployed, with an original transition credit that returns value to the defensemen who move the puck up the ice. The regularization strength is set by out-of-sample tuning - since August 2026 with offense and defense estimated separately rather than sharing one setting - and team-summed value tracks team goal differential on par with the best public models.
Read the full method →Own-baseline finishing variance
Goals above expected, measured against each player's own multi-season baseline rather than the league mean, so a hot season reads as hot for that player. This drives the buy-low / sell-high board: under-finishers with no injury explanation are regression-up candidates; over-finishers vs their own norm are regression-down.
Read the full method →Goals & Wins Above Replacement (GAR / WAR)
The headline value metric: a skater's whole on-ice contribution in goals, above a freely-available replacement, then converted to wins. We do not use a round-number goals-per-win: the divisor is re-fit on our own data every build, and there are two of them because the two tables are on different finishing bases - about 5.1 goals per win for the single-season table and about 4.7 for the career table, whose finishing is empirically shrunk. Built from seven components (even-strength offense/defense, PP, PK, penalties, faceoffs, and finishing), pooled over 2020-26, and blocked from publishing unless structural sanity gates pass. The even-strength baseline is a genuine below-average replacement floor - not league average - so 'above replacement' means what it says.
Read the full method →Wins Above Average (WAA / GAA)
The companion to WAR, measured against an average NHL regular instead of a replacement - the more intuitive lens for comparing two established stars. Same seven components; only the even-strength baseline differs (league average rather than a replacement floor). We publish both and label each for exactly what it measures.
Read the full method →Goalie value: GSAx, High-Danger GSAx & Quality Starts
Goals Saved Above Expected, on the same shot-quality model as our skater work but blind to which goalie is in the net - so it measures the goalie, not memorized reputations. High-Danger GSAx isolates the toughest tier (xG ≥ 0.12), and Quality Starts is the volume-neutral share of starts where the goalie beat expectation. Face-validity-gated, extends back to 2009-10.
Read the full method →Peer value
A player's value ranked within their own role (position × usage tier - Top-6 forward, Pairing D, and so on) rather than against the whole league, so a strong depth player reads as strong. Ranked by per-season GAR (GSAx for goalies), minimum 20 games.
Read the full method →Leverage & clutch scoring
How much of a player's offense arrived when the game was in the balance. Each goal is graded by the score margin at the moment it was scored, read from the play-by-play - a tying goal while down one is high leverage even if the game ends a blowout, and overtime always counts as high leverage. That replaced an older final-margin approximation, which inherited a single tier onto every goal in a game - Closer vs Empty Calories, plus GWG, OT goals, and high-leverage scoring rate.
Read the full method →Skill vs. luck decomposition
Splits 5v5 results into what a player drives (chance creation, own finishing) and what's riding on others (teammate finishing, goalie luck). Skill combines its parts as standardized scores; luck stays zero-sum via per-season xG calibration. Validated year over year - skill persists (stability ~0.40), luck regresses by design. This powers the buy-low / sell-high read.
Read the full method →Projected WAR & production trajectory
A recency-weighted (3-2-1) projection of a player's current rate of impact, percentile-ranked within position, plus a developing / stable / declining label driven by the season-over-season change in skill score. We note plainly that the label alone doesn't forecast points - its value is as an input to the sell-high flag.
Read the full method →Situational & deployment metrics
The context layer: shot quality (xG per unblocked shot), score-state behavior (how a player performs and is deployed when trailing vs. leading), PDO as an on-ice luck flag, QoC / QoT - the strength of the competition and teammates a player skates against and with - and the 5v5 Shot-Control Index, which asks whether play tilts toward the opposition net with a player on the ice relative to his own team. Descriptive context, not betting signals.
Read the full method →Historical coverage
Depth varies by metric, not uniformly by season. Boxscore, own-baseline finishing (goals above expected), goalie GSAx / save%, and offense/defense/finishing percentiles reach back to 2009-10. GAR, WAR, their percentiles, and the RAPM / trajectory percentiles begin in 2010-11 - the first season with league shift-chart data, which the on-ice model requires. 2009-10 and earlier are shown as not rated rather than estimated: the input simply does not exist. The 2010-2019 seasons are built on their own era's expected-goals fit, and their WAR shares one era-wide goals-per-win conversion whose level is estimated with known upward bias - a shared level, so comparisons within the 2010-2019 era are clean, while a 2010s WAR set against a 2020s WAR carries that conversion caveat. The 2012-13 lockout season (48 games) is flagged low-sample wherever it appears. We don't backfill what we can't compute honestly. On-ice zone-start deployment data begins in 2020-21 for the same reason, which puts our shot-control metrics on two footings: from 2020-21 they are adjusted for a player's zone-start mix, and for 2019-20 and earlier they are shown without that adjustment. Within a season that changes nothing, but a cross-era comparison of the adjusted metric is not like-for-like, and we flag it wherever one of those numbers appears.