Markets › Stocks & ETFs · SPY ETF, daily closes, with dividends

Pre-FOMC Announcement Drift Backtest: Do Stocks Rise Before the Fed? 32 Years of SPY

A famous study found that US stocks earned a large share of their return in the hours before Federal Reserve announcements. We held SPY into every scheduled FOMC announcement from 1994 to 2026, with costs, and compared it with random days of the same month and weekday.

SPY · daily closes, with dividends · buy at the close before each scheduled FOMC announcement, sell at the close of the announcement day · Protocol v1.0 plus the 8 Oct and 4 Nov 2026 rules

Buried · No proven edge

Paid before the Fed for twenty years. Then it stopped.

BornFrozen 4 Nov 2026 (pf_spec.md), before any FOMC-day trade was computed
Died4 Nov 2026

Variants tried: 1 · Passed every gate: 0 · Best: 4 of 6 · Holdout opened: yes (already used)

Short answer: they used to. Holding SPY from the close before each scheduled FOMC announcement to the close of the announcement day made +0.20% a trade after costs from 1994 to 2026, well ahead of random days of the same month and weekday, but nothing since 2016 (-0.01% a trade). It passed four of our six gates.

00The verdict in three lines

  • Do stocks rise before Fed announcements? They did. Holding SPY into each scheduled FOMC announcement made +0.196% a trade after costs over 261 announcements, about 6 times an ordinary day before costs, and beat random days of the same month and weekday at the 99.8th percentile.
  • But not lately: +0.160% a trade from 1994 to 2005, +0.457% from 2006 to 2015, -0.010% since 2016.
  • Buried, four of six gates, no proven edge: an edge that seems to have gone after it became famous.

01The pre-FOMC announcement drift

The Federal Open Market Committee (FOMC) sets US interest rates at eight scheduled meetings a year, and announces its decision in the afternoon of the last meeting day. David Lucca and Emanuel Moench (“The Pre-FOMC Announcement Drift”, Journal of Finance, 2015) found that from 1994 to 2011 the S&P 500 rose on average by about half a percent in the 24 hours before those announcements, a large share of the equity premium of those years, while the announcements themselves moved it little on average.

Why it could work: investors may demand a premium to hold stocks into an uncertain policy event, or buy ahead of a Fed they expect to be supportive. Why it might not: the effect has been widely known since 2011-2015, and later work, such as Kurov, Wolfe and Gilbert, “The disappearing pre-FOMC announcement drift” (Finance Research Letters, 2021), found it much weaker after 2015.

Our other calendar tests on the same SPY file: the turn of the month and the day before market holidays.

02How we made the rules mechanical

  • Announcement days: from the Federal Reserve's own meeting calendars for 1994 to 2026 (the historical pages and the current calendar), saved on 4 Nov 2026. Only scheduled meetings count: eight a year, seven in 2020, when the March meeting was cancelled. Unscheduled meetings, emergency calls and notation votes are excluded, since nobody knew their date in advance. The announcement day is the meeting's last day.
  • The trade: buy SPY at the close of the trading day before the announcement and sell at the close of the announcement day. Fills at the close, long only, one day, no stop. One variant, fixed before the run.
  • One correction to the Fed's list: its 2003 page lists a “September 15 Meeting” next to that meeting's agenda, but the statement came on 16 September; we use the 16th.

The announcements fell on 166 Wednesdays, 85 Tuesdays and a few Thursdays and one Friday.

03How we tested it

SPY daily closes from 1993 to 20 October 2026 with all 136 dividends (Yahoo Finance history, the file of our other SPY tests). Costs: 0.04% of the price a round trip, with 0.10% shown too. Unit: net % per trade. Periods by entry date: 1994 to 2005, 2006 to 2015, and a holdout from 2016 already used by four earlier SPY tests. First-period bar t ≥ 2.0. Control, under our rule of 4 November 2026 for calendar tests: for every real trade, one random day of the same month and the same weekday, never an announcement day, 500 times. A Wednesday Fed day is compared with the other Wednesdays of its month, so a day-of-the-week effect cannot pass for a Fed effect. Engine check: the date list (eight a year, the 2003 correction, meetings spanning two months), hand-made days and an independent re-implementation that matched all 261 real trades (21 checks; pf_selftest_result.txt).

04Results: is the pre-FOMC drift still there?

VariantDay heldTradesWin rateNet per tradeNet total (sum of trade %)Profit factorVerdict
PFScheduled FOMC announcement days26153.3%+0.196%+51.1%1.59Buried
0%10%20%30%40%50%60%1995200020052010201520202025validationholdout*

Cumulative net % of the announcement-day trades (sum of trade %), by month. * Holdout already used before this test.

The line climbs until 2015 (+51.9% by then) and goes sideways after, ending lower (+51.1%). At 0.10% a round trip the sum would be +35.4%. As a whole strategy, in SPY on 3.2% of the days and in T-bills otherwise, it made 4.0% a year against 10.8% for buy-and-hold.

05Fed day or any Wednesday?

DaysDaysBefore costs, per dayAfter 0.04%, per dayShare of days up (after costs)
FOMC announcement days261+0.236%+0.196%53.3%
Every other day of the file8,227+0.042%+0.002%51.9%
VariantTradesReal net per tradeSame month and weekday, medianRandom, 5th to 95thPercentile (95 needed)
PF261+0.196%+0.015%-0.075% to +0.117%99.8

This is the strongest result against random days of any calendar test on the site. The same number of days, drawn from the same months and weekdays, made a median of +0.015%; the Fed days beat 99.8% of the random sets.

06Before the announcement and after it

Each trade split into the move from the previous close to the morning open of the announcement day, and the move from the open to the close, which includes the announcement at 2:00 or 2:15 p.m. (before costs, descriptive):

PeriodTradesClose to open (overnight)Open to close (announcement day)
1994 to 200596+0.038%+0.163%
2006 to 201580+0.215%+0.282%
Holdout* 2016 to Oct 202685+0.164%-0.134%
All261+0.133%+0.103%

Since 2016 the overnight part still gained +0.164% on average, but the trading day of the announcement lost -0.134%. With daily closes we cannot sell just before the announcement, as the original study measured; whether a pre-announcement drift survives in the morning hours would need intraday data. The day after the announcement lost on average (section 08).

07By period, by year and by weekday

PeriodTradesNet per tradeWin rateProfit factort
1994 to 200596+0.160%58.3%1.511.59
2006 to 201580+0.457%60.0%2.612.97
Holdout* 2016 to Oct 202685-0.010%41.2%0.98-0.08
YearTradesSum of trade %
19948-0.96%
19958+4.10%
19968+1.97%
19978-1.69%
19988+3.79%
19998+4.42%
20008+0.24%
20018-2.26%
20028+0.81%
20038+3.93%
20048+1.67%
20058-0.67%
20068+0.71%
20078+4.56%
20088+11.33%
20098+8.94%
20108+1.15%
20118+1.37%
20128+4.73%
20138+0.17%
20148+1.18%
20158+2.41%
20168-1.17%
20178+0.50%
20188-3.60%
20198-0.01%
20207+4.64%
20218+0.10%
20228+3.82%
20238+0.01%
20248-1.41%
20258+1.19%
2026 (to Sep)6-4.89%

* The holdout years were already used by our earlier SPY tests.

The best announcement was 16 December 2008, when the Fed cut rates to near zero (+4.67%); the worst was 18 December 2024 (-3.02%). Tuesday announcements did better than Wednesday ones (+0.334% against +0.113% a trade); there has been no Tuesday announcement since 2016, the years in which the drift disappeared, so the gap mostly reflects the period, not the weekday. Without the 10 best trades the sum stays positive (+18.5%); without the 20 best it is -0.6%.

08Other holds (descriptive, looked at after the gates)

HoldDays heldNet per tradet, first periodPF, second periodHoldout* (sum)Control percentileGates
The announcement day (the rule)1+0.196%1.592.61-0.8%99.84/6
The day before the announcement day1+0.097%1.661.11+3.8%91.02/6
Two days: the day before and the announcement day2+0.330%2.672.36+6.5%100.06/6
The day after the announcement1-0.061%1.490.59-10.0%6.81/6

Holding two days, the day before and the announcement day, passed all six gates. We saw that only after the results, so it does not count: choosing the best hold after seeing the data is what our protocol forbids. It would need new data, or a test in real time. The day after the announcement lost on average and was worse than 93% of random days.

09The gates

VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.0 on development4. Above the 95th percentile of the same-month, same-weekday control5. Positive without the 10 best trades6. Holdout net positive (already used)
PF261passpassfailpasspassfail
VariantCauseGates failedVerdict
PFNo proven edge3, 6Buried

No proven edge: positive and well ahead of random days, but the first period was not clear enough and the holdout lost. There are no gaps in the file other than real market closures, so the data-gap check does not apply.

TWhat this shows, and what to take into your own tests

What the results show

  • Holding SPY from the close before each scheduled FOMC announcement to the close of the announcement day made +0.196% a trade after costs over 261 announcements, 1994 to 2026, and beat random days of the same month and weekday at the 99.8th percentile.
  • It failed two of our six gates: the first period was positive but not clear enough (t 1.59), and since 2016 it has made nothing (-0.010% a trade).
  • Since 2016 the part before the announcement, from the previous close to the morning open, still gained +0.164% on average; the rest of the day lost -0.134%.

What remains unknown

  • An exit just before the 2:00 p.m. announcement, as in the original study. Daily closes include the reaction to the announcement; intraday data would separate the two.
  • Whether the drift comes back. Our holdout years had already been used by four earlier SPY tests.
  • Other markets: index futures, bonds, other central banks.

Why it was buried

The edge was real in our data for about two decades: it beat same-month, same-weekday random days at the 99.8th percentile and survived without its best trades. But it was not clear enough in the first period, and it has been flat since 2016, after the effect was published and widely traded. By our rule the label is no proven edge; in plain words, an edge that seems to have gone.

What you can apply to your own tests

  • Match the control to the calendar: compare a Wednesday Fed day with other Wednesdays of the same month, not with any day.
  • Look at the most recent period before trusting an effect from a famous paper; publication can be the beginning of the end.
  • Split a one-day trade into its overnight and daytime parts; they can tell different stories.

A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.

FAQCommon questions

What is the pre-FOMC announcement drift?

The finding by Lucca and Moench (Journal of Finance, 2015) that from 1994 to 2011 the S&P 500 rose on average by about half a percent in the 24 hours before scheduled Federal Reserve announcements.

Does the stock market go up before Fed meetings?

It did in our test of SPY: announcement days made +0.24% before costs on average, about five times an ordinary day, from 1994 to 2015. Since 2016 the gain before the announcement has been cancelled by the moves after it.

How do Fed meetings affect stocks?

On average, in our data, stocks rose into the announcement and gave some of it back the next day: the day after an announcement averaged slightly negative. Since 2016 the morning gain (+0.16% from close to open) has been followed by an average loss during the announcement day (-0.13%).

Has the pre-FOMC drift disappeared?

In our test, yes, for now: +0.46% a trade from 2006 to 2015, -0.01% from 2016 to 2026. Later studies reported the same after 2015.

How was the pre-FOMC drift tested?

On SPY daily closes with dividends, 1994 to 2026, with the scheduled announcement days from the Federal Reserve's calendars, the rule fixed before any number was computed, 0.04% of costs per round trip, a control of random days of the same month and weekday, and rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.

10Check our arithmetic

Frozen specificationWhy this test, the date list, the rule, costs, periods, gates and the same-month, same-weekday control, dated before any trade was computed, with a log of the run.
pf_spec.md
FOMC datesThe scheduled announcement days read from the Federal Reserve's calendar pages, with the page each one came from, and the script that reads the pages.
fomc_scheduled.csv · pf_dates.js
CodeThe engine, the independent re-implementation, the self-test and the run (node pf_run.js, which refuses to run unless the specification is frozen and the self-test passed).
pf_lib.js · pf_ref.js · pf_selftest.js · pf_run.js
Shared codeThe SPY loader and the equity, statistics and control helpers of our other SPY tests, and the script that reads the saved price page.
control_audit_lib.js · gh_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js · sma200_lib.js · tom_lib.js · spy_parse.js
DataThe T-bill series (FRED). The SPY prices are Yahoo Finance's and are not ours to republish: save the SPY “Historical Data” page (Daily, Max) and spy_parse.js reads it. File fingerprints are in the specification.
dtb3_fred_raw.csv
ResultsThe self-test result, the console output of the run, the gates and all numbers.
pf_selftest_result.txt · pf_results.txt · pf_gates.json · pf_summary.json
Trade log (CSV)Every trade: announcement date, weekday, entry and exit close, the overnight and day parts, gross and net % of the price.
PF

Code provenance: our own code, written from the specification.

11Data notes

Source. Yahoo Finance daily history of SPY, read from the saved history page; the Federal Reserve's calendar pages for the dates. Timing. From 1994 the Committee announced its decision on the day; the time of the announcement has moved between about 2:00 and 2:15 p.m. over the years, which daily closes do not need. Fills at the official close; real market-on-close orders can differ slightly. Not included: taxes. Exploratory: one ETF, one rule, a holdout already used.

12Corrections

None since publication.

+More tests and guides