Three vol-intervention experiments, zero wins on this synthetic
what you'll learn · Why three different per-symbol vol-intervention shapes (filter/transition-filter/penalty) all underperform baseline on this synthetic, and what the cluster of negative results tells us about where the next experiment should go.
Across three different shapes — level filter, transition filter, score-stage continuous penalty — no per-symbol vol intervention beats baseline cross-sectional momentum on the harness. The score-stage penalty was the best of the three on clustered-vol data, but still below baseline. The meta-finding: cross-sectional momentum is robust enough that per-symbol vol interventions consistently cost Sharpe regardless of shape.
This session shipped three per-symbol vol-intervention variants:
vol_regime_filter(PR #655) — binary filter, gate on vol LEVEL (vol_5/vol_60 > 1.5).vol_transition_filter(PR #719) — binary filter, gate on vol CHANGE (|vol_5_now/vol_5_prev - 1| > 0.5).vol_penalty(PR #725) — score-stage continuous penalty (score - 0.5 × vol_5/vol_60).
The harness measured all three against baseline cross-sectional momentum, on both i.i.d. and clustered-vol synthetic modes:
Mode: I.I.D. Clustered (cluster=0.8)
baseline: +0.961 +1.348
vol_regime_filter: +0.791 +0.526
vol_transition_filter: +0.540 +0.329
vol_penalty: +0.591 +0.634
The pattern: zero wins
None of the three vol interventions beat baseline. The variant ordering changes between modes (level wins among the three on i.i.d.; penalty wins on clustered), but the cross-shape claim (“vol-aware intervention beats vol-blind baseline”) is rejected on every shape and every mode.
This is three independent shapes, two synthetic modes, six measurement points — and baseline wins every comparison. The disconfirmed-fix discipline (one shape failed → maybe wrong shape) doesn’t apply when ALL shapes fail in the same direction.
What does work, partially
The variant ordering still tells us something:
-
vol_penaltyhas the lowest stdev of the four on i.i.d. (0.594 vs baseline 1.021). Score-stage intervention preserves ranking structure → less per-seed dispersion. That’s interpretation B from the disconfirmed-fix note — score-stage > binary filter on stability. -
vol_penaltybeats both filter variants on clustered-vol data. Confirms that filter shapes specifically fail when vol has persistent state — the penalty’s continuous treatment is less sensitive to the level/change distinction. -
vol_regime_filterbeats the transition variant on i.i.d. Confirms the original level-gate design works when vol is mean-reverting; the transition variant adds noise without catching extra signal.
These are useful gradient-tracking observations, but they’re gradient on a function whose maximum is below baseline.
The meta-finding
On this synthetic, per-symbol vol intervention is the wrong operation. The cross-sectional ranking already averages across the universe → the universe-wide vol shape doesn’t help. Adding a per-symbol penalty (or filter) on top of the ranking creates bucket-boundary noise that costs Sharpe more than the noise reduction recovers.
Three reasons this might be specific to the synthetic:
-
No regime-specific alpha: the synthetic adds vol clustering but doesn’t make the clustering predictive of returns. Real markets often have vol-regime alpha (e.g., low-vol period → trend persists; high-vol period → mean-reversion). Our synthetic has neither.
-
No risk premium asymmetry: real markets have lower returns per unit of vol in high-vol regimes (vol risk premium). The synthetic’s per-symbol shocks are unsigned — no bias.
-
No correlation structure: real-market vol clustering often coincides with cross-symbol correlation regime change. Per-symbol intervention misses the cross-symbol signal.
What to do next
The three interventions exhausted the per-symbol-vol space. The next experiment should leave that space:
-
Cross-symbol vol gate. Compute universe-wide vol (median
vol_5/vol_60across symbols); size down the WHOLE portfolio when it’s elevated. This is the “portfolio-level gate” follow-up named in PR #723’s disconfirmed-fix note. -
Vol-conditional rebalancing frequency. Don’t try to gate on vol; just stop rebalancing during high-vol windows. The intervention is on the CADENCE, not the universe.
-
Real data. The simplest hypothesis is that the synthetic doesn’t have the alpha that vol intervention captures. Real US equities have documented vol-regime alpha; the same experiment on real data might tell a different story.
What this rules out
-
Not “vol-aware strategies don’t work.” They demonstrably work on real-market data in the published literature (Moreira & Muir 2017, Harvey 2018, etc.). The negative result is synthetic-specific.
-
Not “the strategies are wrong.” The implementations are correct (unit tests pass, contract tests pass, behaviour matches the spec). The strategies do exactly what they say — they just don’t add value to baseline on this synthetic.
-
Not “interpretation B was wrong.” Interpretation B predicted score-stage > binary filter on stability. That’s confirmed (vol_penalty has lower stdev). Interpretation B ALSO predicted score-stage > baseline on mean. That’s not confirmed.
The discipline rule
When N independent shapes of the same intervention all fail in the same direction, the intervention itself is the wrong operation for the data — not the shape. Move to a different intervention point (cross-symbol, cadence, score-feature) rather than refining the failed shape.
A corollary: the harness’s measurement discipline is what made this rule visible. Without three independent shapes + multi-seed
- dual-mode + side-by-side reporting, “vol intervention doesn’t work here” would be one unconfirmed claim. With it, it’s a documented pattern with concrete numbers.