Prism Data Lab

Every analysis here ships its dataset and the code that produced every figure. Nothing on this site is investment advice.

Data Analysis1,877 words, 9 minutes

An event study around 199 FOMC announcements, honestly scored

Rates, VIX and the Nasdaq in a five-day window around every FOMC statement since 2003, with permutation tests, a multiple-testing correction, and what survives it.

Between January 2003 and September 2026 the Federal Open Market Committee published 199 policy statements. This article measures what happened to two Treasury yields, the VIX and the Nasdaq Composite in the two days before, the day of, and the two days after each of them, tests every result against a permutation null, and then applies the correction that most event studies skip. The dataset and the script that printed every number are attached. Nothing here is investment advice, a forecast, or a strategy.

The short version: on announcement days rates move about sixty per cent further than usual and in no predictable direction, and the one directional result large enough to notice does not survive being counted honestly.

Getting the dates right

An FOMC meeting is one or two days long, and the decision is published at the end. An event study wants the publication date, not the meeting's first day, and the difference is a whole trading session.

The Fed does not publish a machine-readable list of announcement dates, but it does link every statement from its calendar and historical-materials pages, and the statement's own URL carries the date. Four spellings have been used over the years:

/newsevents/pressreleases/monetary20260916a.htm     current
/newsevents/press/monetary/20080130a.htm            mid-2000s
/boarddocs/press/monetary/2003/20030129/            early 2000s
/monetarypolicy/files/monetary20260128a1.pdf        the PDF alongside

Collecting all four across the calendar and the twenty-one historical pages gives 199 dates from 2003 onwards, and the per-year counts are the check that nothing was missed:

Years Announcements per year
2003 to 2006, 2009, 2011 to 2018, 2021 to 2024 8, the scheduled calendar
2007, 2008, 2010, 2019, 2025 9
2020 12
2026 6 so far

Eight is the scheduled number. The extras are intermeeting actions, which belong in the sample: an unscheduled statement is an announcement. 2020's twelve is the pandemic year. The 2000 and 2001 pages carry no statement link in any of the four forms, and 2002 yields only six, so the sample starts in 2003 and the script says so rather than quietly including a partial year.

What is measured

Yield and VIX changes are level changes in basis points. Nasdaq changes are log returns in basis points, so 100 is one per cent. Each series is compared against every trading day in the same period that is not an announcement day, and the window runs from two days before to two days after.

Because daily returns have fat tails and 197 is not a large sample, every mean is also tested by drawing 197 days at random from the same period 20,000 times under a fixed seed and asking how often the random mean is at least as far from zero. That permutation p value is the one worth reading; the t statistic is printed beside it for comparison and it is consistently the more generous of the two.

Two of the 199 dates fall on days FRED has no change for, so the sample is 197.

Rates: the size moves, the direction does not

Series Offset Mean t Days up Mean absolute Permutation p
DGS2 t-2 +0.32 +0.80 91/197 3.35 0.3841
DGS2 t-1 -0.18 -0.46 83/197 3.10 0.6323
DGS2 t -0.43 -0.79 85/197 5.37 0.2546
DGS2 t+1 -0.69 -1.75 74/197 3.72 0.0689
DGS2 t+2 -0.42 -1.02 74/197 3.80 0.2657
DGS2 other days +0.07 2427/5736 3.37
DGS10 t-1 -0.72 -1.86 79/197 3.80 0.0757
DGS10 t -0.50 -0.92 92/197 5.34 0.2185
DGS10 other days +0.04 2605/5736 4.23

The two-year yield moves 5.37 basis points on an average announcement day against 3.37 on an average other day, a ratio of 1.59. The ten-year moves 5.34 against 4.23, a ratio of 1.26. That ordering is what you would expect if the statement is mostly news about the policy path rather than about the far end of the curve, and it is the clearest thing in the whole study.

The mean signed change is nothing. Not small: nothing. The two-year's -0.43 basis points has a standard error of 0.54, and its permutation p is 0.25. Across ten rate tests the lowest p is 0.0689. If you knew in advance that a statement was coming, you would know the day would be busier than usual and you would know nothing at all about which way.

This is the shape a functioning expectations channel produces. The level of rates after the meeting is already in the price before it; what is not in the price is the surprise, and surprises are symmetric by construction.

VIX: uncertainty builds, then is released

Series Offset Mean t Days up Permutation p
VIXCLS t-2 +29.90 +2.66 119/197 (60.4%) 0.0231
VIXCLS t-1 -8.04 -0.51 97/197 0.5282
VIXCLS t -38.52 -2.43 73/197 (37.1%) 0.0051
VIXCLS t+1 +23.10 +1.51 92/197 0.0742
VIXCLS t+2 +1.26 +0.10 86/197 0.9204
VIXCLS other days +1.07 2646/5803 (45.6%)

The VIX rises about 0.30 points two days before a statement and falls about 0.39 points on the day, and it falls on 62.9 per cent of announcement days against 54.4 per cent of other days. The pattern is coherent: implied volatility is bid up into a scheduled event and released once the event has happened and the option premium that was pricing it decays. Whether it survives being counted honestly is the next section.

The Nasdaq, and the number that looks like something

Series Offset Mean t Days up Mean absolute Permutation p
NASDAQCOM t-2 -4.09 -0.48 112/197 86.41 0.7101
NASDAQCOM t-1 +9.64 +0.89 107/197 96.38 0.3945
NASDAQCOM t +32.65 +3.26 114/197 (57.9%) 105.75 0.0029
NASDAQCOM t+1 -17.94 -1.47 100/197 121.30 0.1061
NASDAQCOM t+2 +1.17 +0.13 106/197 96.75 0.9173
NASDAQCOM other days +4.10 3181/5771 (55.1%) 94.42

The Nasdaq Composite returns an average of 32.65 basis points on an announcement day against 4.10 on every other day, an excess of 28.55 basis points, and it is up on 57.9 per cent of them. At 8.29 announcements a year that is 2.71 per cent a year, which is a meaningful fraction of what the index returns in total.

Two things are worth noticing before anyone gets excited. The day before contributes +9.64 basis points with a p of 0.39, so the widely discussed drift in the twenty-four hours before a statement does not show up in this index over this sample. And the day after gives back -17.94, at p 0.11, which is not significant but is the wrong sign for a story about a permanent repricing.

Counting the tests

Four series times five offsets is twenty tests. At the five per cent level, one of them is expected to look significant when nothing is happening. Three did.

Result Permutation p
NASDAQCOM on the day 0.0029
VIXCLS on the day 0.0051
VIXCLS two days before 0.0231

A Bonferroni threshold for a five per cent family-wide error rate over twenty tests is 0.00250. None of the three clears it. The Nasdaq result is the closest and it misses.

It misses by so little that the Monte Carlo itself cannot settle the question. A permutation p of 0.0029 from 20,000 draws has a standard error of 0.00038, so its ninety-five per cent interval runs from 0.00215 to 0.00365, which straddles the threshold. Running more draws would pin the p value down; it would not change the fact that this result is sitting on the line rather than clear of it.

Bonferroni is the harshest of the standard corrections and treating twenty correlated tests as independent overstates the penalty. A less severe procedure would probably pass the Nasdaq result. That is an argument for reporting the number and the correction together, which is what the table above does, and against reporting either one alone.

Does the Nasdaq result hold up

The multiple-testing question is about whether the effect is real. This one is about whether it is stable, and it is a different question with a clearer answer.

Subset n Mean t Days up
All 197 +32.65 +3.26 114/197
First third, 2003 to 2010 65 +60.74 +3.49 41/65
Second third, 2010 to 2018 65 +12.82 +0.91 34/65
Final third, 2019 to 2026 67 +24.63 +1.25 39/67
Excluding 2008 and 2009 180 +23.32 +2.31 102/180
Excluding 2020 186 +33.10 +3.26 108/186
Excluding 2008, 2009 and 2020 169 +23.20 +2.27 96/169
Dropping the 5 largest moves 192 +22.64 +2.46 109/192
Dropping the 10 largest moves 187 +21.59 +2.53 106/187

It is not one or two days: dropping the ten largest absolute moves still leaves +21.59 at t +2.53. It is not the financial crisis alone: excluding 2008 and 2009 leaves +23.32. It is not the pandemic: excluding 2020 changes nothing.

What it is, is old. The first third of the sample carries +60.74 with a t of 3.49; neither of the later thirds is distinguishable from zero on its own. The effect has shrunk by roughly two thirds and its statistical support now rests on a period ending fifteen years ago. A result that is significant in the full sample and absent in both recent halves is a result to treat as a historical description, not a live one.

The five largest announcement-day moves, for scale: 9 August 2011 at +5.16 per cent, 18 March 2008 at +4.11, 27 July 2022 at +3.98, 11 March 2008 at +3.91 and 16 March 2022 at +3.70. Three of the five are crisis or hiking-cycle days and all five are positive, which is itself a reason to check the trimmed rows rather than the mean.

What this does not establish

  • No transaction costs, no execution, no slippage. The 2.71 per cent a year is an accounting identity on closing prices. Nothing here has been backtested as a strategy, and this article does not suggest one.
  • Close to close is a blunt window. Statements land at 2pm Eastern, and a daily bar mixes the reaction with several hours of unrelated trading on both sides. Intraday data would answer a different and sharper question; FRED does not carry it.
  • The Nasdaq is standing in for equities. FRED's S&P 500 series carries only ten years because of its redistribution agreement, so a 23-year study cannot use it. The Nasdaq Composite is more concentrated and more rate-sensitive than the broad market, and the result may not transfer.
  • The surprise is not measured. Every test here treats all announcements alike. The interesting version of this study splits them by how far the decision was from what the market had priced, which needs futures data this pipeline does not have.
  • Overlapping windows. Announcements are roughly six weeks apart, so the t-2 to t+2 windows never overlap each other, but the permutation null still draws days independently, which ignores volatility clustering. That makes the p values slightly optimistic rather than conservative.
  • The sample is fixed by what the Fed publishes in a parseable form. A different date list, including meeting start dates or minutes releases, would produce different numbers.

Reproducing it

code/fomc-event-study.py downloads everything it needs and needs no key. It takes --since to move the start year and --csv to write the result table, which ships as datasets/fomc-event-study.csv with one row per series and offset: the mean, standard error, t statistic, up-count, mean absolute move, median and permutation p. The seed is fixed at 20260922, and two consecutive runs produce byte-identical output.

One practical note, because it cost an hour the first time: the FRED CSV endpoint stalls until timeout when the request carries no Accept header, which is what urllib sends by default. Send one.

This article is analysis and education, not investment, tax, or legal advice. Figures are cited to their source and dated; check them before relying on them.