← Featured Projects

Amin Nabavi · 20162025 · 9 seasons

NHL RAPM Ratings Explorer

Raw plus-minus and on-ice shot differentials flatter players who get sheltered minutes with strong linemates against weak competition. This project strips that context out. It fits Regularized Adjusted Plus-Minus (RAPM) — a single ridge regression across every 5-on-5 shift in a season that estimates each skater's independent effect on shot rates while holding teammates and opponents fixed. Because every player is solved for jointly, the ratings are already teammate- and competition-adjusted.

Each skater gets three numbers, all in shots per 60 minutes of 5-on-5 play, relative to league average: an offense rating (shot generation), a defense rating (shot suppression, oriented so higher is better), and a totalthat sums the two. A rating of 0 is exactly average, so a +5 total is a genuinely driving skater and a −5 is getting caved in. Ratings are shot-based, not goal-based: they measure territorial and chance impact, and don't credit finishing or goaltending.

Read these as within-season rankings. The regression is penalized (ridge), which shrinks small-sample players toward average so a fourth-liner with 100 minutes doesn't post a wild number. Comparing rating levelsacross seasons is less safe — public play-by-play coverage varies year to year, which can shift a whole season's baseline. Each season page carries a data-quality note flagging where it sits.

Interim methodology note. The ridge penalty (how hard ratings are shrunk toward average) is currently chosen by REML rather than cross-validation. On this design CV is numerically unstable — a near-flat direction lets the league-average intercept trade off against a uniform shift of every player's rating, and CV can pin the penalty at its search boundary and hand back an unhealthy fit. REML has a well-defined interior optimum in all nine seasons, so it's the interim choice while a more principled penalty-selection approach is evaluated. This affects the overall level of shrinkage, not the within-season ordering of players.

Full methodology, the fitted constants per season, and all analysis code live in the AdjustedPlusMinusRidge repository. A condensed writeup is on the methodology page.

Choose a season

Latest (2024-2025) →