Deployment and context
Ascension: how we score rising and falling players
Fantasy managers look for the same signs every week: a player moved onto PP1, bumped to the top six, skating with the team's star, playing three more minutes. Ascension measures all of those from shift data at once, scores the change, and lists the reasons, so the board reads like a scout's notes rather than a black box.
Updated · Method version ascension v2
How it's calculated
- Window: the player's last N games this season (N = 3, 5 or 10). Baseline: his 20 games before the window, reaching back into last season when this one is young. At least 5 baseline games are needed, and a player who has not played in 21 days drops off the board.
- Ice time: all-situations, 5v5 and PP TOI per game, window minus baseline (scales 2:00, 2:00 and 0:45).
- Power-play role: change in his share of the team's PP time (scale 20 points) and in the share of games he spent on PP1, detected from PP5 units in the shift data.
- Line role: average line rank (L1 = 1, L2 = 0.67, L3 = 0.33, L4 = 0; D1 = 1, D2 = 0.5, D3 = 0) from the same detector as Line Watch.
- Elite linemates: share of his 5v5 TOI shared with his team's top three scorers (points per game over their last 20 games, 8+ games), from pairwise shared ice time.
- Underlying production: individual xG per 60 (xG v1), on-ice 5v5 xGF per 60 and points per game.
- Line Watch events in the window: promotions add and demotions subtract their significance score (capped at 6 each).
v = tanh(Σ wᵢ × Δᵢ / scaleᵢ) × n / (n + 1.5) × b / (b + 3)
- Δᵢ
- window minus baseline for each sub-measure (e.g. 5v5 TOI per game)
- n, b
- games in the window and in the baseline; production is shrunk once more by n / (n + 3) because points are noisy
score = 50 + 50 × tanh(Σ weight_k × v_k / 0.4)
- weight_k
- ice time 0.15, PP role 0.15, line role 0.05, elite linemates 0.05, production 0.55, Line Watch 0.05
- tiers
- Surging 75+, Rising 60–74, Steady 41–59, Cooling 26–40, Falling 25 or lower
Every component also produces a reason when it moved the score by at least 1.5 points, for example "PP1 in 4 of last 5 (was 0 of 20)", "+2:40 5v5 TOI" or "61% of 5v5 TOI with McDavid (was 12%)". The board shows the biggest movers first.
One riser's score, component by component
Example data: invented for illustration
Score 89 of 100: production adds 17.3 points over 50, ice time and PP role 8.1 each, elite linemates 2.7, line role 1.8 and Line Watch events 1.0.
Worked example
A third-liner gets the call
Includes example dataOver his previous 20 games a winger averaged 14:10 (11:30 at 5v5, 0:20 on the PP), played L3 and never PP1, with 0.30 points per game. In his last 5 he averaged 17:05 (13:40 at 5v5, 2:05 on PP1 in 4 games), skated L2 with the team's top scorer for 58% of his 5v5 time and had 4 points.
- Ice time: +2:55 overall, +2:10 at 5v5 and +1:45 on the PP is far past every scale, so the value is close to 1 before shrinkage; after shrinkage (5 and 20 games) it is about 0.6.
- PP role: PP1 in 4 of 5 vs 0 of 20 and a much larger PP share give about 0.6 after shrinkage.
- Line role: L3 to L2 is +0.33 of rank, about 0.4; elite linemates: 58% vs 5% of 5v5 TOI, about 0.6.
- Production: 0.80 vs 0.30 points per game with a better ixG/60, about 0.35 after the extra shrinkage.
- Weighted sum ≈ 0.15 × 0.6 + 0.15 × 0.6 + 0.05 × 0.4 + 0.05 × 0.6 + 0.55 × 0.35 ≈ 0.42, so the score is 50 + 50 × tanh(0.42 / 0.4) ≈ 89.
About 89: Surging, with reasons "+1:45 PP TOI", "PP1 in 4 of last 5 (was 0 of 20)" and "58% of 5v5 TOI with [the star]". The player and numbers are invented for illustration.
Backtest: does a high score predict points?
We scored every skater weekly through 2024-25 and 2025-26 (window 5) and compared his points per game over the next 10 games with his previous 20. Weights were fit by least squares on 2025-26, Oct 27 – Dec 29 (6,020 player-weeks) and judged on games the fit never saw. 2024-25 has no pairwise shared-TOI data, so the elite-linemate component is zero there.
| Holdout | Player-weeks | R² baseline | R² with score | Error cut | Surging change | Surging beat baseline | Falling change | Falling beat baseline |
|---|---|---|---|---|---|---|---|---|
| 2025-26, Jan – Mar | 6788 | 0.487 | 0.501 | 1.3% | +0.08 | 58% | −0.09 | 32% |
| 2024-25, Nov – Mar (no pair data) | 10761 | 0.426 | 0.440 | 1.2% | +0.10 | 61% | −0.10 | 29% |
The least-squares fit put 75% of the weight on production, 10% each on ice time and PP role, 5% on Line Watch events and none on line rank or elite linemates (their correlations with the next-10 change were only 0.03 and 0.04). We publish 0.55 / 0.15 / 0.15 / 0.05 / 0.05 / 0.05 so a promotion still shows, at a cost of about 0.002 R².
Reliability
The score is a modest but consistent predictor of short-term points across two seasons, and most of its predictive value comes from underlying production.
| Measure | Split-half r | Sample | Verdict |
|---|---|---|---|
| Score vs next-10 PPG changeCorrelation on the 2025-26 and 2024-25 holdouts. | 0.18–0.19 | 6,788 and 10,761 player-weeks | Moderate |
| Production component | 0.22 | Calibration set | Moderate |
| Ice time and PP roleSmall alone, but they move first. | 0.09 / 0.09 | Calibration set | Moderate |
| Line rank and elite linematesKept at 5% each for explanation, not prediction. | 0.03 / 0.04 | Calibration set | Noise |
Split-half r: we split each sample in two (for example odd and even games) and correlate the two halves across players or teams. Near 0 means the stat is mostly noise; near 1 means it is a stable trait.
Limitations
- Ten-game point totals are noisy: even a perfect read of a player's role leaves most of the variance unexplained.
- The baseline is the previous 20 games, so a player returning from injury or traded mid-season is compared with a different role or team.
- Early in the season the baseline is mostly last season, and the window is one or two games; shrinkage keeps those scores near 50.
- Line and PP units are detected from shift data; a coach who rotates lines every game makes line rank noisy.
- Pair data (shared 5v5 TOI) is kept for two seasons, so older seasons cannot be scored on elite linemates.
FAQ
What does an Ascension score of 50 mean?
No change: his last few games look like his previous 20. Above 50 he is gaining role or production, below 50 he is losing it. 75+ is Surging and 25 or lower is Falling.
Why does production carry the most weight?
Because in the backtest it was the strongest predictor of points over the next 10 games. Role changes (ice time, PP1, line, linemates) predict much less on their own, but they usually come first, so they still move the score and always appear in the reasons.
Which window should I use?
Last 5 is the default and what the backtest used. Last 3 reacts fastest to a promotion and is noisiest; last 10 is steadier and better for trade talks.
Who counts as a team's top players?
The three skaters with the most points per game over their last 20 games for that team (at least 8 games), recomputed for every as-of date.