V1 Prototype · Live NHL Data
Track NHL players,
teams & trends.

A clean stats explorer backed by the official NHL API and MoneyPuck advanced metrics.

Connecting to NHL API…

5v5 Offense & Defense
Goals above replacement · min 200 min 5v5 ice
Offense GAR
(on-ice xGF/60 − replacement xGF/60) × ice time. Replacement = TOI-weighted avg of the bottom ⅓ of the position group by ice time.
Defense GAR
(replacement xGA/60 − on-ice xGA/60) × ice time — inverted, since fewer expected goals against is better.
Special Teams
Same GAR method as 5v5, own replacement pool · min 30s/game ice
Power Play GAR
(on-ice PP xGF/60 − replacement PP xGF/60) × PP ice time.
Penalty Kill GAR
(replacement PK xGA/60 − on-ice PK xGA/60) × PK ice time — inverted.
Finishing Adjustment
Bayesian-shrunk goals vs. expectation
Raw rate = (actual goals − individual xG) ÷ shots.

Shrunk toward the league-average finishing rate based on shot volume — full credibility at 100 shots, less for smaller samples — so a hot streak on 20 shots doesn't get treated the same as a real skill signal over a full season.
Goals → Wins
WAR = total goals above replacement × wins-per-goal
WAR = (Offense + Defense + PP + PK + Finishing) GAR × wins-per-goal.

Wins-per-goal isn't assumed — it's fit from every team-season since 2000-01 (regressing wins on goal differential, both normalized to an 82-game season), landing at roughly 1 win per 5.7 goals, in line with the standard hockey-analytics heuristic.