Producer: playoff_ng_study.py (2026-09-17), on the playoff outputs of the chain scripts' --playoffs modes (build_shot_ledger.py, build_playoff_components.py, gax_gsax_v2.py, extract_penalties.py, extract_faceoffs.py, build_ng_attribution.py). Universe: every playoff game 2010-11 to 2025-26 (16 postseasons, 1,395 games, 121,805 priced attempts, 5,439 skater-postseasons, 417 goalie-postseasons).
Question. The site prices every skater in net goals added per 82 games versus a league-average player, from regular-season games only. What are the same players worth in the playoffs, in the same units, and does the playoff number tell us anything the regular one does not?
Method. The playoff games go through the unchanged regular-season chain: shots priced by the season-matched xG v2 model; every second of every shift priced by the strength-aware win-probability table; each shift's actual priced flow compared with the league-average expectation for its context (score, clock, skaters, zone start) from the regular-season context table; finishing, penalties and faceoffs at the same calibrated prices; the same per-season re-centring biases. A playoff value is therefore "net goals versus a league-average regular-season player in that season's environment" and compares directly with the regular number. Nothing is re-centred on the playoff pool itself, which is a stronger and tighter field. Three playoff-specific rules:
GP-weighted mean value of a playoff skater-game, per 82 games, versus the same for regular-season skater-games (which re-centre to about zero by construction).
| Component | Playoffs (NG/82) | Regular season (NG/82) |
|---|---|---|
| EV offense | -0.40 | +0.02 |
| EV defense | +0.39 | -0.00 |
| Power play | +0.11 | +0.00 |
| Penalty kill | -0.09 | +0.00 |
| Finishing | -0.29 | +0.03 |
| Penalties | -0.05 | +0.01 |
| Faceoffs | +0.00 | +0.00 |
| Overall | -0.32 | +0.05 |
Goalies: league playoff GSAx +179.6 over 2,995 goalie-games (+4.92 per 82 starts), against the regular-season xG which nets to zero by season. The playoff field converts below the regular-season model on both sides: shooters finish below expectation and goalies above it, which is the tightening the playoff-translation study measured as shot quality rather than volume. Even-strength on-ice value nets to about zero, as it must when both teams' skaters are priced.
By postseason (GP-weighted skater Overall per 82, league playoff GSAx per goalie-game):
| Postseason | Games | Skater Overall/82 | Finishing/82 | Goalie GSAx/game |
|---|---|---|---|---|
| 2010-11 | 89 | -0.09 | -0.03 | -0.010 |
| 2011-12 | 86 | -0.71 | -0.69 | +0.172 |
| 2012-13 | 86 | -0.97 | -1.10 | +0.261 |
| 2013-14 | 93 | +0.35 | +0.38 | -0.089 |
| 2014-15 | 89 | -0.36 | -0.30 | +0.091 |
| 2015-16 | 91 | -0.08 | -0.10 | +0.014 |
| 2016-17 | 87 | -0.46 | -0.37 | +0.052 |
| 2017-18 | 84 | +0.30 | +0.40 | -0.109 |
| 2018-19 | 87 | -1.07 | -1.01 | +0.205 |
| 2019-20 | 86 | -0.48 | -0.49 | +0.113 |
| 2020-21 | 84 | -1.12 | -1.04 | +0.245 |
| 2021-22 | 89 | -0.47 | -0.48 | +0.090 |
| 2022-23 | 88 | +0.44 | +0.40 | -0.085 |
| 2023-24 | 88 | -0.11 | +0.02 | -0.002 |
| 2024-25 | 86 | +0.31 | +0.28 | -0.055 |
| 2025-26 | 82 | -0.71 | -0.58 | +0.120 |
Skater-postseasons with at least 8 playoff GP and a regular-season row (10+ GP): n = 2,278. Correlation and slope of the playoff rate on the same-season regular rate, weighted by playoff GP. A slope near 1 means the regular number is an unbiased guide to the playoff number; the correlation says how much of one run the regular season explains.
| Component | r (weighted) | slope | playoff SD/82 | regular SD/82 |
|---|---|---|---|---|
| EV offense | 0.51 | 0.63 | 2.3 | 1.8 |
| EV defense | 0.29 | 0.52 | 2.1 | 1.2 |
| Power play | 0.45 | 0.69 | 1.2 | 0.8 |
| Penalty kill | 0.18 | 0.34 | 1.0 | 0.5 |
| Finishing | 0.14 | 0.23 | 7.2 | 4.3 |
| Penalties | 0.40 | 0.60 | 2.5 | 1.6 |
| Faceoffs | 0.67 | 0.81 | 0.6 | 0.5 |
| Overall | 0.32 | 0.49 | 8.7 | 5.7 |
Faceoffs and even-strength offense carry best; finishing barely carries within a run (a run is 20-100 shots). The playoff SDs are 2-3 times the regular ones because they are 8-28 game samples, not because playoff skill is more spread out.
Even-strength by position (same sample):
| Position | n | EV offense r | EV defense r | Overall r |
|---|---|---|---|---|
| Forwards | 1,515 | 0.54 | 0.27 | 0.31 |
| Defensemen | 763 | 0.43 | 0.32 | 0.29 |
Skaters with 40+ playoff GP, by total playoff net goals (the sum over runs; NG/82 is that total per 82 games; the last column is the player's career regular-season NG/82 for comparison). Full table: playoff_ng_career.csv.
| # | Player | Pos | Runs | GP | Playoff NG | NG/82 | EV off | EV def | PP | PK | Fin | Regular NG/82 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Leon Draisaitl | C | 7 | 98 | +25.5 | +21.3 | +4.6 | -0.6 | +3.0 | +0.0 | +12.2 | +18.4 |
| 2 | Brad Marchand | L | 13 | 177 | +23.9 | +11.1 | +2.1 | +1.8 | +0.4 | +0.4 | +6.7 | +11.1 |
| 3 | Logan Couture | C | 8 | 101 | +18.7 | +15.1 | +2.4 | -0.1 | +2.9 | +0.0 | +7.4 | +7.0 |
| 4 | Brayden Point | C | 9 | 96 | +18.5 | +15.8 | +2.1 | +1.3 | +0.7 | +0.0 | +9.1 | +12.2 |
| 5 | Joe Pavelski | C | 12 | 158 | +18.0 | +9.4 | +1.1 | +1.2 | +2.5 | -0.0 | +1.1 | +10.1 |
| 6 | Cale Makar | D | 8 | 87 | +17.6 | +16.6 | +3.1 | +2.3 | +1.9 | -0.6 | +6.6 | +12.4 |
| 7 | Steven Stamkos | C | 11 | 128 | +15.9 | +10.2 | -0.1 | +1.1 | -0.8 | -0.3 | +9.1 | +12.9 |
| 8 | Jake Guentzel | C | 8 | 77 | +15.6 | +16.6 | +2.9 | +0.7 | +0.4 | +0.4 | +10.9 | +6.2 |
| 9 | Mark Stone | R | 11 | 126 | +15.1 | +9.8 | +0.0 | +0.6 | +1.1 | -0.3 | +7.5 | +9.1 |
| 10 | Ondrej Palat | L | 10 | 152 | +15.1 | +8.1 | +0.8 | +0.8 | -0.2 | +0.2 | +6.1 | +2.5 |
| 11 | Sidney Crosby | C | 11 | 120 | +14.8 | +10.1 | +3.1 | +0.4 | +0.5 | +0.4 | +2.2 | +11.5 |
| 12 | Evan Bouchard | D | 5 | 81 | +14.8 | +15.0 | +3.9 | +1.2 | +2.6 | -0.0 | +6.1 | +6.1 |
| 13 | Nathan MacKinnon | C | 10 | 105 | +14.0 | +10.9 | +3.2 | +0.8 | +1.5 | +0.0 | +3.6 | +7.1 |
| 14 | Vladimir Tarasenko | R | 12 | 130 | +13.5 | +8.5 | -0.7 | +0.2 | -0.3 | +0.1 | +7.2 | +7.6 |
| 15 | Mikko Rantanen | R | 9 | 102 | +13.3 | +10.7 | +2.4 | +0.6 | +1.4 | -0.3 | +5.5 | +10.9 |
| 16 | William Karlsson | C | 9 | 123 | +12.7 | +8.4 | +1.1 | +1.2 | +0.5 | -0.3 | +3.9 | +4.2 |
| 17 | Chris Kreider | L | 10 | 132 | +12.3 | +7.7 | +0.2 | -0.6 | -0.1 | +0.1 | +10.7 | +4.5 |
| 18 | David Pastrnak | R | 9 | 93 | +12.3 | +10.9 | +1.1 | +1.4 | +0.9 | -0.1 | +5.9 | +13.9 |
| 19 | Andre Burakovsky | L | 8 | 90 | +11.3 | +10.3 | +0.8 | +1.6 | +0.0 | -0.0 | +7.1 | +4.1 |
| 20 | Nikita Kucherov | R | 12 | 156 | +11.2 | +5.9 | +1.5 | +1.3 | +0.2 | +0.1 | +1.9 | +13.4 |
| 21 | Connor McDavid | C | 7 | 98 | +10.7 | +8.9 | +5.4 | +0.2 | +3.1 | +0.2 | -3.9 | +15.1 |
| 22 | T.J. Oshie | R | 12 | 99 | +10.2 | +8.4 | -0.9 | +0.5 | +0.2 | +0.2 | +6.5 | +8.2 |
| 23 | Mark Scheifele | C | 7 | 52 | +10.2 | +16.0 | +1.9 | -1.0 | -0.3 | +0.3 | +13.4 | +8.6 |
| 24 | Alex Ovechkin | L | 13 | 130 | +9.6 | +6.1 | +2.6 | +0.2 | +0.5 | -0.0 | +3.0 | +10.3 |
| 25 | David Krejci | C | 10 | 130 | +9.5 | +6.0 | -0.3 | +0.7 | +0.1 | +0.3 | +5.1 | +3.7 |
Bottom of the same table (40+ GP):
| Player | Pos | Runs | GP | Playoff NG | NG/82 | Regular NG/82 |
|---|---|---|---|---|---|---|
| Brian Boyle | C | 10 | 120 | -11.1 | -7.6 | -0.5 |
| Brayden Schenn | C | 8 | 79 | -9.9 | -10.2 | +1.5 |
| Jay Bouwmeester | D | 6 | 75 | -9.1 | -9.9 | -4.1 |
| Ryan McDonagh | D | 15 | 200 | -8.8 | -3.6 | +0.0 |
| Darnell Nurse | D | 7 | 96 | -8.2 | -7.0 | -3.7 |
| Cody Ceci | D | 8 | 105 | -8.1 | -6.4 | -3.7 |
| Esa Lindell | D | 7 | 106 | -8.0 | -6.2 | -0.7 |
| William Carrier | L | 8 | 112 | -7.8 | -5.7 | -0.6 |
| Jacob Trouba | D | 7 | 82 | -7.7 | -7.7 | -4.1 |
| Brad Richards | C | 5 | 83 | -7.5 | -7.4 | +3.1 |
Highest playoff rate with 60+ GP:
| Player | Pos | GP | NG/82 | Regular NG/82 |
|---|---|---|---|---|
| Leon Draisaitl | C | 98 | +21.3 | +18.4 |
| Jake Guentzel | C | 77 | +16.6 | +6.2 |
| Cale Makar | D | 87 | +16.6 | +12.4 |
| Brayden Point | C | 96 | +15.8 | +12.2 |
| Logan Couture | C | 101 | +15.1 | +7.0 |
| Evan Bouchard | D | 81 | +15.0 | +6.1 |
| Morgan Rielly | D | 65 | +11.6 | -0.3 |
| Brad Marchand | L | 177 | +11.1 | +11.1 |
| Nathan MacKinnon | C | 105 | +10.9 | +7.1 |
| David Pastrnak | R | 93 | +10.9 | +13.9 |
| Jason Robertson | L | 62 | +10.7 | +13.9 |
| Mikko Rantanen | R | 102 | +10.7 | +10.9 |
Goalies with 20+ playoff games, by total playoff GSAx (goals saved above the regular-season xG model; per-82 rate and the career regular-season rate alongside):
| # | Goalie | Runs | Games | Shots | Playoff GSAx | GSAx/82 | Regular GSAx/82 |
|---|---|---|---|---|---|---|---|
| 1 | Henrik Lundqvist | 7 | 98 | 2936 | +37.0 | +30.9 | +21.1 |
| 2 | Igor Shesterkin | 3 | 43 | 1448 | +35.1 | +67.0 | +32.3 |
| 3 | Andrei Vasilevskiy | 11 | 124 | 3675 | +31.5 | +20.8 | +21.4 |
| 4 | Jonathan Quick | 7 | 86 | 2551 | +28.1 | +26.8 | -1.4 |
| 5 | Tuukka Rask | 7 | 89 | 2765 | +27.6 | +25.5 | +8.1 |
| 6 | Braden Holtby | 8 | 94 | 2809 | +27.3 | +23.8 | +5.5 |
| 7 | Mike Smith | 5 | 44 | 1551 | +18.2 | +33.9 | +5.4 |
| 8 | Craig Anderson | 5 | 42 | 1362 | +17.3 | +33.7 | -6.2 |
| 9 | Ben Bishop | 4 | 51 | 1459 | +13.4 | +21.5 | +13.4 |
| 10 | Jakub Dobes | 2 | 22 | 623 | +11.8 | +44.1 | +23.6 |
| 11 | Tim Thomas | 3 | 33 | 1058 | +11.5 | +28.7 | +17.3 |
| 12 | Jeremy Swayman | 5 | 26 | 735 | +9.5 | +29.9 | +16.8 |
| 13 | Robin Lehner | 4 | 27 | 679 | +9.0 | +27.3 | +7.8 |
| 14 | Anton Khudobin | 3 | 25 | 762 | +8.7 | +28.5 | +10.5 |
| 15 | Corey Crawford | 8 | 91 | 2772 | +8.2 | +7.4 | +15.3 |
| 16 | Carey Price | 7 | 69 | 2076 | +7.8 | +9.3 | +9.3 |
| 17 | Jimmy Howard | 6 | 36 | 1104 | +7.5 | +17.2 | -3.5 |
| 18 | Adin Hill | 3 | 30 | 852 | +6.5 | +17.7 | -4.4 |
| 19 | Matt Murray | 5 | 49 | 1327 | +6.1 | +10.2 | +6.0 |
| 20 | Sergei Bobrovsky | 11 | 113 | 3247 | +5.4 | +3.9 | +11.3 |
For every skater-postseason with 8+ playoff GP, the gap = playoff NG/gm minus the same season's regular NG/gm. If some players reliably raise (or lower) their game in the spring, a player's gap in one run should predict his gap in his next run. Pairs are a player's consecutive qualifying runs no more than three seasons apart; the null is 500 shuffles of the gaps within each postseason.
Consecutive-run pairs: 1,116 (967 skaters with a qualifying run).
| Quantity | r (run to run) | null mean | null 95% band | p |
|---|---|---|---|---|
| gap, Overall | +0.003 | -0.000 | [-0.061, +0.066] | 0.902 |
| gap, EV offense | +0.016 | +0.012 | [-0.040, +0.069] | 0.904 |
| gap, EV defense | +0.087 | +0.007 | [-0.051, +0.071] | 0.004 |
| gap, Power play | +0.019 | +0.004 | [-0.049, +0.060] | 0.628 |
| gap, Finishing | -0.014 | -0.002 | [-0.060, +0.051] | 0.680 |
| raw playoff Overall (control) | +0.198 | |||
| same-season regular Overall (control) | +0.557 |
Read: the raw playoff number persists because talent persists (and the regular-season number, which is the talent estimate, persists far more). The playoff-minus-regular gap is what a "playoff performer" would have to carry, and its run-to-run correlation is what the table shows. This repeats the playoff-translation study's verdict in the model's own units.
ng_attribution_playoffs_by_season.csv: skater NG/gm by component per postseason (all GP), same schema as the regular file.goalies_gsax_playoffs_by_season_v2.csv, shooters_gax_playoffs_by_season_v2.csv: playoff GSAx / GAx./players: the season selector has a Playoffs group (career and each postseason); the playoff career view uses the same empirical-Bayes regression as the regular career view.