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

Pre-Holiday Effect Backtest: Do Stocks Go Up Before Market Holidays? 33 Years of SPY

The day before a market holiday has a reputation as one of the best days of the year for stocks. We held SPY only on that day, before each of 298 holidays from 1993 to 2026, with dividends and costs, and compared it with random days in the same months.

SPY · daily closes, with dividends · buy at the close two trading days before each holiday, sell at the close of the last trading day before it · Protocol v1.0 plus the 8 Oct 2026 rules

Buried · Fragile

Good Friday paid. New Year's Eve took it back.

BornFrozen 4 Nov 2026 (ph_spec.md), before any pre-holiday trade was computed
Died4 Nov 2026

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

Short answer: a little, and only lately. Holding SPY only on the last trading day before each market holiday made +0.06% a trade after costs from 1993 to 2026, but nothing at all from 1993 to 2005, and random days in the same months were often as good. It passed three of our six gates.

00The verdict in three lines

  • Do stocks go up before holidays? A little, lately. Holding SPY only on the last trading day before each market holiday made +0.064% a trade after costs over 298 holidays, and passed three of our six gates.
  • The effect was missing when it should have been strongest: -0.008% a trade from 1993 to 2005, +0.065% from 2006 to 2015, +0.140% since 2016. Random days in the same months made a median of +0.004%.
  • Buried, cause fragile. The day before Good Friday was the best; New Year's Eve was the worst.

01The pre-holiday effect

The pre-holiday effect is the finding that stocks tend to rise on the last trading day before a market holiday, far more than on an ordinary day:

  • Josef Lakonishok and Seymour Smidt (Review of Financial Studies, 1988) found it in 90 years of the Dow.
  • Robert Ariel (“High Stock Returns before Holidays”, Journal of Finance, 1990) found pre-holiday returns several times the average day's, not explained by other calendar effects.
  • Chan-Wung Kim and Jinwoo Park (Journal of Financial and Quantitative Analysis, 1994) found it in the UK and Japan too.

Why it could work: short sellers closing before a long weekend, buyers keen to be in, thin sessions that move on little volume. Why it might not: it has been in print since 1988, and later studies reported it weaker; one day per trade also leaves little room after a cost.

This is our second calendar test on SPY, after the turn of the month. Some pre-holiday days fall at the turn of the month (31 December, for example), so we report the overlap in section 08.

02How we made the rules mechanical

  • Holidays: the scheduled full-day closures of the New York Stock Exchange: New Year's Day, Martin Luther King Jr. Day (from 1998), Washington's Birthday, Good Friday, Memorial Day, Juneteenth (from 2022), Independence Day, Labor Day, Thanksgiving and Christmas, with the usual weekend rules.
  • Not holidays: closures nobody knew in advance (September 2001, Hurricane Sandy, presidential funerals). Nobody could have traded the day before them.
  • The trade: buy SPY at the close two trading days before the holiday and sell at the close of the last trading day before the holiday. The trade earns that one day.
  • Fills at the close (market-on-close orders), long only, one day, no stop. One variant, fixed before the run.

03How we tested it

SPY daily closes from 29 January 1993 to 20 October 2026 with all 136 dividends (Yahoo Finance history, the file of our other SPY tests). Calendar check: the 309 weekdays missing from the file are exactly the 298 scheduled holidays given by the rules plus 11 unscheduled closures. Costs: 0.04% of the price a round trip, with 0.10% shown too. Unit: net % per trade. Periods by entry date: 1993 to 2005, 2006 to 2015, and a holdout from 2016 already used by our three earlier SPY tests. First-period bar t ≥ 2.0. Control: for every real trade, one day at random in the same month, 500 times. Engine check: the holiday rules on known years, hand-made weeks, and an independent re-implementation, with its own day-by-day holiday list, that matched all 298 real trades (24 checks; ph_selftest_result.txt).

04Results: is the pre-holiday effect still there?

VariantDay heldTradesWin rateNet per tradeNet total (sum of trade %)Profit factorVerdict
PHThe last trading day before each holiday29855.7%+0.064%+18.9%1.22Buried
-10%-5%0%5%10%15%20%1995200020052010201520202025validationholdout*

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

By the end of 2005 the trades were still slightly down (-0.8% in total); everything after that came later. Before costs a pre-holiday trade made +0.104%; at 0.10% a round trip the sum would fall from +18.9% to +1.1%. As a whole strategy, in SPY 3.5% of the days and in T-bills otherwise, it made 3.0% a year, mostly interest, against 10.8% for buy-and-hold.

05The pre-holiday day or any day?

DaysDaysBefore costs, per dayAfter 0.04%, per dayShare of days up (after costs)
Pre-holiday days298+0.104%+0.064%55.7%
Every other day of the file8,190+0.046%+0.006%51.8%
VariantTradesReal net per tradeRandom days, medianRandom, 5th to 95thPercentile (95 needed)
PH298+0.064%+0.004%-0.099% to +0.117%82.6

The pre-holiday day earned about twice an ordinary day before costs. But a one-day trade pays the whole cost for one day's move, so after costs the gap is small, and random days in the same months were often as good: the real trades beat 82.6% of the random sets, not 95%.

06Holiday by holiday: Thanksgiving, Good Friday, New Year

The last trading day beforeTradesNet per tradeShare up (after costs)Profit factor
New Year's Day28-0.341%32.1%0.35
Martin Luther King Jr. Day29+0.163%62.1%1.54
Washington's Birthday34-0.193%35.3%0.53
Good Friday34+0.366%67.6%3.19
Memorial Day34+0.014%55.9%1.05
Juneteenth5+0.190%60.0%3.19
Independence Day34+0.198%70.6%2.10
Labor Day34-0.025%50.0%0.93
Thanksgiving33+0.166%66.7%1.62
Christmas33+0.156%57.6%1.82

The day before Good Friday was the strongest (+0.366%, up 68% of the time), then the day before Independence Day; the Wednesday before Thanksgiving made +0.166% and rose 67% of the time. New Year's Eve was the weakest (-0.341%, up only 32% of the time), and the Friday before Washington's Birthday was negative too. With about 34 trades a holiday these differences are mostly noise, and picking the good holidays after seeing them would prove nothing.

07By period and by year

PeriodTradesNet per tradeWin rateProfit factort
1993 to 2005109-0.008%50.5%0.98-0.08
2006 to 201589+0.065%55.1%1.200.59
Holdout* 2016 to Oct 2026100+0.140%62.0%1.771.97
YearTradesSum of trade %
1993 (from Feb)7-1.80%
19948-1.30%
19958-0.34%
19968-2.96%
19978-0.57%
19989-0.17%
19998+9.15%
20009-0.36%
20019-3.73%
20029-0.80%
20039+2.03%
20048-0.76%
20059+0.79%
20069-0.17%
20079+0.34%
20089+3.99%
20099+1.64%
20108-0.01%
20119-1.41%
20129+1.73%
20139+0.63%
20149+0.36%
20159-1.30%
20169+0.44%
20179-0.82%
20189-0.41%
20199+3.93%
20209+2.30%
20218+2.33%
202210+1.36%
202310+1.68%
202410+1.91%
202510+0.54%
2026 (to 20 Oct)7+0.71%

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

The best single day was the day before Good Friday 2009 (+3.93%), weeks after the market's low; the worst was 2 July 2009 (-2.77%). Without the 10 best days the sum is -8.4%; without the 20 best, -23.3%.

08The overlap with the turn of the month

Pre-holiday daysTradesNet per trade
Inside the turn-of-the-month window (the last trading day of a month or the first three)106+0.024%
Outside it192+0.086%

Pre-holiday days at the turn of the month did worse than the others. That fits what our turn-of-the-month test found: the last trading day of the month was weak in these years, and New Year's Eve is one of those days. So the pre-holiday result is not borrowed from the turn-of-the-month effect; if anything, the overlap held it back.

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

HoldDays heldNet per tradet, first periodPF, second periodHoldout* (sum)Control percentileGates
The pre-holiday day (the rule)1+0.064%-0.081.20+14.0%82.63/6
Two days before the holiday2+0.093%-0.671.41+20.9%75.03/6
Across the holiday (pre-holiday close to the next close)1+0.012%0.711.10-9.9%54.21/6
The pre-holiday day and across2+0.116%0.741.29+7.9%79.43/6

None of the other holds passed more than three gates. Holding across the holiday, into the first day after it, added almost nothing.

10The gates

VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.0 on development4. Above the 95th percentile of the random-days control5. Positive without the 10 best trades6. Holdout net positive (already used)
PH298passpassfailfailfailpass
VariantCauseGates failedVerdict
PHFragile3, 4, 5Buried

Fragile: positive in total, but not without its best trades. The validation profit factor was exactly at our 1.2 bar. 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 only on the last trading day before each market holiday made +0.064% a trade after costs over 298 holidays, 1993 to 2026. Before costs the pre-holiday day earned +0.104%, about twice an ordinary day's +0.046%.
  • It failed three of our six gates: it made nothing from 1993 to 2005 (-0.008% a trade), it beat random days in the same months only at the 82.6th percentile, and without its 10 best days it lost money.
  • The holidays differ a lot: the day before Good Friday averaged +0.366% and the day before Independence Day rose 71% of the time, while New Year's Eve averaged -0.341% and rose only 32% of the time.

What remains unknown

  • Whether the strength since 2016 lasts: our holdout years had already been used by three earlier SPY tests.
  • Single holidays as rules. Good Friday and Independence Day looked good after the run, but with 34 trades each, and picked after the fact, they prove nothing.
  • Other markets, and futures, where a one-day trade costs less in proportion.

Why it was buried

The famous pre-holiday effect did not show up at all in our first period, 1993 to 2005, just after it was published. It appeared later, and most of the profit since then comes from a few big days. A one-day hold also pays a full round-trip cost each time, which takes most of the extra return. By our rule the cause is fragile: positive, but not without its best trades.

What you can apply to your own tests

  • Compare a calendar day with random days in the same months; a market that rises most days makes almost any day look good.
  • Split a famous effect into periods. One that was flat right after it was published, and strong later, is not a stable edge.
  • For one-day holds, compare the cost with the extra return of the day, not with the day's whole return.

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-holiday effect?

The finding that stocks tend to rise on the last trading day before a market holiday, much more than on an ordinary day (Lakonishok and Smidt, 1988; Ariel, 1990).

Do stocks go up before holidays?

On average a little, in our test of SPY: the pre-holiday day made +0.10% before costs, about twice an ordinary day, and rose 56% of the time after costs. But it was flat from 1993 to 2005 and most of the profit since then came from a few days.

Is the stock market up the day before Thanksgiving?

More often than not in our data: the Wednesday before Thanksgiving made +0.17% after costs on average and rose 67% of the time over 33 years. With so few years that is not proof.

Which holiday is best for stocks?

In our 33 years of SPY the day before Good Friday was the strongest (+0.37%, up 68% of the time) and New Year's Eve the weakest (-0.34%, up 32% of the time). Each holiday has only about 34 trades, so the differences are mostly noise.

How was the pre-holiday effect tested?

On SPY daily closes with dividends, 1993 to 2026, with the exchange's holidays from its rules (checked against the file), the rule fixed before any number was computed, 0.04% of costs per round trip, 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.

11Check our arithmetic

Frozen specificationWhy this test, the holiday rules, the rule, costs, periods, gates and control, dated before any trade was computed, with the calendar check and a log of the run.
ph_spec.md
CodeThe holiday calendar and its check against the file, the engine, the independent re-implementation, the self-test and the run (node ph_run.js, which refuses to run unless the specification is frozen and the self-test passed).
ph_calendar.js · ph_lib.js · ph_ref.js · ph_selftest.js · ph_run.js
Shared codeThe SPY loader, the turn-of-the-month engine whose control and equity code this test reuses, the statistics helpers, 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.
ph_selftest_result.txt · ph_results.txt · ph_gates.json · ph_summary.json
Trade log (CSV)Every trade: holiday, holiday date, entry and exit close, turn-of-the-month flag, gross and net % of the price.
PH

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

12Data notes

Source. Yahoo Finance daily history of SPY (SPY has never split; dividends listed separately), read from the saved history page. Holidays. From the exchange's rules, checked against the trading days of the file. Some pre-holiday sessions close early (at 1 p.m.), which the daily closes include as they are. 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.

13Corrections

None since publication.

+More tests and guides