Event gates cost Sharpe when the event has edge
what you'll learn · Why an event-flatten gate underperforms its own baseline when the data generator gives the event a directional edge — and what the three arms (baseline, gate, gate's inverse) need to read together to find out.
Ran the 15-arm FOMC compare at a config where the synthetic has +50 bps drift baked into event days. Long-only wins (Sharpe 1.88), baseline trails at 1.24, the blackout and damping arms lose -0.11 and -0.14 Sharpe to baseline, the drift arm crashes to 0.64. The gates aren't broken — they're throwing away the exact exposure the synthetic data rewards.
The 15-arm FOMC compare at /strategies/compare/ ships a pinned
result for one config — seed 7, 200 bars, FOMC vol multiplier 3.0,
and the bit that does the work: fomc_drift_bps = 50. The
synthetic generator adds a +50 bps directional drift on event days
on top of the elevated vol. Every strategy reads the same price
panel; the only difference between arms is which positions they
hold near events.
The result reads top-to-bottom on Sharpe:
| Arm | Sharpe | Δ vs baseline |
|---|---|---|
| long-only momentum | 1.88 | +0.64 |
| equal-risk long-only | 1.88 | +0.64 |
| baseline (long-short) | 1.24 | — |
| spread filter (gate never engages) | 1.24 | 0.00 |
| blackout (24h pre-event flatten) | 1.13 | −0.11 |
| damping (continuous risk-off) | 1.11 | −0.14 |
| spread filter tuned | 0.83 | −0.41 |
| ts-momentum (absolute threshold) | 0.63 | −0.61 |
| drift capture (4h post-event) | 0.64 | −0.60 |
| vol-weighted momentum | 0.58 | −0.67 |
| two-factor (momentum + z-score) | −0.14 | −1.39 |
| three-factor | −0.27 | −1.51 |
| four-factor (tuned) | −0.53 | −1.77 |
| reversal (sign-flipped drift) | −0.64 | −1.88 |
The shape that matters: every event-gate arm underperforms its own baseline. Blackout flattens 24 hours before FOMC. Damping ramps risk-off smoothly. Both are giving up exposure during the window the synthetic rewards most. The drift-capture arm trades the wrong direction of the same mistake — it only holds for 4 hours after release, missing the broader drift. The reversal arm (drift’s sign-flipped counterfactual) is the cleanest reading of the data: at −0.64 Sharpe it confirms the event window is continuation-flavoured, not reversion-flavoured, by being the exact mirror of the drift arm.
Why this is the three-arm A/B doing its job
The two-arm shape baseline vs blackout answers “does the gate
move the PnL number?” — yes, blackout’s PnL is $59,780 vs
baseline’s $67,168. The gate moves the number ([[the-baseline-arm-you-forgot]]
calls this out). What that two-arm result can’t tell you is
which direction the event is moving the panel. The gate’s
inverse — the drift-capture arm — answers that: positive
capture-only Sharpe (0.64) and a positive PnL slice say the event
window has continuation-flavoured edge.
The blackout arm isn’t broken. The blackout arm is correctly implementing “give up the event window” on a data generator where the event window is positive-edge. The deficit (−0.11 Sharpe) is the cost of the protection — what the gate is paying to avoid the volatility the synthetic also bakes in. On this data the volatility doesn’t show up as additional drawdown (max-DD is identical across baseline/blackout/damping), so the gate is paying without receiving the protection benefit it would on data where the event window had real left-tail risk.
Long-only’s lead is the same lesson from the other side
long_only (and its equal-risk variant) lead at Sharpe 1.88
because they’re concentrating exposure into the top-quantile
basket — the same basket that captures the most of the +50 bps
event-day drift. The cost is per-seed dispersion (see [[long-only-buys-asymmetric-exposure]]
for the multi-seed Sharpe-stdev result), but at this single pinned
seed the bet is paying off. The point isn’t that long-only is
better — it’s that on data with positive event-day drift, strategies
that maintain exposure beat strategies that give it up, and
long-only is the cleanest “more exposure to the upper tail” arm
in the catalog.
What the factor arms read
The two-/three-/four-factor variants all underperform negatively. This isn’t a long-vs-event question — it’s the [[higher-moments-add-noise-faster-than-signal]] problem on a different surface. On a synthetic with positive directional drift, adding z-score (mean-reversion) to the score pulls weight away from the directional bet that actually pays. The four-factor-tuned arm is worst (−0.53) because the human-tuned weights overfit the wrong objective.
This is also the reading [[drift-vs-reversal-as-counterfactual]] predicts: when drift and reversal sit symmetrically around baseline, you can read which sign the panel is leaning before investing in a multi-factor sort.
The honest caveat
[[synthetic-data-shows-what-you-were-solving-for]] applies. This
result is what you get when you bake +50 bps of directional
event-day drift into a synthetic and then ask the catalog what it
thinks. Real FOMC days don’t come with a guaranteed directional
drift — they come with a vol shock and a regime that depends on
what was already priced in. The same comparison run with
fomc_drift_bps = 0 would change the leader (the gates stop
losing Sharpe; the long-only loses its directional edge). The
right way to read /strategies/compare/ is as a shape test:
which arms move in which direction relative to each other? The
synthetic axis is a tool to vary that test; the absolute numbers
don’t transfer.
What this is on the site
The visualised version of every Sharpe number above lives at
/strategies/compare/ — same data, on a
shared visual axis, grouped by intervention family. A reader who
wants to verify can run the regen command at the bottom of that
page and assert bytewise equality on the resulting JSON.