Santa Claus rally: do stocks really rise between Christmas and New Year?
US500 rose in 23 of the last 31 Santa Claus windows, by 0.78% on average, almost three times an ordinary seven sessions. Almost all of that edge came before 2010, and the last three windows all fell.
On this page
- What is the Santa Claus rally?
- Santa Claus rally dates for 2026
- Does the Santa Claus rally really happen?
- The Santa Claus rally has faded since 2010
- Where the gains come from, day by day
- If Santa fails to call: what came next
- Is there a Santa Claus rally outside the US?
- Track the Santa Claus rally with Python
- Using the Santa Claus rally in data work
- Questions
Key takeaways
- The Santa Claus rally window is the last five US trading days of the year plus the first two of January. In 2026 it runs from Thursday 24 December to Tuesday 5 January 2027.
- From 1995 to 2025, US500 rose in 23 of 31 windows, by 0.78% on average, against 0.28% for any seven sessions.
- The edge belongs to the early years: +1.29% on average from 1995 to 2009, +0.30% from 2010 to 2025, a shade below an ordinary seven sessions’ +0.35%.
- The last three windows, in 2023, 2024 and 2025, all fell; the years that followed the first two were up 23.3% and 16.4%.
- The window also rose more often than not outside the US: DE40 rose in 26 of 36 years and HK50 in 25 of 36. Bitcoin, which trades through the holidays, rose in 5 of 9.
The Santa Claus rally is the tendency of stocks to rise over the last five trading days of the year and the first two of the next. It is real in the long record: from 1995 to 2025, US500, the large-cap US index, rose in 23 of those 31 seven-session windows, by 0.78% on average, close to three times what an ordinary seven sessions returned. But the edge has faded. Since 2010 the window has done no better than any other seven sessions, and it fell in each of the last three years.
The 2026 window opens on Thursday 24 December and closes on Tuesday 5 January 2027, measured from the close of Wednesday 23 December. US500 goes into it after a volatile autumn: at the 11 November close it was up 11.30% for the year and 2.55% below its 6 October record, after the early-November sell-off described in what is a stock market correction.
What is the Santa Claus rally?
The name and the definition come from Yale Hirsch, who spotted the pattern in 1972 and published it in his trading almanac. He picked a precise window rather than "December": the last five trading days of the year plus the first two trading days of January, seven sessions in all. The change is measured from the close before the first of them to the close of the second January session. He also gave it a warning that is quoted every December:
If Santa Claus should fail to call, bears may come to Broad and Wall.
Yale Hirsch, who named the Santa Claus rally in 1972
Broad and Wall is the corner of New York’s financial district where the city’s main stock exchange stands. Hirsch’s point was that a market which cannot rise in its seasonally easiest stretch may be in trouble. That claim is testable, and the data further down puts it to the test.
- Tax selling endsInvestors sell losing positions before 31 December to book the loss for tax. Once that selling is done, prices have less in their way.
- Thin holiday tradingMany institutional traders are away. With less volume, modest buying moves prices further, and there are fewer short sellers at their desks.
- New money in JanuaryBonuses, pension contributions and fresh allocations arrive at the turn of the year, and funds put them to work in the first sessions of January.
None of these explanations has been proven, and they are not exclusive. What can be measured is whether the window beats any other seven sessions, and by how much.
Santa Claus rally dates for 2026
| Session | Date | Note |
|---|---|---|
| Base | Wed 23 Dec | The close the window is measured from |
| 1 | Thu 24 Dec | Early close, 1 p.m. New York |
| Fri 25 Dec | Closed, Christmas Day | |
| 2 | Mon 28 Dec | |
| 3 | Tue 29 Dec | |
| 4 | Wed 30 Dec | |
| 5 | Thu 31 Dec | Last session of 2026 |
| Fri 1 Jan | Closed, New Year’s Day | |
| 6 | Mon 4 Jan | First session of 2027 |
| 7 | Tue 5 Jan | The window closes |
Holidays move the window from year to year. When Christmas falls on a Saturday the market closes on Friday 24 December; when New Year’s Day falls on a Saturday the market stays open on 31 December. The calendar below applies those rules for any year:
Does the Santa Claus rally really happen?
Every window from December 1995 to the one that ended on 5 January 2026, measured on US500 daily closes:
US500 over the Santa Claus window, by December
- 23 of 31Windows in which US500 rose, 1995 to 2025
- +0.78%Average change over the seven sessions (median +1.00%)
- +0.28%Average of any seven sessions over the same years, up 59.2% of the time
- 3 in a rowWindows that fell, 2023 to 2025, the first such run since 1995
So the window was positive three times in four, against a little under three in five for any seven sessions, and its average was almost three times as large. The biggest gain came in the middle of a crisis: +7.45% from 23 December 2008 to 5 January 2009, about two months before the bottom of the 2007 to 2009 bear market. The almanac that named the rally reports the same shape over a longer record, an average of about 1.3% since 1950.
The Santa Claus rally has faded since 2010
Split the 31 years in two and the picture changes. From 1995 to 2009 the window beat an ordinary seven sessions by more than a full percentage point. From 2010 to 2025 it did slightly worse than one:
Average change, Santa Claus window against any seven sessions
That is what happens to a well-known calendar pattern: once enough traders buy ahead of it, the gain moves earlier or disappears. The median since 2010 is still positive (+0.62%), so the window still rises more often than not, but by about as much as any other seven sessions in a market that mostly went up. Then came three misses in a row: -0.88% in 2023, -0.53% in 2024 and -0.11% in 2025, the first run of three in the data.
Where the gains come from, day by day
Averaging each session around the turn of the year shows that the window is not one steady climb. The gains sit in the days after Christmas and the first January session, while the last trading day of the year has been the weakest of the window:
Average US500 change by session, December 1995 to January 2026
The weak last day fits the tax-selling and rebalancing explanations: some funds and investors sell on the final session to close their books, then buy back in January. For a trader the lesson is about measurement: a window that includes 31 December carries a session that fell in 21 of 31 years.
December stock market performance, and the rest of the year
December as a whole has been a good month but not the best one. Across complete months from April 1995 to October 2026, US500 rose in 21 of 31 Decembers, by 0.89% on average. November was stronger, and the much-quoted January effect barely shows in a large-cap index:
Average US500 change by calendar month, 1995 to 2026
If Santa fails to call: what came next
Hirsch’s warning says a negative window points to a weak year. In the US500 data the window fell eight times. The following January and calendar year:
| Dec | Window | January | Next year |
|---|---|---|---|
| 1999 | -4.04% | -5.09% | -10.14% |
| 2004 | -1.82% | -2.53% | +3.00% |
| 2007 | -2.51% | -6.12% | -38.49% |
| 2014 | -2.96% | -3.10% | -0.73% |
| 2015 | -2.30% | -5.07% | +9.54% |
| 2023 | -0.88% | +1.59% | +23.31% |
| 2024 | -0.53% | +2.70% | +16.39% |
| 2025 | -0.11% | +1.37% | +11.30% |
The warning has two famous hits: the misses of December 1999 and December 2007 came at the start of the bear markets of 2000 to 2002 and 2007 to 2009. After the first five misses, January fell every time. The recent record is the opposite: the last three misses were followed by Januarys that rose and by years of +23.3%, +16.4% and, so far, +11.3%. After the 23 windows that rose, the next year was up 18 times, with a median of +16.3%.
Is there a Santa Claus rally outside the US?
The same window, on each market’s own trading days, for six major indices with a full year-end history in TickerLayer daily bars. The holidays differ: German exchanges close on 24 and 31 December, Hong Kong on 25 and 26 December, and Tokyo from 31 December to 3 January. Every one of them rose more often than not:
| Index | Up | Average | Any 7 |
|---|---|---|---|
| US500 | 23 of 31 | +0.78% | +0.28% |
| US100 | 18 of 31 | +1.31% | +0.44% |
| US30 | 24 of 31 | +0.74% | +0.25% |
| DE40 | 26 of 36 | +1.45% | +0.26% |
| JP225 | 23 of 36 | +0.96% | +0.11% |
| HK50 | 25 of 36 | +1.83% | +0.25% |
Outside the US the window looks stronger still: for DE40, JP225 and HK50 its average was 6 to 9 times that of any seven sessions, against under three times for US500, partly because those indices rose less over the whole period, which keeps the ordinary seven sessions small. Bitcoin, which trades through the holidays, shows no such pattern: over the US window dates from 2017 to 2025 it rose 5 times in 9 with a median of +0.17%, and its +4.41% average comes entirely from one +46% run in 2020; without it the average is -0.80%.
Track the Santa Claus rally with Python
santa_rally.py pulls US500 daily bars from 1995 in three requests (a daily request can span at most 5,000 days), finds each year’s last five December sessions and first two January ones from the bars themselves, and compares the window with any seven sessions. It needs Python 3.9 or newer, the standard library and a TICKERLAYER_API_KEY environment variable. Change SYMBOL to run it on another index.
"""The Santa Claus rally window for every year since 1995, against an ordinary seven sessions. Python 3.9+, standard library."""
import json
import os
import statistics
import sys
import urllib.request
from datetime import date, datetime, timedelta, timezone
API = "https://api.tickerlayer.com"
KEY = os.environ.get("TICKERLAYER_API_KEY") or sys.exit("Set TICKERLAYER_API_KEY first.")
SYMBOL, START, END = "US500", date(1995, 1, 1), date(2026, 11, 11)
def daily_closes():
"""Daily closes, oldest first, in windows of 4,900 days (a request may span at most 5,000)."""
out, start = [], START
while start <= END:
stop = min(END, start + timedelta(days=4899))
url = f"{API}/indices/agg/{SYMBOL}/1/day/{start}/{stop}?sort=asc&limit=5000"
req = urllib.request.Request(url, headers={"x-api-key": KEY})
with urllib.request.urlopen(req, timeout=30) as resp:
out += [(datetime.fromtimestamp(b["t"] / 1000, timezone.utc).date(), b["c"]) for b in json.load(resp)["results"]]
start = stop + timedelta(days=1)
return out
closes = daily_closes()
index = {d: i for i, (d, _) in enumerate(closes)}
windows = []
for year in range(START.year, END.year):
december = [d for d, _ in closes if d.year == year and d.month == 12]
january = [d for d, _ in closes if d.year == year + 1 and d.month == 1]
if len(december) < 6 or len(january) < 2:
continue # the series must hold the close before the window and both January sessions
base, first, last = december[-6], december[-5], january[1] # 5 sessions in December, 2 in January
windows.append((year, first, last, (closes[index[last]][1] / closes[index[base]][1] - 1) * 100))
for year, first, last, change in windows:
print(f"{year} {first:%d %b} to {last:%d %b %Y} {change:+6.2f}%")
ordinary = [(closes[i + 7][1] / closes[i][1] - 1) * 100 for i in range(len(closes) - 7)]
for label, rows in (("1995-2009", windows[:15]), ("2010-2025", windows[15:]), ("all years", windows)):
moves = [r[3] for r in rows]
print(f"{label}: up in {sum(m > 0 for m in moves)} of {len(moves)}, average {statistics.mean(moves):+.2f}%, median {statistics.median(moves):+.2f}%")
print(f"any 7 sessions: up {sum(m > 0 for m in ordinary) / len(ordinary):.1%} of the time, average {statistics.mean(ordinary):+.2f}%")1995 22 Dec to 03 Jan 1996 +1.77%
1996 24 Dec to 03 Jan 1997 +0.15%
1997 24 Dec to 05 Jan 1998 +4.04%
1998 24 Dec to 05 Jan 1999 +1.32%
1999 27 Dec to 04 Jan 2000 -4.04%
2000 22 Dec to 03 Jan 2001 +5.70%
2001 24 Dec to 03 Jan 2002 +1.78%
2002 24 Dec to 03 Jan 2003 +1.25%
2003 24 Dec to 05 Jan 2004 +2.39%
2004 27 Dec to 04 Jan 2005 -1.82%
2005 23 Dec to 04 Jan 2006 +0.42%
2006 22 Dec to 04 Jan 2007 +0.00%
2007 24 Dec to 03 Jan 2008 -2.51%
2008 24 Dec to 05 Jan 2009 +7.45%
2009 24 Dec to 05 Jan 2010 +1.42%
2010 27 Dec to 04 Jan 2011 +1.07%
2011 23 Dec to 04 Jan 2012 +1.86%
2012 24 Dec to 03 Jan 2013 +2.04%
2013 24 Dec to 03 Jan 2014 +0.18%
2014 24 Dec to 05 Jan 2015 -2.96%
2015 24 Dec to 05 Jan 2016 -2.30%
2016 23 Dec to 04 Jan 2017 +0.43%
2017 22 Dec to 03 Jan 2018 +1.06%
2018 24 Dec to 03 Jan 2019 +1.29%
2019 24 Dec to 03 Jan 2020 +0.34%
2020 24 Dec to 05 Jan 2021 +1.00%
2021 27 Dec to 04 Jan 2022 +1.43%
2022 23 Dec to 04 Jan 2023 +0.80%
2023 22 Dec to 03 Jan 2024 -0.88%
2024 24 Dec to 03 Jan 2025 -0.53%
2025 24 Dec to 05 Jan 2026 -0.11%
1995-2009: up in 12 of 15, average +1.29%, median +1.32%
2010-2025: up in 11 of 16, average +0.30%, median +0.62%
all years: up in 23 of 31, average +0.78%, median +1.00%
any 7 sessions: up 59.2% of the time, average +0.28%The script reads the trading days from the bars, so holidays need no calendar: 2006 ends on 4 January 2007 because the market closed on 2 January for a national day of mourning. To add the 2026 window, run it after 5 January 2027 with END moved forward.
Using the Santa Claus rally in data work
- Fix the window first. "Late December" is not the Santa Claus rally; the seven sessions and the base close are defined, and a test that drifts a day either side measures something else.
- Compare with any seven sessions. A market that rises over time makes most seven-session windows positive; the question is whether this one beats them.
- Watch the half days. The 24 December session closes at 1 p.m. New York time; intraday bars after that are empty, and volume is a fraction of a normal day.
- Read dates in the market’s time zone. A daily bar is stamped by its trading date; a UTC timestamp can push a late session onto the next day. See Unix timestamps.
- Price or total return. Index levels leave out dividends, a few hundredths of a percent over seven sessions; fund prices drop on ex-dividend dates, many of which fall in late December.
- Keep the sample in view. 31 windows and 8 misses: every conclusion here rests on a handful of years.
Questions
What is the Santa Claus rally?
The tendency of stocks to rise over the last five trading days of the year and the first two of January, measured from the close before the window. Yale Hirsch named it in 1972.
When is the Santa Claus rally in 2026?
From Thursday 24 December 2026 to Tuesday 5 January 2027, measured from the close of Wednesday 23 December. The market closes early on 24 December and is shut on 25 December and 1 January.
How often does the Santa Claus rally happen?
US500 rose in 23 of the 31 windows from 1995 to 2025, by 0.78% on average. Since 2010 it rose in 11 of 16, by 0.30% on average, about what any seven sessions returned.
Was there a Santa Claus rally in 2025?
No. US500 fell 0.11% from 23 December 2025 to 5 January 2026, after -0.53% a year earlier and -0.88% in the 2023 window: three misses in a row, a first in data since 1995.
What does it mean if there is no Santa Claus rally?
The old warning says a weak year may follow. Of the eight misses since 1995, those of 1999 and 2007 came at the start of bear markets, but the years after the 2023 and 2024 misses rose 23.3% and 16.4%.
Is December a good month for stocks?
Usually: US500 rose in 21 of 31 Decembers from 1995 to 2025, by 0.89% on average. November was stronger, rising in 25 of 31 years by 2.54% on average.