Skip to main content
← writing
2026-05-22 · 4 min read · ← 1 · strategy · research · events · evaluation

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.

deskgd findgf strategiesgs featuresge promotionsgp apiga botgb writinggw

Shortcuts are no-ops while typing in an input or textarea.