The baseline arm you forgot to include
what you'll learn · Why measuring a risk-reduction gate against its inverse on the same data tells you something the two-arm version structurally can't.
An A/B with two arms tells you whether your gate moves the number. A run with the gate's inverse as a third arm tells you whether the input data has anything for the gate to defend against. Most A/Bs are missing the third arm and don't know it.
A two-arm A/B on a risk-reduction gate — strategy with gate vs strategy without gate — answers exactly one question: does the gate move the PnL number? It does not tell you whether the data the strategy is reading has any event-specific signal worth gating against. That second question is the one the operator usually actually wants answered, and the two-arm shape can’t answer it.
The third arm is the gate’s inverse. Run it on the same data, the same panel signal, the same backtest harness, the same seed, and look at all three numbers together. The shapes of the three deltas tell you something neither pair tells you alone.
The 3-arm shape
For any “trade in the X regime, flat outside” or “flat in the X regime, trade outside” gate, the three arms are:
- Baseline — the panel signal with no event gate at all. The thing the gate is wrapping.
- Gate-on — the strategy that flattens (or trades) inside the gate window.
- Gate-inverse — the strategy that does the opposite: trades inside the window that the gate-on arm flattens, and vice versa.
Sharpe per arm, plus deltas vs the baseline. Two numbers (the deltas) tell the story.
What the four delta shapes mean
| Gate-on Δ | Gate-inverse Δ | What the data is saying |
|---|---|---|
| ≈ 0 | ≈ 0 | The gate has no effect; the X regime is statistically indistinguishable from the rest. The gate is ceremony. |
| < 0 | < 0 | Both event-aware variants underperform the baseline. The event regime has exposure worth keeping (volatility), but no directional signal. The gate-on costs sharpe by avoiding good-vol days; the gate-inverse costs sharpe by trading too rarely. |
| < 0 | > 0 | The event regime has a directional signal that the panel model accidentally trades against. The gate-on flattens through the bad period; the gate-inverse captures it deliberately. |
| > 0 | < 0 | The event regime has a directional signal that the panel model accidentally trades with. The gate-on misses the good period; the gate-inverse harvests it. (Rare in practice — the panel model usually has zero event-day information.) |
Only the third row is “the gate earns its cost AND the data supports it.” Rows 1 and 2 say the gate isn’t doing real work, just different shapes of expensive caution. Row 4 says you’ve found the alpha by accident.
Why the inverse arm is structurally necessary
Without it, a 0.1-Sharpe degradation from the gate-on is ambiguous. It could mean:
- The gate-on is paying for caution against a real risk, and the data has matching directional signal somewhere else that the caution lets you miss — but the inverse would have shown you where.
- The gate-on is paying for caution against a phantom risk, and the data has nothing for either arm to capture.
- The gate-on is the right response and the inverse arm would have lost much more.
The two-arm shape resolves none of these. The three-arm shape resolves all three, and at zero extra data cost: same prices, same seed, same harness, one more strategy registration.
What this looks like in alphakernel
The platform’s event-clock surface ships with both ends of the gate pair:
XsMomentumWithFomcBlackoutStrategy— flatten 24h before FOMC.XsMomentumPostFomcDriftStrategy— only trade 4h after FOMC.
Same XsMomentumLiveStrategy panel signal underneath, same
event_release silver upstream, opposite sign on the gate. The A/B
harness examples/fomc_blackout_compare.py runs all three.
The result on synthetic isotropic-shock data: row 2 of the table. Both gates underperform the baseline, both for different reasons. That’s the correct answer on a data generator that has no directional FOMC signal — the synthetic noise floor matches the absence-of-edge premise, and the harness reports it honestly. The moment you point the same harness at real data with a real post-FOMC drift signal documented in the literature (Cochrane & Piazzesi 2002, and the follow-ups), the table should shift to row 3 or row 4 — and the inverse arm tells you which.
When the discipline doesn’t apply
The 3-arm shape is overkill for two cases:
-
Pure risk policies with no alpha claim. “Flat through the blackout because if the broker disconnects mid-FOMC I have no recourse.” The cost is an operational guarantee; you’re not asking the data whether the gate captures alpha. The gate-inverse arm has no question to answer. The two-arm shape (or none) is fine.
-
Gates where the inverse is meaningless. “Don’t trade in symbols whose universe-membership ended yesterday.” The inverse (“only trade in symbols whose membership ended yesterday”) isn’t a sensible thing to measure. Many universe-construction gates are like this. Use a two-arm comparison and document why the inverse is N/A.
For everything else — every event window, every regime gate, every “do this in conditions X” filter — the inverse arm fits in 30 lines of code and answers the question the two-arm shape leaves on the table. Add it.