How It Works
Every radar score is a true percentile calculated against all 940 NHL skaters from the 2025-26 regular season (forwards shown, D excluded from search).
We use a logistic z-score with slope 1.4 — steep enough that elite outliers reach 93–99 while average players sit around 50–60.
Data is sourced directly from the NHL REST API (summary + realtime endpoints), giving us hits, takeaways, giveaways and blocked shots for every player.
Each category uses a rawRank() function — actual 2025-26 percentile breakpoints from 614 forwards — so 39G (Kyle Connor) correctly maps to the 94th percentile rather than being compressed by a z-score.
Shooting% is capped at 20% weight (luck-adjusted z-score) — varies 2–4pp year-to-year.
Hits removed from Skating — fast players skate past defenders (McDavid: 40 hits, yet fastest skater on ice).
GV penalty removed from Transition — elite playmakers like McDavid have 134 GV because they handle the puck 40+ min/game; penalizing them is incorrect.
PIM removed from Physicality — penalties are a negative outcome, not a physical skill.
The Scoring Functions rawRank() + zp()
Function 1 — rawRank(val, p25…p99)
Maps actual stats to percentile via 2025-26 breakpoints:
val≥p99 → 97-99 · val≥p95 → 95-97
val≥p90 → 90-95 · val≥p75 → 75-90
val≥p50 → 55-75 · val≥p25 → 38-55
Function 2 — zp(val, μ, σ) for rate stats
z = (val − μ) / σ
p = 1 / (1 + e^(−1.4·z))
score = round(p × 99)
Step 3 — Blend with category weights
Step 4 — Apply floor of 42
Example — McDavid Goals (48G)
μ = 11.3, σ = 11.5 (league mean)
z = (48 − 11.3) / 11.5 = +3.19
p = 1/(1 + e^−4.47) = 0.989
score = round(0.989 × 99) = 98
Old slope 0.75 → score was 91. Steeper slope separates elite from good.
Shooting
Raw production + efficiency
Percentile rank vs all 614 forwards. Goals/82 is the primary driver — 39G puts you at the 94th percentile. Shot volume and GWG add finishing context.
Goals / 82 [raw rank vs 614 fwds]
55%
Shooting % ⚠ luck-adj z-score
20%
Shot volume / 82 [raw rank]
15%
Game-winning goals / 82 [raw rank]
10%
Thresholds: p25=5G · p50=12G · p75=22G · p90=33G · p95=40G · p99=51G
Source: NHL REST API summary endpoint
Playmaking
Assists, vision & creativity
Assist rank is the primary driver. The A/PTS ratio separates distributors (McDavid 0.65) from scorers who happen to assist (Caufield 0.42).
Assists / 82 [raw rank]
50%
Points / 82 [raw rank]
25%
A/PTS creativity ratio
15%
Assists / 60 [z-score rate adj]
10%
Thresholds: p25=10A · p50=24A · p75=40A · p90=56A · p95=68A · p99=88A
Source: NHL REST API summary · MoneyPuck (A/60 proxy)
Skating
Speed, motor & compete level
TOI is the #1 skating signal — coaches play their fastest skaters most. Shot volume reflects forecheck motor. Hits removed — fast players skate past defenders.
TOI / game [raw rank · coach trust]
50%
Shot volume / 82 [raw rank · motor]
35%
Takeaways / 82 [raw rank · pursuit]
15%
TOI thresholds: p25=13.8m · p50=16.1m · p75=18.5m · p90=20.2m · p95=21.4m · p99=22.9m
Source: NHL REST API summary + realtime
Def IQ
Suppression, reads & discipline
+/- remains the best team-context signal. Low giveaways = fewer turnovers = better defensive reads. BS + TK add active suppression.
+/- per 82 [z-score · team context]
40%
Low giveaways [inverted raw rank]
30%
Blocked shots / 82 [raw rank]
20%
Takeaways / 82 [raw rank]
10%
Source: NHL REST API summary (+/-) + realtime (GV, BS, TK)
Physicality
Contact, battles & net-front danger
PIM removed — penalties are a negative outcome, not a physical skill. Hits dominate (65%) because they are the most direct body contact measurement.
Hits / 82 [raw rank]
65%
Blocked shots / 82 [raw rank · battles]
20%
Game-winning goals [raw rank · danger]
15%
Hits thresholds: p25=32 · p50=78 · p75=130 · p90=184 · p95=228 · p99=310
Source: NHL REST API realtime endpoint
Transition
Zone entry, rush & puck movement
Shot volume is the best OZ pressure proxy. TOI reflects deployment in transition roles. GV penalty removed — elite playmakers have more turnovers because they handle the puck 40+ min/game.
Shot volume / 82 [raw rank · OZ pressure]
50%
TOI / game [raw rank · deployment]
30%
Takeaways / 82 [raw rank · steal & go]
20%
GV differential removed: McDavid 134 GV because he touches puck 40+ min/game — penalizing elite playmakers is wrong.
Source: NHL REST API summary + realtime
Current Lab Scores
Updates from whoever is loaded in the Lab slots — switch back to Lab tab to add players
| Player |
SH |
PM |
SK |
DI |
PH |
TR |
Archetype |
| Load players in the Lab tab to see scores |
90–99 top 5% ·
75–89 top 20% ·
60–74 above avg ·
45–59 average ·
below 45 below avg