Blog

How the stock market behaves before and after Memorial Day

We pulled 36 years of S&P 500 daily closes (1990–2025) and ran an event study on the 5 trading days before and after Memorial Day. Mean returns of +0.40% pre and +0.52% post, with a 67% pre-week hit rate — but neither survives a comparison against 10,000 random 5-day windows (p = 0.54, p = 0.42).

Pre-holiday drift is one of the oldest folk theorems in market lore. The story goes: trading desks thin out, short-sellers don't want to carry risk over a long weekend, and the resulting bid-side imbalance pushes prices up into the close. The academic version traces back to Fields (1934) and was sharpened by Ariel (1990) and Lakonishok & Smidt (1988), all of whom found small but persistent positive returns in the last day or two before US market holidays.

Memorial Day is one of the cleanest holidays to test the theory on. It anchors a three-day weekend, falls in the “sell in May” seasonal window, and unlike Thanksgiving or Christmas doesn't share the calendar with a year-end tax effect. So: when traders say the market drifts up before Memorial Day and chops sideways after, is that actually true?

We pulled 36 years of S&P 500 daily closes (1990–2025)from Yahoo Finance, anchored each year's observation to the trading day immediately before Memorial Day, and compared the 5-day pre and post windows against 10,000 randomly chosen 5-day windowsfrom the same date range. The result is a story the data tells in two different voices — an interesting whisper, and a statistically honest shrug.

Headline: Pre-Memorial-Day 5-day return averaged +0.40% (positive in 24 of 36 years, 67%) · Post-Memorial-Day 5-day return averaged +0.52% (positive in 20 of 36 years, 56%) · Neither difference vs the random baseline is statistically significant (p = 0.54 pre, p = 0.42 post).

1. The setup

Memorial Day is the last Monday of May. The NYSE is closed that day, so any event-study has to choose an anchor. We use the trading day immediately before the holiday — the Friday close — as day 0. The pre window covers the five trading days ending at that close (Monday through Friday of the holiday week). The post window covers the five trading days starting Tuesday after the holiday and running through the following Monday.

The reason for the random baseline is exactly the one that bites every seasonal-effect study: stocks have historically gone up. If you compute the average 5-day return of anyrandom 5-day window over the last 36 years, you'll get something positive. That doesn't mean Memorial Day is special. The interesting question is whether the Memorial Day windows are more positive than the random ones.

2. The average path around Memorial Day

Here's the average S&P 500 path across our 36 events, re-centered so day 0 (Friday close before the holiday) = 0%:

Average S&P 500 cumulative return path from day -5 to day +5 around Memorial Day, 1990-2025, with ±1 SE band
Figure 1.Re-centered cumulative return over the [−5, +5] trading-day window around Memorial Day, averaged across 1990–2025. The pre-week drifts up to about −0.40% at day −5 → 0% at day 0 (i.e. a ~+0.40% rally into the holiday). The post-week extends another +0.52% on average. The shaded band is ±1 standard error — note that it covers the zero line on most days. The visual pattern is consistent with the pre-holiday drift narrative; the error band is consistent with that pattern being statistical noise.

Two things to read carefully here. First, the line goes up. The narrative isn't wrong in direction. Second, the standard-error band is wide. The line is climbing through a fog where the true mean might be anywhere from −0.5% to +1.5% on any given day of the window. A bigger sample would tighten the band; we don't have one, because Memorial Day only happens once a year.

3. The per-year picture is messy

Averages hide the dispersion. Here's every individual year:

Grouped bar chart showing per-year pre and post 5-day S&P 500 returns around Memorial Day from 1990 to 2025
Figure 2. Pre-window (cyan) and post-window (amber) cumulative returns for each Memorial Day from 1990 through 2025. The biggest pre-week was 2022 at +6.6%— an inflation-panic relief rally that had nothing to do with the holiday. The biggest post-weeks were 2000 (+6.5%) and 2009 (+6.3%)— both regime turns. The worst pre-week was 2008 (−3.5%), mid-financial crisis. The worst post-week was 2002 (−4.0%), mid dot-com unwind. The signal in any given year is dominated by what the macro backdrop happens to be doing, not by the holiday.

This is what 36 observations looks like when you stop averaging them. The biggest moves in either direction line up with named macro events (2008 GFC, 2009 recovery, 2020 COVID rally, 2022 inflation panic). That's a clue that whatever “Memorial Day effect” exists is small relative to the noise that the macro regime injects.

4. The honest comparison: Memorial Day vs random weeks

Here is where the test gets sharp. We drew 10,000 random 5-day windows from the same 1990–2025 date range and computed the same statistics. If Memorial Day is special, its distribution should shift meaningfully relative to the baseline. It doesn't:

Two side-by-side histograms comparing the distribution of pre and post Memorial Day 5-day returns against 10,000 random 5-day windows
Figure 3. Memorial Day windows overlaid on the distribution of 10,000 random 5-day windows from the same period. Pre-window mean: +0.40% vs baseline +0.21%. Post-window mean: +0.52% vs baseline +0.18%. The Memorial Day means sit slightly to the right of baseline, but the Welch two-sample t-tests come back at p = 0.54 for the pre window and p = 0.42 for the post window. By any conventional standard those are noise.

Translation: if you ran this same study using a different US holiday with no folk story attached — or, for that matter, simulated Memorial Day as “the last Monday of a randomly chosen month” — you'd see comparable differences from baseline a large fraction of the time. The pre-Memorial-Day rally is real in our data, but it is not statistically distinguishable from the rally you'd get from any other randomly chosen Friday in the last 36 years.

5. Hit rates: where the whisper lives

One number is mildly intriguing — the pre-window hit rate, the share of years that closed up over the 5 trading days into the holiday:

Bar chart comparing hit rates: pre window 67% vs baseline 58%, post window 56% vs baseline 57%
Figure 4. Pre-window hit rate: 67% for Memorial Day vs 58%for the random baseline. Post-window hit rate is essentially identical at 56% vs 57%. A 67% hit rate over 36 trials has a standard error of about 8 percentage points — meaning the “true” pre-week hit rate could plausibly be anywhere from ~50% to ~85%. The point estimate is interesting; the confidence interval still includes baseline.

67% is the most distinctive number we found. It's the closest the data comes to telling a "yes, this happens" story. But two-thirds of 36 is 24 — we're looking at a baseline of 58% and asking whether 24 wins is meaningfully more than the ~21 wins we'd expect by chance. The answer is “maybe.” That's not a tradeable edge. That's an observation worth filing under interesting if confirmed by another 50 years of data.

6. The honest read

Three things are true at once, and they don't cancel out:

Pre-holiday drift studies covering many holidays at once typically find somesmall effect — Ariel (1990) reported pre-holiday returns about 9× daily averages on a much larger pooled sample. A single-holiday slice like ours has far less statistical power. Our finding of “positive but not significant” is what a small sample of a small effect looks like.

7. Why QScoring doesn't score this

This whole study is, in a sense, the empirical justification for what QScoring deliberately leaves out. We didn't build a calendar-effect factor for the same reason we publish factor t-statistics with our methodology page: anything that can't survive a real statistical test shouldn't be in the model.

The right way to use a study like this isn't to trade the week before Memorial Day. It's to internalize how easy it is to find a plausible-looking pattern in 36 observations, and how often that pattern evaporates the moment you ask it to clear a statistical bar. The QScore framework is the answer to “what would we want from a signal that is notthis” — large sample, mechanically clear construction, t-stats reported honestly, factors that survive sector-normalization and out-of-sample validation.

Related reads

Discussion

Comments are powered by GitHub Discussions. Sign in with GitHub to join the conversation.

← All posts