The Squad-Strength Signal Extends to Bundesliga 2 and League One (But Not 7 Other Leagues)
Walk-forward extension test: bundesliga-2 and league-one pass (direction-correct IS and OOS, magnitudes comparable to validated Big-5 leagues). Seven other leagues fail — serie-b, ligue-2, league-two, eredivisie, belgian-pro, portuguese-liga, scottish-prem. The signal extends along English + German pyramid tiers but not cross-country.
The Squad-Strength Signal Extends to Bundesliga 2 and League One (But Not 7 Other Leagues)
The squad-strength signal — teams missing >30% of their market value through injury and suspension underperform their odds-implied points — was validated on 4 leagues: EPL, Championship, Bundesliga, Serie A. We ran it on 9 more to see which extend.
The Question
A /gauntlet coverage audit showed 77 settled bets where squad-strength data existed (squad-history files with per-matchday player status) but the signal returned neutral because the league wasn't in SQUAD_STRENGTH_LEAGUES. The data was there — should it fire?
What We Found
Walk-forward extension test: IS=2023+2024, OOS=2025. Shin-devigged residual points. Threshold sweep [0.15, 0.20, 0.25, 0.30]. Same methodology as the original validation, scaled down from 10 seasons to 3 (that's all the squad-history coverage we have for non-top-tier leagues).
Sanity check — baseline leagues
All 3 already-validated leagues reproduced:
| League | IS threshold | IS μ | IS N | OOS μ | OOS N | OOS p | Verdict |
|---|---|---|---|---|---|---|---|
| EPL | 0.25 | -0.054 | 225 | -0.033 | 54 | 0.842 | PASS |
| Bundesliga | 0.20 | -0.177 | 231 | -0.028 | 118 | 0.783 | PASS |
| Serie A | 0.25 | -0.121 | 108 | -0.090 | 52 | 0.562 | PASS |
p-values don't clear 0.10 — expected. Per-league per-season sample is 50-120 matches. The original validation achieved p=0.001 by pooling 28,332 observations across 6 leagues × 10 seasons. With only 1 OOS season per league, statistical significance isn't reachable. Direction + magnitude is what we're checking.
Extension results
| League | IS threshold | IS μ | IS N | OOS μ | OOS N | OOS p | Verdict |
|---|---|---|---|---|---|---|---|
| **bundesliga-2** | **0.20** | **-0.086** | **182** | **-0.115** | **58** | **0.508** | **PASS** |
| **league-one** | **0.20** | **-0.058** | **109** | **-0.055** | **97** | **0.683** | **PASS** |
| serie-b | 0.15 | +0.005 | 186 | -0.005 | 80 | 0.972 | FAIL |
| ligue-2 | 0.15 | -0.036 | 164 | +0.163 | 78 | 0.259 | FAIL |
| league-two | 0.25 | -0.492 | 32 | +0.056 | 51 | 0.765 | FAIL |
| eredivisie | 0.15 | +0.010 | 229 | +0.060 | 54 | 0.702 | FAIL |
| belgian-pro | 0.15 | -0.140 | 206 | +0.074 | 80 | 0.612 | FAIL |
| portuguese-liga | 0.15 | +0.160 | 87 | -0.334 | 36 | 0.038 | FAIL |
| scottish-prem | 0.20 | -0.326 | 10 | -0.151 | 9 | 0.725 | FAIL |
Two leagues passed. Seven failed. The pattern is striking.
Why German and English Pyramids?
The signal extends:
- Bundesliga → Bundesliga 2 (IS -0.086, OOS -0.115 — OOS is actually stronger)
- Championship → League One (IS -0.058, OOS -0.055 — nearly identical)
And it does NOT extend to:
- Italian Serie B (+0.005 IS — literally zero signal)
- French Ligue 2 (IS -0.036 but OOS +0.163 — reversed)
- Dutch Eredivisie (+0.010 IS — no signal)
- Belgian Pro (-0.140 IS but +0.074 OOS — doesn't generalise)
- English League Two (-0.492 IS but +0.056 OOS — wildly unstable)
Three possible explanations:
- Injury reporting quality. Transfermarkt's availability data might be more complete for German and English clubs. German football is Transfermarkt's home market. The English Football League publishes mandatory injury reports. If injury data is incomplete in other countries, the signal can't fire correctly because we think players are available when they're actually injured.
- Squad depth economics. In the Bundesliga and English Football League, backup players are materially worse than starters — squad quality drops steeply with depth. In Italy or the Netherlands, the gap between starter and bench player might be smaller (less financial stratification in squads), meaning a 30% market-value absence doesn't translate to on-pitch performance degradation.
- Sample size. With only 2-3 seasons per league, some of the failures could be false negatives. Scottish Prem (n=9 OOS) and Portuguese Liga (n=36 OOS) are too thin to conclude anything. The other failures have adequate samples and flat/wrong-direction effects.
What We Changed
SQUAD_STRENGTH_LEAGUES extended from 4 to 6: added bundesliga-2 and league-one.
The signal now fires for bets in those two leagues. On /gauntlet, this means bundesliga-2 and league-one bets will show non-neutral squad-strength adjustments in the shadow comparison. Expected lift: ~3 bets (1 bundesliga-2 + 2 league-one in the current 182-bet settled set).
What We Didn't Change
- GK_CHANGE_LEAGUES — the backup-GK detection signal was separately validated on a 7-league set (including la-liga, ligue-1, portuguese-liga). It needs its own extension test.
- Other leagues — seven tested, seven failed. Not recommended to extend further without fresh per-league walk-forward on new data.
- VARIANCE_LOOKBACK — tested and rejected earlier the same session. The 10-match window stands.