The clustered-vol finding was also small-N — another tie at higher N
what you'll learn · Why an attempt to write a regression test pinning vol_regime_filter's clustered-vol failure mode discovered that the failure mode itself was N=3 noise — and what this teaches us about which research notes need re-running at higher N.
PR #717 claimed vol_regime_filter underperforms baseline by 1.3 Sharpe on clustered-vol data. At N=3 seeds that was right. At N=30 seeds with seeds 1-30, the gap collapses to +0.001 — within noise. The vol-regime-filter doesn't break on clustered vol the way the PR #717 note claimed; the original finding was N=3 luck. Add another instance to the pattern: directional claims at N less than 20 don't survive higher seed counts.
PR #717’s “vol-cluster breaks the regime filter” note opened with a 3-seed result:
mean stdev min max
baseline +1.048 2.235 -1.364 +3.049
vol_regime_filter -0.265 2.295 -1.739 +2.380
three_clock_momentum -0.531 2.023 -2.291 +1.678
three_clock_vol_regime -0.180 2.418 -2.193 +2.502
The note named the mechanism (vol_5/vol_60 has persistent state on clustered vol; gate fires constantly), proposed a fix (vol_transition_filter, PR #719), and the fix was disconfirmed (PR #723). Two iterations of explanation, both anchored on the 3-seed claim that vol_regime_filter underperforms baseline by 1.3 Sharpe on clustered vol.
This note runs the same comparison at N=30 seeds (above the small-N stability threshold per PR #755).
The N=30 result
arm N=3 (PR #717) N=30 (this run, seeds 1-30)
baseline +1.048 +1.195
vol_regime_filter -0.265 +1.197
delta -1.313 +0.002 (within rounding)
The 1.3 Sharpe gap collapses to zero at N=30. The vol_regime_filter does not underperform baseline by a meaningful margin on clustered-vol data when measured at adequate seed count.
The original PR #717 finding is now another case in the same pattern as PR #753’s “fifty seeds reveal the tie”:
At N less than 20, directional claims about Sharpe deltas within ±0.5 are within noise; the direction can flip with different seeds.
What this confirms
-
Both the negative result (PR #717) and the positive result (PR #746) were N=3-10 phenomena. Both collapsed at higher seed counts.
-
The N=100 leaderboard remains the source of truth. Per PR #760: ts_momentum +0.995, baseline +0.863, and yes, vol_regime_filter +0.649 — meaning vol_regime_filter DOES underperform baseline by 0.21 on the default i.i.d.-vol synthetic. The PR #717 claim about CLUSTERED-vol data was different; that’s what disappears at N=30.
What this rules out
-
Not “vol_regime_filter is fine.” It still underperforms baseline by 0.21 on the default i.i.d.-vol synthetic at N=100. The PR #717 specific claim — “vol-clustering makes vol_regime_filter dramatically WORSE” — is what’s disconfirmed.
-
Not “the discipline rules from PR #717 are wrong.” The rules (mean-reverting threshold vs persistent state classifier; intervention point matters) are still useful conceptual framings. They just don’t predict the SPECIFIC −1.3 Sharpe gap on this synthetic.
-
Not “the harness is broken.” It’s working as designed — surfacing the seed-by-seed variance that small-N tests hide. The discipline is: trust N=30+ over N=3-10.
Catalog implications
Two updates needed:
-
The catalog’s “Synthetic-equivalence note” should add: at N=30+ on clustered vol, baseline ≈ vol_regime_filter (consistent with at-N=100 i.i.d. behaviour where they’re slightly differentiable).
-
The session-summary v2 (and v3 when it exists) should downgrade the “vol-cluster breaks regime filter” claim from “established finding” to “small-N suggestion that didn’t survive.”
The discipline rule
Research notes anchored on N less than 20 seeds are provisional. Before treating any directional claim as established, re-run at N=30+. The harness output at N=3-10 is suggestive (worth investigating); at N=20+ is robust (worth publishing); at N=50+ is diagnostic (worth pinning with a regression test).
A corollary: the regression-test pattern from PR #782 is selective. ts_momentum > baseline is robust at N=30 (and survives a regression test). vol_regime_filter much-less-than baseline on clustered vol was NOT robust at N=30 (and the attempted regression test from this session was reverted).
The harness measures honestly. The session has now produced TWO small-N claims (PR #717’s clustered-vol gap and PR #746’s composite stack) that both collapsed at higher N. Two more examples for the small-N discipline corpus.
Closing observation
The session’s broader pattern is settling into a clean shape:
- Build a strategy (or composite).
- Run at N=10 — get suggestive directional Sharpe deltas.
- Re-run at N=30+ — refine or disconfirm.
- If robust at N=30+, write a research note.
- If robust at N=50+, write a regression test.
PR #717’s clustered-vol claim never made it past step 3 — it was treated as a step-4-worthy result based on step-2 evidence. The disconfirmation here corrects the record.
This is fine. The harness disciplines this naturally — when a future operator attempts a regression test (as I did for this note), they hit step 3 again, and either confirm or correct. The corpus of research notes accumulates, the small-N-disconfirmation cluster grows, and the corpus’s honesty improves with each cycle.