Producer: component_portability.py (2026-09-04). Universe: 6,968 consecutive-season transitions (1,406 skaters, 2010-11 → 2025-26), both seasons GP ≥ 30 and ≥ 75% of TOI with one team. 1,370 are team changes (19.7%).
Question. A skater's seven rating components are estimated on one team. When he moves, which components come with him and which were really the old team's system, linemates, or deployment?
Method. For each component, regress next season's value on this season's with a mover interaction and age/position controls (GP-weighted). Portability = mover carry-over slope ÷ stayer carry-over slope: 1.0 means changing teams costs nothing in predictability; 0.5 means half of what would normally persist stays behind. Absorption k asks the follow-up: among movers, how far does the player's number move toward his new teammates' average for that component (k = 1: it becomes the environment; k = 0: independent). Finishing is the placebo — it is individual credit and should absorb nothing. CIs are 95% cluster bootstraps over players.
| Component | n stay / move | r stay | r move | slope stay | slope move | Portability (95% CI) | Absorption k (95% CI) |
|---|---|---|---|---|---|---|---|
| EV offense | 5598 / 1370 | 0.72 | 0.48 | 0.73 | 0.50 | 0.68 (0.61, 0.76) | 0.59 (0.53, 0.64) |
| EV defense | 5598 / 1370 | 0.52 | 0.24 | 0.51 | 0.24 | 0.46 (0.34, 0.58) | 0.61 (0.56, 0.67) |
| Power play | 5598 / 1370 | 0.52 | 0.13 | 0.51 | 0.14 | 0.26 (0.09, 0.43) | 0.37 (0.30, 0.43) |
| Penalty kill | 5598 / 1370 | 0.29 | 0.13 | 0.30 | 0.13 | 0.44 (0.22, 0.70) | 0.48 (0.40, 0.56) |
| Finishing | 5598 / 1370 | 0.29 | 0.14 | 0.28 | 0.14 | 0.51 (0.27, 0.76) | 0.14 (0.02, 0.25) |
| Penalties | 5598 / 1370 | 0.63 | 0.55 | 0.50 | 0.41 | 0.82 (0.73, 0.91) | -0.25 (-0.39, -0.11) |
| Faceoffs | 5598 / 1370 | 0.78 | 0.67 | 0.78 | 0.64 | 0.82 (0.71, 0.95) | 0.07 (-0.00, 0.14) |
| Component | n stay / move | r stay | r move | slope stay | slope move | Portability (95% CI) | Absorption k (95% CI) |
|---|---|---|---|---|---|---|---|
| EV offense | 3664 / 919 | 0.74 | 0.56 | 0.76 | 0.60 | 0.80 (0.71, 0.89) | 0.49 (0.43, 0.56) |
| EV defense | 3664 / 919 | 0.51 | 0.20 | 0.50 | 0.20 | 0.40 (0.26, 0.54) | 0.51 (0.45, 0.58) |
| Power play | 3664 / 919 | 0.55 | 0.18 | 0.54 | 0.18 | 0.34 (0.14, 0.54) | 0.44 (0.35, 0.53) |
| Penalty kill | 3664 / 919 | 0.29 | 0.13 | 0.30 | 0.12 | 0.40 (0.13, 0.70) | 0.34 (0.25, 0.42) |
| Finishing | 3664 / 919 | 0.31 | 0.14 | 0.31 | 0.15 | 0.49 (0.26, 0.76) | 0.15 (-0.01, 0.31) |
| Penalties | 3664 / 919 | 0.55 | 0.43 | 0.51 | 0.39 | 0.78 (0.66, 0.90) | -0.27 (-0.44, -0.08) |
| Faceoffs | 3664 / 919 | 0.78 | 0.67 | 0.78 | 0.64 | 0.82 (0.71, 0.95) | 0.11 (-0.00, 0.23) |
| Component | n stay / move | r stay | r move | slope stay | slope move | Portability (95% CI) | Absorption k (95% CI) |
|---|---|---|---|---|---|---|---|
| EV offense | 1934 / 451 | 0.67 | 0.32 | 0.68 | 0.33 | 0.48 (0.34, 0.60) | 0.76 (0.67, 0.86) |
| EV defense | 1934 / 451 | 0.54 | 0.29 | 0.53 | 0.28 | 0.53 (0.33, 0.76) | 0.83 (0.73, 0.92) |
| Power play | 1934 / 451 | 0.42 | -0.03 | 0.40 | -0.03 | -0.06 (-0.40, 0.27) | 0.23 (0.14, 0.32) |
| Penalty kill | 1934 / 451 | 0.29 | 0.13 | 0.30 | 0.14 | 0.48 (0.11, 0.93) | 0.75 (0.59, 0.89) |
| Finishing | 1934 / 451 | 0.07 | 0.08 | 0.07 | 0.09 | 1.19 (-1.07, 5.88) | 0.11 (-0.02, 0.25) |
| Penalties | 1934 / 451 | 0.49 | 0.44 | 0.47 | 0.42 | 0.88 (0.68, 1.10) | -0.21 (-0.47, 0.04) |
| Faceoffs | 1934 / 451 | 0.16 | 0.02 | 0.14 | 0.01 | 0.09 (-2.21, 4.93) | 0.00 (-0.00, 0.00) |
absorb_stay) is higher than mover absorption for the on-ice components (~0.7 vs ~0.6). That is the shared-flow mechanism itself: a stayer's teammates in t+1 are largely the same people he is on the ice with, so their numbers and his move together as one team-year shock. The mover k is the cleaner estimate of how much a NEW environment shows up in a player's number, because his new teammates' t-season numbers were earned without him.Portability (movers' carry-over ÷ stayers') under three universes; the ranking and the power-play result hold throughout.
| Component | GP≥20, share≥0.60 (n=1,875 moves) | GP≥30, share≥0.75 (1,370) | GP≥50, share≥0.90 (690) |
|---|---|---|---|
| EV offense | 0.71 | 0.68 | 0.69 |
| EV defense | 0.44 | 0.46 | 0.44 |
| Power play | 0.27 | 0.26 | 0.32 |
| Penalty kill | 0.52 | 0.44 | 0.44 |
| Finishing | 0.46 | 0.51 | 0.34 |
| Penalties | 0.82 | 0.82 | 0.79 |
| Faceoffs | 0.84 | 0.82 | 0.87 |
--gp 20 / --share 0.6 to widen the universe.