Skip to main content
verified results15 armssynthetic FOMC shocksseed 7 · 200 bars

Does the event gate earn its cost?

15 cross-sectional momentum variants run against the same synthetic universe, same FOMC vol shocks, same 200-bar window. Every arm consumes the identical price stream — the only difference is the rule the strategy applies. Bars below sort Sharpe-descending; deltas anchor to theXsMomentumLiveStrategybaseline.

Synthetic data — no claim of an edge that transfers to real markets. The point is to show every arm under the same conditions so an operator can read the *relative* shape, not the absolute number.

sorted high → low

Sharpe domain -1.00 → 2.00. Pnl values in synthetic dollars (the universe starts at $100 base). Max drawdown is peak-to-trough over the 200-bar window.

seeds 7..11

The single-seed leaderboard above can be a fluke. This table re-runs the same 15 arms across5 consecutive seeds and sorts by *mean* Sharpe — what's consistent across the sweep, not what happened to lead on one seed. The bar shows the mean; the numbers beside it show the 5-seed stdev and min/max range.

  • mean leaderTime-series momentum · absolute-threshold
    stdev 0.78 · range 0.632.14
  • Vol-weighted momentum
    stdev 0.74 · range 0.262.15
  • FOMC blackout · flatten 24h pre-event
    stdev 0.48 · range 0.361.61
  • Spread filter · tuned threshold
    stdev 1.00 · range -0.262.10
  • Event damping · continuous risk-off near FOMC
    stdev 0.49 · range 0.341.62
  • baselineBaseline · long-short cross-sectional momentum
    stdev 0.58 · range 0.171.66
  • Spread filter · gate on cross-sectional dispersion
    stdev 0.58 · range 0.171.66
  • Long-only · top-quantile momentum
    stdev 1.49 · range -0.932.45
  • Equal-risk long-only
    stdev 1.49 · range -0.932.45
  • Post-FOMC reversal · sign-flipped drift
    stdev 0.77 · range -0.641.14
  • Four-factor · adds skew
    stdev 1.03 · range -1.291.51
  • Post-FOMC drift · capture 4h after release
    stdev 0.77 · range -1.140.64
  • Three-factor · momentum + z-score + vol
    stdev 0.57 · range -0.880.39
  • Two-factor · momentum + z-score
    stdev 0.68 · range -1.140.37
  • Four-factor · tuned weights
    stdev 0.39 · range -0.590.35

What this reading changes: an arm that led on seed7 but has stdev >1.0 across the sweep is high-variance, not actually better — the wide min/max range tells you which seed got which luck. An arm near the top with stdev under 0.58(baseline's noise floor on this sweep) is the consistent leader.

  • 1 arm
    • Baseline · long-short cross-sectional momentumsharpe 1.24
  • 4 arms
    • Two-factor · momentum + z-scoresharpe -0.14
    • Four-factor · adds skewsharpe -0.23
    • Three-factor · momentum + z-score + volsharpe -0.27
    • Four-factor · tuned weightssharpe -0.53
  • 1 arm
    • Vol-weighted momentumsharpe 0.58
  • 2 arms
    • Long-only · top-quantile momentumsharpe 1.88
    • Equal-risk long-onlysharpe 1.88
  • 1 arm
    • Time-series momentum · absolute-thresholdsharpe 0.63
  • 2 arms
    • FOMC blackout · flatten 24h pre-eventsharpe 1.13
    • Event damping · continuous risk-off near FOMCsharpe 1.11
  • 2 arms
    • Post-FOMC drift · capture 4h after releasesharpe 0.64
    • Post-FOMC reversal · sign-flipped driftsharpe -0.64
  • 2 arms
    • Spread filter · gate on cross-sectional dispersionsharpe 1.24
    • Spread filter · tuned thresholdsharpe 0.83
$ uv run python scripts/build_compare_fixture.py
wrote examples/fomc_blackout_compare/results.json (15 arms)

The script holds the pinned config (seed = 7, days = 200, fomc_vol_multiplier = 3.0000, fomc_drift_bps = 50.0000) and rewritesresults.json. Each arm's Sharpe / PnL / drawdown is a real backtest number — no fixture fudge-factor. Bumping a config value in the script is a deliberate rotation of these on-site numbers.

deskgdfindgfstrategiesgsfeaturesgepromotionsgpapigabotgbwritinggw

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