200-day moving average on QQQ: does 150 or 250 work as well?

Computed by the MarketHeist backtest engine · Published 2026-10-13 · Updated 2026-10-13 · Data through 2026-09-30
Hold the fund while its price is above its 200-day simple moving average; hold cash otherwise. Tested on Nasdaq-100 (QQQ) from 2000-05-15 to 2026-09-30 (26.3 years of daily data): 5 bps a side, fills at the signal day's close (in practice the closing minutes), idle cash earning 3-month Treasury bills. Verdict: Shallower drawdown, lower return. The 200-day setting cut the worst drawdown by 40 points at a cost of 0 points of annual return.
Claim checked
"Staying invested only above the 200-day moving average beats buy-and-hold."
Partly (shallower drawdown, lower return)
QQQ, 2000-05-15 to 2026-09-30 (26.3 years), 92 trades. "Beats" means a higher return or a higher risk-adjusted return, across nearby settings and out of sample. Shallower drawdown, lower return.
8.9%
CAGRbuy-and-hold 9.1%
-40.1%
Max drawdownbuy-and-hold -80.5%
0.51
Sharpe, excess over T-billsbuy-and-hold 0.39
robust at least 100% kept
Nearby settingsshare of the Sharpe kept by neighbours

200-day setting against buying and holding QQQ, 2000-05-15 to 2026-09-30 (26.3 years), cash earning 3-month Treasury bills. The backtester's own figures (cash at 0%, no risk-free rate) are in the box at the end.

The read

Verdict: Shallower drawdown, lower return. The 200-day setting cut the worst drawdown by 40 points at a cost of 0 points of annual return.

200-day against its neighbours

Sharpe (excess over T-bills) by moving-average length (days) for QQQSharpe (excess over T-bills) of the 200-day moving average rule on QQQ for each moving-average length (days): 50 0.41, 75 0.37, 100 0.33, 125 0.45, 150 0.50, 175 0.56, 200 0.51, 225 0.57, 250 0.58, 275 0.54, 300 0.51. Buy-and-hold: 0.39. The famous setting is 200-day.0.350.400.450.500.55buy-and-hold5075100125150175200225250275300Sharpe (excess over T-bills)Moving-average length (days)
Sharpe by moving-average length (days). The large dot is the famous 200-day setting; the shaded span is the neighbourhood used for the plateau test (150, 175, 225 and 250 days); the dashed line is buy-and-hold's Sharpe. Hollow dots: fewer than 5 trades.
CAGR by moving-average length (days) for QQQCAGR of the 200-day moving average rule on QQQ for each moving-average length (days): 50 7.3%, 75 6.5%, 100 5.9%, 125 8.0%, 150 8.8%, 175 9.8%, 200 8.9%, 225 10.1%, 250 10.4%, 275 9.8%, 300 9.4%. Buy-and-hold: 9.1%. The famous setting is 200-day.6.0%7.0%8.0%9.0%10.0%buy-and-hold5075100125150175200225250275300CAGRMoving-average length (days)
Max drawdown by moving-average length (days) for QQQMax drawdown of the 200-day moving average rule on QQQ for each moving-average length (days): 50 -30.7%, 75 -32.3%, 100 -38.2%, 125 -33.9%, 150 -54.5%, 175 -48.3%, 200 -40.1%, 225 -27.0%, 250 -28.1%, 275 -29.6%, 300 -37.2%. Buy-and-hold: -80.5%. The famous setting is 200-day.-80.0%-70.0%-60.0%-50.0%-40.0%-30.0%buy-and-hold5075100125150175200225250275300Max drawdownMoving-average length (days)
Moving-average length (days)SharpeCAGRMax drawdownTrades
50 days0.417.3%-30.7%215
75 days0.376.5%-32.3%174
100 days0.335.9%-38.2%159
125 days0.458.0%-33.9%128
150 days0.508.8%-54.5%108
175 days0.569.8%-48.3%90
200 days (famous)0.518.9%-40.1%92
225 days0.5710.1%-27.0%82
250 days (highest Sharpe, chosen with hindsight)0.5810.4%-28.1%73
275 days0.549.8%-29.6%67
300 days0.519.4%-37.2%65

Highest Sharpe on the grid, chosen with hindsight: 250-day (0.58). The famous setting is outlined; settings with fewer than 5 trades are hatched and left out of the neighbourhood and the shares.

Against buy-and-hold

2000-05-15 to 2026-09-30200-day ruleBuy-and-hold
CAGR8.9%9.1%
Volatility (annualized)15.5%25.9%
Max drawdown-40.1%-80.5%
Sharpe, excess over T-bills (the page's basis)0.510.39
Sharpe with cash at 0% and no risk-free rate (the backtester's basis)0.590.47
Days invested74%100%
Trades over the window921
Trades a year3.50
Worst calendar year2008 (-16%)2008 (-42%)
Growth of $1 in QQQ: 200-day rule against buy-and-holdLog-scaled growth of $1 from 2000-05-15 to 2026-09-30: the 200-day rule ends at $9.52, buy-and-hold at $9.95.$0.50$1.0$2.0$5.0$102000200420082012201620202024200-day ruleBuy-and-hold
Growth of $1 on a log scale, cash earning T-bills while the rule is out. Charts use sampled points (weekly); every number on the page uses daily data.
Drawdown of QQQ: 200-day rule against buy-and-holdDrawdown from the previous peak: the rule's deepest is -40.1%, buy-and-hold's -80.5%.-80%-70%-60%-50%-40%-30%-20%-10%0%2000200420082012201620202024200-day ruleBuy-and-hold
Drawdown from the previous peak.

Walk-forward: choose in sample, judge out of sample

In each in-sample window of 10 years the setting with the highest Sharpe is chosen among settings with at least 3 trades in it, then held for the next 2 years out of sample. 8 windows, 2010-09-20 to 2026-09-30 (16.0 years); 81 earlier bars are not used. Switching settings at a window boundary is not charged.

#In sampleOut of sampleChosenIn-sample SharpeOut-of-sample Sharpe200-day fixedBuy-and-hold
12000-09-11 to 2010-09-172010-09-20 to 2012-09-1775-day0.260.590.791.10
22002-09-17 to 2012-09-172012-09-18 to 2014-09-19225-day0.561.381.431.55
32004-09-17 to 2014-09-192014-09-22 to 2016-09-20175-day0.630.130.150.59
42006-09-18 to 2016-09-202016-09-21 to 2018-09-20150-day0.651.631.671.67
52008-09-18 to 2018-09-202018-09-21 to 2020-09-22150-day1.000.590.340.79
62010-09-20 to 2020-09-222020-09-23 to 2022-09-22150-day0.920.920.680.18
72012-09-18 to 2022-09-222022-09-23 to 2024-09-25150-day0.921.191.321.23
82014-09-22 to 2024-09-252024-09-26 to 2026-09-30150-day0.930.800.840.91
Over 2010-09-20 to 2026-09-30CAGRSharpeMax drawdown
Walk-forward (chosen in sample)15.0%0.89-22.0%
200-day, fixed15.0%0.86-22.3%
Buy-and-hold19.7%0.90-35.1%
Walk-forward growth of $1 in QQQGrowth of $1 from 2010-09-20 to 2026-09-30: choosing the highest-Sharpe setting in sample each time ends at $9.34, the fixed 200-day setting at $9.32, buy-and-hold at $17.67.$1.0$2.0$5.0$10.0201020132016201920222025Chosen in sample200-day, fixedBuy-and-hold
The out-of-sample stretches of the chosen settings, chained, against the fixed famous setting and buy-and-hold over the same years.

Mean in-sample Sharpe of the chosen settings 0.73, mean out-of-sample 0.90 (a rise of 0.17). 4 different settings were chosen in 8 windows. A 10-year window held a median of 42 trades of the famous setting.

Resampled histories

The rule's and buy-and-hold's daily returns are resampled together in circular 21-day blocks (so volatility clusters stay together and both series see the same days), 2,000 times, from the common window. Resampled histories, not a forecast: this measures how stable the gap is in the history we have, not the odds it repeats.

5th / 50th / 95th percentile200-day ruleBuy-and-hold
CAGR3.6% / 8.9% / 14.2%1.2% / 9.1% / 17.4%
Sharpe, excess over T-bills0.18 / 0.50 / 0.820.10 / 0.39 / 0.68
Max drawdown-55.2% / -36.0% / -25.1%-78.3% / -57.2% / -41.1%
Rule's Sharpe above buy-and-hold's75% of resamples
Rule's max drawdown shallower96% of resamples
Resampled growth of $1 in QQQ: 200-day ruleResampled histories of QQQ: the 200-day rule's 5th to 95th percentile of growth of $1 ends between $2.53 and $32.83; the actual path ends at $9.58; buy-and-hold's actual path ends at $10.02.$0.50$1.0$2.0$5.0$10$202000200420082012201620202024200-day rule: 5th to 95th percentile200-day rule, actual historybuy-and-hold, actualmedian of resamplesbuy-and-hold, resampled median
Growth of $1 on a log scale across 2,000 resampled histories, sampled every 2 weeks. Resampled histories, not a forecast.

Stress windows

Window200-day ruleBuy-and-hold
Calendar 20082008-01-01 to 2008-12-31-16%-42%
Calendar 20202020-01-01 to 2020-12-3136%48%
Calendar 20222022-01-01 to 2022-12-31-16%-33%
Buy-and-hold's drawdown 12000-09-01 to 2002-10-09-24%-80%
Buy-and-hold's drawdown 22021-12-27 to 2022-11-03-17%-35%
Buy-and-hold's drawdown 32020-02-19 to 2020-03-16-22%-29%

Calendar years are whole years inside the window. The other rows are buy-and-hold's three deepest drawdowns (peak to trough); the rule's return is over the same dates.

Costs, fills and cash

200-day ruleCAGRSharpeMax drawdownEntries a year
0 bps a side9.3%0.53-39.3%3.5
5 bps a side (the page's basis)8.9%0.51-40.1%3.5
20 bps a side7.8%0.44-42.2%3.5
Trade one day later (fills at the next day's close)9.9%0.56-26.4%3.5
Cash at 0% and no risk-free rate (the backtester's basis)buy-and-hold on this basis: CAGR 9.1%, Sharpe 0.47, max drawdown -80.5%8.3%0.59*-44.3%3.5

Sharpe is in excess of 3-month T-bills, except the last row (*), which uses the backtester's basis: cash at 0% and no risk-free rate. Trading a day later means the signal from today's close is filled at tomorrow's close.

Check it in the backtester

Open this rule in the backtester (QQQ, daily, 5 bps)

The backtester runs on data through today, so its figures move slightly as new days arrive; the hash below identifies this page's window. As of data through 2026-09-30, over the backtester's own window (1999-12-22 to 2026-09-30, 26.7 years, cash at 0%, no risk-free rate):

The backtester's overfit check (settings one or two steps away on short window and long window) keeps at least 100% of the Sharpe (robust). Reproduce hash: 121b712148ead5ac.

Frequently asked questions

Does the 200-day moving average work on QQQ?
From 2000-05-15 to 2026-09-30 the 200-day rule on QQQ returned 8.9% a year with a -40% maximum drawdown and a Sharpe of 0.51; buying and holding returned 9.1%, -80% and 0.39 (cash earning 3-month Treasury bills; Sharpe in excess of bills). Verdict: Shallower drawdown, lower return. The 200-day setting cut the worst drawdown by 40 points at a cost of 0 points of annual return.
Would a 150- or 250-day average have done the same on QQQ?
150, 175, 225 and 250 days kept at least 100% of the 200-day setting's Sharpe (median 0.56 against 0.51, range 0.50 to 0.58): a plateau, not a spike. 9 of 11 settings beat buy-and-hold's Sharpe; 11 of 11 cut its maximum drawdown by 10 points or more.
Is the 200-day result on QQQ curve-fitting?
Choosing the setting with the highest Sharpe over the previous 10 years and holding it for the next 2 (8 times, 2010-09-20 to 2026-09-30) returned 15.0% a year with a -22% maximum drawdown and a Sharpe of 0.89; the fixed 200-day setting returned 15.0%, -22% and 0.86 over the same years, and buy-and-hold 19.7%, -35% and 0.90. The chosen settings averaged a Sharpe of 0.73 in sample and 0.90 out of sample; 4 different settings were chosen in 8 windows, with 52 entries out of sample. In 75% of 2,000 resampled histories (circular 21-day blocks) the rule's Sharpe was above buy-and-hold's, and its maximum drawdown was shallower in 96%. These are resampled histories, not a forecast: they measure how stable the gap is in the history we have, not the odds it repeats.

Caveats

Methodology

Data
Daily total-return-adjusted closes from Yahoo Finance via MarketHeist (the fund's own history; no proxy splicing), through 2026-09-30 (the last trading day of the last complete month). Today's partial bar is always cut. Idle cash earns the FRED 3-month Treasury constant-maturity yield (DGS3MO), using the last observation dated before each bar's start.
The rule
Hold the fund while its price is above its 200-day simple moving average; hold cash otherwise. Long-only, unlevered, one position size, 5 bps a side. A signal from a day's close is filled at that close (an idealized fill; the sensitivity table shows one day later).
Windows
Every comparison uses one common window per ETF: from the first bar at which every setting on the grid (and every sensitivity run) is measurable to the data end, so a long-lookback setting is never compared over a shorter sample than a short one. QQQ: 2000-05-15 to 2026-09-30 (26.3 years). Buy-and-hold is the same fund over the same window. A page needs a common window of at least 15 years containing whole calendar years 2008, 2020 and 2022. The backtester's own window (in the box at the end) starts at each setting's own first measured bar, so its figures differ slightly.
Metrics
The engine's own functions: Sharpe is the mean over the sample standard deviation of daily returns times the square root of 252, here in excess of the 3-month bill; CAGR is from bars over 252; maximum drawdown is on the compounded window. A trade is an entry. On the backtester's basis (cash at 0%, no risk-free rate) the same rules look better against buy-and-hold than they do after bills; both are shown.
Neighbourhood
The settings 50 days either side of the famous one (150, 175, 225 and 250 days for the 200-day rule). Settings with fewer than 5 trades over the window are not neighbours. The share of the Sharpe that neighbours keep is the median neighbour Sharpe over the famous setting's, computed only when the famous setting's Sharpe is at least 0.20; it is classed as the backtester's overfit badge is (robust at 70% or more, sensitive from 50%, fragile below).
Walk-forward
Rolling windows anchored to the data end: 10 years in sample, 2 out of sample, stepping 2 years; complete windows only (at least 4); in each in-sample window the setting with the highest Sharpe among those with at least 3 trades is chosen (ties go to the lowest grid index). The app's own walk-forward tool is not used here: it restarts the indicator inside each test slice.
Resampling
Paired circular moving-block bootstrap, 21-day blocks, 2,000 resamples, seeded from the reproduce hash so a regeneration on unchanged data is identical. It differs from the backtester's Monte Carlo panel, which reorders single days (every reordering ends at the same final value) or resamples single days (which destroys volatility clusters).
Verdict
One per ETF, first match wins: Trailed buy-and-hold (Sharpe at or below zero, or fewer than 25% of settings beat buy-and-hold's Sharpe while the famous one trails it by 0.10 or more); Sits on a spike (the famous setting beats buy-and-hold but its neighbours keep under 50% of its Sharpe); Held up in this test (Sharpe at least 0.10 above buy-and-hold's, at least 60% of settings above it, the walk-forward chain at or above buy-and-hold's out of sample, 80% of resamples, and the same gap with fills a day later and at 20 bps; at least 30 trades, and 10 entries by the walk-forward chain out of sample, otherwise Too few trades to call, or Held up only without frictions when only the frictions fail); Shallower drawdown, lower return (max drawdown shallower by 10 points or more with a lower CAGR); otherwise No reliable difference. The thresholds were fixed before the results were seen.
Generated
2026-10-13; engine 1.0.0. Every figure is computed and every sentence is rule-based over those figures; no language model is involved. Reproduce hash of the famous setting over the backtester's own window: 121b712148ead5ac.
Related
All robustness checks · QQQ in the backtester · the ma crossover indicator

The 200-day rule on other ETFs: SPY, TLT, GLD, EFA
Other rules on QQQ: golden cross, 12/26-day EMA crossover (the MACD line above zero), RSI(14) 30/70 rule

All robustness checks →

Historical simulation, not investment advice. Past results do not predict future results.