New to these reports? Start here
- Dotted-underlined words have a plain-English definition — hover or tap them. Every term is also on the glossary page.
- "Null" means we found nothing, not that something broke. Most reports here are negative results, on purpose — knowing an idea doesn't work is the point.
- Two questions get asked separately. First, is the effect real? Second, is it already priced into the betting odds? An effect can be completely real and still useless to bet on.
- A "calibration" row is a self-check. It runs the same method on something already known to be true. If that fails, the whole report is unreliable — so it's reported alongside the findings.
- If a confidence interval includes zero, the real effect might be nothing at all, so no claim gets made.
What does transferring actually do? (college hockey)
2026-09-08. 5,494 skater and 307 goalie player-season pairs, 2020-2024, from
college_hockey_player_game_stats joined to the transfer sheet ingested in
e5746b5. A pair is a player who appears in season N and again in N+1, so both
sides of a move are observed.
The design question is regression to the meanregression to the meanExtreme results tend to be followed by more ordinary ones, purely by chance. Mistaking this for a real decline is a classic error.. Players transfer after seasons that flattered them and out of situations that are deteriorating, so the raw before/after of a transfer is mostly RTM. Everything below compares a mover to a STAYER who looked the same in season N.
⚠ Two data traps hit on the way, both of which would have produced nonsense:
- EMPTY NET is 32% of the goalie table. It is a situation, not a goalie, and
it appears for every team in every season — joining on name without excluding
it cross-joins into ~17,500 fabricated "transfers" out of 18,154 pairs.
- Goalies need a shots-against floor (100) before a save percentage means
anything.
Skaters: no average effect, but a strong interaction
| prior P/GP | after | delta | |
|---|---|---|---|
| movers (n=635) | 0.367 | 0.399 | +0.032 |
| stayers (n=3,592) | 0.369 | 0.413 | +0.044 |
Matched on prior P/GP in deciles: −0.0113 P/GP [95% CI95% confidence intervalThe range the true value is plausibly in. If this range includes zero, we cannot rule out that the real effect is nothing at all. −0.0308, +0.0098]. That spans zero. On average, transferring does nothing.
But the average hides the result. The effect is monotonic in how good the player already was:
| prior P/GP decile | 0.02 | 0.10 | 0.29 | 0.43 | 0.66 | 0.92 |
|---|---|---|---|---|---|---|
| effect vs matched stayers | +0.014 | +0.113 | +0.077 | −0.065 | −0.108 | −0.210 |
Fitting it continuously rather than in bins, delta ~ prior + moved +
prior x moved:
| term | estimate | 95% CI | |
|---|---|---|---|
| moved | +0.1069 | [+0.0776, +0.1389] | excludes zero |
| prior x moved | −0.3256 | [−0.4035, −0.2498] | excludes zero |
Crossover at 0.33 P/GP, just below the league mean of 0.369. Below it, moving is associated with gaining more than a comparable stayer; above it, with gaining less.
Checks that this is not an artifact: - Within-bin balance: movers' and stayers' priors differ by <3% of bin width in every decile, and in the TOP decile the movers are actually lower (0.8986 vs 0.9194) — the imbalance runs against the finding, not for it. - Level of competition: adding the change in the destination team's goal differential barely moves the interaction (−0.3305 → −0.3470), and the competition term itself is small (+0.0229 per goal-diff unit). So this is not "weak players drop down a level and score more".
⚠ It is associational. The obvious alternative is selection: a star transfers because something changed — role, injury, a coaching change — and that same something depresses next season. The design controls for prior production and destination strength, not for the reason he left. There is also no ice-time data, so a star moving into a deeper roster may simply play less.
Goalies: nothing
Matched effect +0.0019 SV% [−0.0033, +0.0070], n=76 movers. A clean nullnull resultA test that found nothing. "Null" is the starting assumption that there is no real effect; a "null result" means the data gave us no reason to abandon that assumption. It does not mean the data was missing or the test failed to run., though the sample is small enough that only a large effect would show.
Team level: portal losses hurt ~4x more than graduation
For 280 team-seasons, regressing the change in goal differential on prior goal differential (which absorbs RTM) plus production lost to each channel:
| term | estimate | 95% CI | |
|---|---|---|---|
| prior goal diff | −0.5229 | [−0.6491, −0.3883] | excludes zero |
| points lost to transfers | −0.00708 | [−0.01084, −0.00279] | excludes zero |
| points lost to everything else | −0.00177 | [−0.00441, +0.00076] | spans zero |
Transfers are only 25% of departed production (22.8 points per team-season against 69.3), yet they carry the entire effect. Per point lost, the portal costs about four times what graduation costs, and graduation alone cannot be distinguished from zero.
The plausible mechanism is that graduation is planned for. A coach knows years ahead who is leaving and recruits against it; a portal exit is a surprise late in an offseason and much harder to replace.
⚠ Note the raw correlations point the other way — transfer_out −0.154 vs
other_out −0.387 — because other_out is far larger and correlates with team
quality (good teams have more production to lose). The sign flips only once
prior goal differential is controlled, which is the right specification but
worth seeing.
⚠ Reverse causation is not excluded: a program heading for a bad season may lose more players to the portal in the first place. Prior goal differential controls for current quality, not for anticipated decline.
⚠ The sheet under-measures — name-match rates run 68-87% and arrivals are captured worse than departures. Under-measurement attenuates a coefficient toward zero, so the transfer effect here is if anything conservative.
What this is good for
The team-level result is the usable one: production lost to the portal is a
preseason signal for team change that graduation is not, and both are known
before a season starts. That fits the two-stage design in
backtests/player_movement/FINDINGS.md.
The player-level interaction is a spectator/analysis finding, not a projection input — it is associational and the mechanism is unidentified.