sma200.trade
For informational and educational use only. Not investment advice. Past performance does not predict future returns. Read full disclaimer →

How often does SPY actually cross its 200-day SMA? Thirty-three years of data

· 7 min read · by Christian

Common question I get: how often does SPY actually trip its 200-day moving average? The answer surprises most people the first time they see it.

Pulled the full SPY daily-close history from 1993-01-29 (SPY's inception) through today and counted every event where the daily close moved from above the 200-day SMA to below, or vice versa. The methodology is the simplest possible: count every state change.

Headline: 223 cross events on SPY in 33 years. That's 6.7 per year on average.

Most retail readers expect 1-2 per year. They're an order of magnitude off, and the reason for the gap is interesting.

The decade-by-decade breakdown

Decade Cross events Per year
1990s (1993-1999, partial) 35 ~5
2000s (2000-2009) 88 ~9
2010s (2010-2019) 58 ~6
2020s (2020-2025, partial) 42 ~7

The 2000s were brutal — 88 cross events across the dotcom collapse, the 2003 recovery chop, and the 2008 financial crisis. SPY tripped its 200-day SMA roughly once every six weeks during that decade.

The 2010s were the cleanest stretch: 58 crosses over 10 years, with multi-year periods (2012-2014, 2017-2018) where SPY held above the 200-day SMA almost continuously. This was the long bull market after the GFC, the regime that made buy-and-hold look easy and made trend-followers look unnecessary.

The 2020s are running at a 2000s-like pace because COVID (March 2020), the 2022 bear, and the chop around the 2022 bottom all produced multi-cross episodes.

The methodology gotcha

The 223 number counts every daily-close state change, including 1-day whipsaws.

A "1-day whipsaw" is when SPY closes above its 200-day SMA on one day, below on the next, and back above the day after. That counts as two cross events in raw data, even though nothing meaningful happened.

If you filter to crosses that held for at least 5 trading days (a common debounce filter), the count drops to roughly 80-100 events over the same window. That's about 2-3 per year.

If you filter to crosses that held for at least 30 trading days (a "real regime change" filter), the count drops to roughly 25-35 events over 33 years. That's about 1 per year.

Three numbers, three meanings:

  • 223 raw events: every single daily flip, including whipsaws. The most pessimistic count.
  • ~80-100 filtered events: crosses that held a week. The "tradable" count.
  • ~25-35 major events: crosses that held a month. The "regime change" count.

When financial media references "SPY crossing its 200-day SMA" they usually mean one of the last two categories. The first is mostly noise.

Did the signal work?

A different question. Three eras worth pulling out:

2008-2009 GFC: the 200-day SMA filter caught this regime change cleanly. SPY broke below the line in December 2007 / January 2008. Anyone trading the long-when-above, flat-when-below rule on SPY would have been flat by Q1 2008, missing roughly the worst 35% of the drawdown. The re-entry signal fired in summer 2009 after the bottom. Filter worked.

2015-2016 whipsaw: SPY briefly broke below the 200-day SMA in August 2015, recovered, then broke again in early 2016. By April 2016 the line was retaken. Anyone strictly trading the rule lost a few percent on the round-trip transaction costs and tax events. Net: signal correctly identified that nothing was structurally broken, but the in-and-out cost real money.

2020 COVID crash: this is the case the 200-day SMA struggles with most. The drop was so fast (32% in 23 trading days) that the filter fired after most of the damage was done. Anyone trading the rule was flat for the worst week but missed most of the drop in absolute terms. The recovery fired in summer 2020 catching the rebound. Signal worked, but the entry timing on fast crashes is poor by design — the 200-day average can't catch a black swan event in real time.

2022 bear: clean fire. SPY broke the 200-day SMA in early February 2022 around $440 and didn't retake it until late January 2023. The filter was correctly long-flat for the entire calendar-year bear market. This is what the framework looks like working perfectly.

How this compares to other broad ETFs

Same calculation, same window where data exists:

Ticker Cross events Window Per year
SPY 223 1993-2026 (33y) 6.7
QQQ 173 1999-2026 (27y) 6.4
IWM 223 2000-2026 (26y) 8.6
TLT 236 2002-2026 (24y) 9.8

Three observations:

QQQ has slightly fewer crosses than SPY. Despite being a tech-heavy index that everyone associates with high volatility, the 1999-2026 QQQ record shows fewer 200-day SMA crossings than SPY over a shorter window. The reason: the secular tech bull run from 2009 onward had QQQ above the 200-day SMA continuously for years, which compresses the cross count.

IWM (Russell 2000) is whippier than SPY. Small caps generate ~30% more cross events than large caps. The framework still works on small caps but expect more transaction costs.

TLT (long Treasuries) is whippier than everything. This is the structural property we covered in the TLT analog set piece — long bonds have a different return distribution and a different cycle length than equities, so a 200-day window catches them mid-cycle more often. The framework still labels regime, but expect more action than on broad equity ETFs.

What this means for the framework

The raw 6.7-per-year cross rate on SPY is part of why the SMA200 framework exists in its current form:

  1. The filter needs whipsaw protection. sma200.trade alerts include a 7-day minimum gap between consecutive alerts on the same ticker, so a 1-day whipsaw doesn't generate an email. The result: subscribers see closer to the "real regime change" count (~1/year on SPY) rather than the raw 6.7/year.

  2. Position sizing should account for the cross rate. If you're using SMA200 as a binary on/off filter for a SPY position, expect 1-2 round trips per year on average and budget transaction costs and tax events accordingly. Smaller positions in a taxable account can lose more to friction than they gain from the filter.

  3. The framework is best understood as a regime label, not a precision-timing tool. When the signal fires, the regime has been changing for some time. The framework's value is in the systematic discipline (you don't have to make the call), not in catching exact bottoms.

If you want one email when SPY (or any other US ticker) actually crosses its 200-day SMA, the per-ticker pages at sma200.trade take 30 seconds. The 7-day whipsaw filter is on by default; you only get notified about crosses worth paying attention to.

The 223 number is correct as raw data and also misleading without context. Most of those events you wouldn't have wanted to trade. The handful per decade that mattered are the ones the framework is designed to catch.