Composite strategies can interfere
what you'll learn · Why composing two winning strategies on the same data can produce a result worse than either alone, and how to read 'interferes' as evidence about what mechanism a strategy is actually using.
Two top-of-leaderboard strategies — three_clock_momentum (highest min-Sharpe) and vol_regime_filter (highest mean) — got composed into one. Expectation: stack. Result: interferes. The composite's mean sits between the parents, its min goes below both, and the variance contribution from the gate is unchanged. On synthetic data with one signal source, both noise-reducers smooth the same noise; you can't double-count.
The 17-arm comparison harness had two arms at the top:
three_clock_momentum: mean +1.429, stdev 0.672, min +0.396
vol_regime_filter: mean +1.493, stdev 1.383, min −0.069
Different mechanisms (composite-score vs per-symbol gate), both beating the same baseline by a meaningful margin. The natural next question: what happens when you compose them?
Hypothesis A (stack): if the composite-score captures multi-horizon trend persistence and the vol-regime gate captures regime stability, they’re orthogonal. The composite should produce a mean above the higher parent, with variance somewhere between.
Hypothesis B (interfere): if both arms are working via the same mechanism (noise reduction, in different forms), composing them just doubles the variance contribution without adding new signal. The composite produces something between the parents — neither parent’s edge fully transfers.
XsThreeClockMomentumWithVolRegimeStrategy shipped to measure
it. Result:
three_clock_vol_regime: mean +1.460, stdev 1.370, min −0.310
Reading the four numbers
The mean (+1.460) sits between the parents. Worse than
vol_regime_filter (+1.493), better than three_clock_momentum
(+1.429). The vol-regime gate’s mean advantage didn’t transfer
when paired with the three-clock score; the three-clock’s
stability didn’t moderate the gate.
The stdev (1.370) ≈ vol_regime_filter’s 1.383 — the gate
dominates the variance contribution. The three-clock’s
0.672 stdev didn’t help.
The min (−0.310) is worse than either parent (−0.069 or +0.396). The combination has a worst-case below both constituents. This is the most interesting number: composing two arms gave us a lower floor.
The max (+2.881) is between the parents (parents: +2.079, +3.307). Symmetric with the min — composing didn’t expand the upside either.
The headline: the composite gets the gate’s variance with the three-clock’s worse mean and a min worse than either alone. Hypothesis B confirmed.
Why this is informative
The “interferes” result is evidence about what mechanism the two arms are actually using. If they had different mechanisms, the composition would stack. The fact that it doesn’t says: both arms are doing the same thing in different forms.
Specifically:
vol_regime_filterreduces noise by dropping symbols whose vol regime is unstable (small universe → less averaging → more concentration → mean up, variance up).three_clock_momentumreduces noise by averaging three horizons (more samples → smoother score → mean up modestly, variance down).
Both shapes happen on synthetic data where the only “alpha” is the FOMC drift. Both arms find it by reducing the noise around it; they don’t see different sub-signals.
Composing them: the gate cuts the universe, leaving the three-clock score running on fewer names. The score still works, but its noise-reduction comes from averaging across many symbols — with fewer symbols, the averaging weakens. The gate’s variance penalty stays. Net: gate’s variance + weakened score = worse than either alone in the worst case.
What this rules out
- Not a critique of either parent strategy.
three_clockis still the second-highest-mean arm with the second-highest min-Sharpe in the harness.vol_regime_filteris still the highest-mean arm. - Not “composition is bad.” Real data has multiple genuine alpha sources (vol-regime change is sometimes the signal, not the noise). On data where the gate and the score see different things, the composite would stack.
- Not “the synthetic is wrong.” The synthetic does what it was built to do (provide a single FOMC-drift signal under isotropic noise). The composite-interferes result is a feature of the single-signal property of the data, not a bug.
What it shows about measurement discipline
A naive operator reads the headline numbers (three_clock
+1.429, vol_regime +1.493) and concludes the composite must be
even better. The harness measurement says no. The discipline
rule:
When composing two strategies, predict whether they share a mechanism. If yes, measure before deploying — they’ll interfere on data without enough independent signal. If no (different alpha sources), the composition is sound by construction.
The harness is the measurement surface that turns the prediction into a number. Without the 18-arm A/B, “stack vs interfere” remains theoretical. With it, the answer is a row in a table.
What’s next
Two follow-ups suggest themselves:
-
Vary the synthetic. Add a second signal source (sector-rotation, vol-clustering, mean-reverting noise) and re-run. If the composite begins to stack, that’s evidence the original “interferes” was specific to the single-signal regime, not a generic property.
-
Verify on real data. Stale-thesis policy says we can’t claim a result until real-data confirms it. Real US equities have multiple genuine signals; the composite might stack there. The harness is wired and waiting.
Both out of scope for this PR.
The discipline rule
A higher-mean parent and a more-stable parent don’t compose to a higher-mean, more-stable child. Measure before assuming additivity. “Interferes” is a real outcome, especially on data with one alpha source — it tells you both strategies are finding the same edge from different angles, not different edges.
A corollary: when the harness shows two top arms, run the composite arm before declaring either the winner. The composite result is evidence about what they’re doing, not just about which is better.