FOMC Drift
Long SPX in the 24 hours before FOMC — the Lucca-Moench anomaly
Risk
Low
Holding Period
~2-3 trading days per event
Best For
Any macro regime where the Fed cycle matters
How it works
Lucca & Moench (2015, Journal of Finance) documented that the S&P 500 earned an average excess return of ~49 bps over the 24 hours preceding scheduled FOMC announcements from 1994-2011. The anomaly persists out-of-sample and cannot be explained by known risk factors. This strategy is the mechanical trade: enter long SPX the business day before each FOMC meeting, exit flat the business day after. 8 events/year × ~50bps ≈ 4% gross annual edge, uncorrelated with other factors.
Mathematical Foundation
enter long @ T−1 close exit flat @ T+1 close, T = FOMC announcement daySignal Generation Logic
- 1Maintain a hand-curated list of scheduled FOMC announcement dates (2022-2026 baked in; Phase 4.2 will scrape automatically)
- 2For each FOMC date that falls within the data window:
- 3Locate the last business-day close strictly BEFORE the announcement — that's the entry timestamp
- 4Locate the first business-day close strictly AFTER the announcement — that's the exit timestamp
- 5Emit a long entry signal (direction=1) at T−1 and an exit (direction=0) at T+1
- 6Only trades SPX500_USD by default; the edge is most documented on the S&P 500 cash index and its CFD equivalent
- 7Size is a fixed fraction (15% default) — the historical effect is ~50bps per event and position-sizing doesn't change the expected direction
Parameters Explained
target_assetInstrument to trade. Default is the OANDA SPX500 CFD. Could point at futures (ES) or ETF (SPY) if available in the data feed.
Default
SPX500_USDsize_fractionFraction of capital deployed per event. The Lucca-Moench edge is ~49bps per event; sizing affects dollars made but not the expected direction.
Default
15%fomc_datesOverride the built-in FOMC calendar (useful for tests or to extend past 2026). Expects YYYY-MM-DD strings.
Default
built-inWhen It Works
The Lucca-Moench anomaly has been remarkably persistent since discovery — it's still visible in 2015-2024 data. Works best when pre-FOMC positioning builds up equity exposure (i.e., most of the regime since 1994). The effect is strongest when the meeting is preceded by material policy uncertainty.
When It Fails
Events where the outcome is already fully priced (e.g., pure no-change decisions after months of clear forward guidance). Also sensitive to surprise hawkish pivots — the drift into the meeting partially reverses after.
Risks & Limitations
- Low frequency: ~8 events/year means limited sample size for individual strategy evaluation
- Static calendar: the MVP bakes in dates through 2026 — must be refreshed manually (or the strategy silently stops trading when it runs out of dates)
- Overnight gap risk: held over the announcement, so the position experiences the headline move. The 'drift' is pre-announcement; post-announcement volatility can wipe it out
- Highly specific to the S&P 500 — generalizing to other assets isn't supported by Lucca-Moench's evidence
Implementation
FOMC_MEETING_DATES is a hand-curated list sourced from federalreserve.gov/monetarypolicy/fomccalendars.htm. pre_fomc_entry_date and post_fomc_exit_date resolve the exact trading-day boundaries using the asset's own index (so weekends and holidays are handled). Unlike most strategies, FOMC drift emits explicit direction=0 exits — the engine then records clean round-trip trades.
Model parameters
Target Asset
S&P 500 CFD — the documented anomaly asset
Size per Trade
Fraction of capital deployed per event
Entry
Business day before each FOMC announcement
Exit
Business day after the announcement
Academic background
Academic Basis
Based on Lucca & Moench (2015), 'The Pre-FOMC Announcement Drift', Journal of Finance
Backtest this strategy
Run the exact model on your selected assets and date range. See trade-by-trade performance.
Backtest This →