Higher scores indicate stronger season impact within the player's model.
Transparent by design
How the Copilot Score works
The current score is a descriptive season model, not a future prediction. It converts MoneyPuck season statistics into position-specific percentiles, combines those percentiles with published weights, and reduces the influence of small samples.
Skaters and goalies are ranked separately against workload-qualified peers.
Scores move away from league average only as a player accumulates minutes.
Sample quality
What counts as qualified?
Both requirements must be met. Qualification controls the percentile population, not access to the player.
| Model | Games | Minutes | How unqualified players are handled |
|---|---|---|---|
| Skater | 10+ | 200+ | Retained, marked as a small sample, ranked against qualified skaters, and regressed toward 50. |
| Goalie | 10+ | 300+ | Retained, marked as a small sample, ranked against qualified goalies, and regressed toward 50. |
Calculation
From a statistic to a score
- Load season totals. Use each player's MoneyPuck regular-season row where situation equals
all. - Calculate rates. Convert counting statistics to per-60 rates where usage needs to be normalized.
- Build qualified pools. Create separate skater and goalie comparison populations using the thresholds above.
- Assign percentiles. Rank each component from 1 to 99 against its qualified population. Ties use the upper edge of the tied group.
- Apply weights. Combine the component percentiles into a raw skater or goalie score.
- Apply reliability. Pull the raw score toward 50 when the player has a smaller minute sample.
round(50 + (raw score - 50) * reliability)
Player profiles show this audit trail directly. Weighted points equal component percentile * component weight, and all weighted points sum to the raw blend before reliability is applied.
Winning impact
How Observed WAR v0 works
Observed WAR estimates past regular-season value above a replacement-level player. It is an explainable baseline for the future predictive model, not a forecast.
- Set replacement levels. Forwards and defensemen use season-specific 20th-percentile positive rates and 80th-percentile expected-goals-against rates. Finishing is centered at zero goals above expected. Goalies use the 20th percentile of GSAx per 60.
- Estimate goals above replacement. Skaters receive 5-on-5 offense and defense, power-play, penalty-kill, finishing, and penalty components. Goaltenders use goals saved above expected relative to replacement.
- Adjust for sample reliability. Skater components grow to full weight at 500 minutes and special-teams components at 150 minutes. Goalies use a continuous 1,200-minute prior because single-season shot-stopping is more volatile.
- Convert goals to wins. Each season uses twice the league-average goals per team-game as its goals-per-win conversion.
- Allocate team value. Players who changed teams are divided by their game-level ice-time share with each club.
goals above replacement / (2 * league goals per team-game)
The model is validated by comparing team-allocated player GAR with team goal differential. This is an in-sample descriptive check and should not be interpreted as predictive accuracy.
- 5v5 offense
- On-ice expected goals for relative to replacement, divided among the five skaters.
- 5v5 defense
- Expected goals against prevented relative to replacement, divided among the five skaters.
- Special teams
- Power-play creation and penalty-kill suppression relative to role-specific replacement rates.
- Finishing
- Individual goals above expected, centered at zero and regressed using the player's individual xG opportunities plus a 25-xG prior.
- Penalties
- Penalty differential translated with the season's average power-play expected-goal value.
- Goaltending
- Goals saved above expected relative to a replacement goalie's rate.
Skater model
Skater components and weights
All component values are converted to qualified-skater percentiles before weighting.
| Component | Underlying calculation | Weight |
|---|---|---|
| Scoring | Points per 60 = points * 60 / minutes | 28% |
| Chance creation | Individual expected goals per 60 | 18% |
| Possession | On-ice expected-goal share | 24% |
| xG differential | (On-ice xG for - on-ice xG against) * 60 / minutes | 15% |
| Finishing | (Goals - individual expected goals) * 60 / minutes | 8% |
| Usage | Total minutes played | 7% |
| Total | 100% | |
min(minutes / 500, 1)
Goalie model
Goalie components and weights
Goalies are ranked only against the qualified-goalie population.
| Component | Underlying calculation | Weight |
|---|---|---|
| GSAx rate | (Expected goals against - goals against) * 60 / minutes | 35% |
| Save ability | (Shots on goal - goals against) / shots on goal | 25% |
| High-danger | (High-danger shots - high-danger goals) / high-danger shots | 20% |
| Workload | Shots on goal faced * 60 / minutes | 10% |
| Durability | Games played | 10% |
| Total | 100% | |
min(minutes / 900, 1)
Team model
How the Team Score works
Every player on the season roster contributes, with minutes played determining influence within each position group.
| Component | Calculation | Weight |
|---|---|---|
| Skater impact | Minute-weighted average Copilot Score for every skater on the team roster | 75% |
| Goaltending | Minute-weighted average Copilot Score for every goalie on the team roster | 25% |
| Total | 100% | |
round(skater score * 0.75 + goalie score * 0.25)
A brief call-up remains visible on the roster but receives less influence than a full-season player because the group averages are weighted by minutes.
- Offense
- Minute-weighted average of skater scoring percentiles.
- Possession
- Minute-weighted average of skater expected-goal-share percentiles.
- Star power
- Average Copilot Score of the five highest-scoring players on the roster.
- Depth
- Share of total roster minutes supplied by players with a Copilot Score of at least 50.
- Qualified share
- Percentage of rostered players meeting the skater or goalie qualification threshold.
- Roster size
- Every player with a MoneyPuck season-summary row for that team.
Line combinations
How the lineup view is assembled
The team page shows observed 5-on-5 season usage from MoneyPuck, not a projected lineup for the next game.
- Forward lines
- Combinations are sorted by shared 5-on-5 ice time. The highest-usage trio is selected, then the process continues without reusing a selected player.
- Defense pairs
- The same non-overlapping selection is applied to two-player defensive pairings.
- Goaltenders
- Starter and backup labels reflect season minutes played, not an official game-day announcement.
- Other contributors
- Every player on the season roster who is not selected into a primary combination, including call-ups, traded players, depth skaters, and additional goalies.
Because these are season-to-date combinations, the view can lag current injuries, transactions, or coaching changes. Official NHL roster data does not publish forward-line and defense-pair assignments.
Glossary
Statistics shown on player cards
- xG share
- The percentage of total on-ice expected goals belonging to the player's team.
- Points / 60
- Goals plus assists normalized to 60 minutes of ice time.
- GSAx
- Expected goals against minus actual goals allowed. Positive values indicate goals prevented above expectation.
- GSAx / 60
- Goals saved above expected normalized to 60 minutes.
- Save percentage
- The share of shots on goal stopped by the goalie.
- Percentile
- A 1-99 ranking within the position-specific qualified population.
Interpretation
What this score does not claim
- It is not yet a predictive or machine-learning model.
- Observed WAR v0 is not a contract value, future projection, or official MoneyPuck rating.
- It does not currently adjust for teammates, competition, score state, injuries, or contract context.
- Skater and goalie scores share a 1-99 display scale but come from different component models.