The Test Bench › Moving averages › 200-day average › Study 018

Does the 200-Day Moving Average Work? Price Crossings Tested on S&P 500 Stocks

Does a stock crossing its 200-day moving average predict the next move? We tested 71,245 signals across 483 S&P 500 stocks, 2006 to September 2026, over the next 100 trading days (about five months).

STUDY 018

The short answer

After a crossing above the 200-day average, the stock rose a median 4.5% over the next 100 trading days, 0.03 percentage points more than on an ordinary day.

After a crossing below the 200-day average, the stock rose a median 4.8%, 0.58 percentage points less than on an ordinary day.

The largest estimated gap in the two comparisons, in either direction, was 0.58 percentage points; none met our test for a clear difference.

In this test, either crossing of the 200-day average showed no clear difference from ordinary days over the next 100 trading days; that is not proof that there is none.

Crossing above the 200-day average: no clear difference from ordinary daysA close back above the 200-day moving average is read by many traders as a return to a long-term uptrend.The next 100 days were 0.03 percentage points better than ordinary days (not clear).On these stocks, a crossing above the 200-day average did not reliably predict stronger returns over the next 100 days.
Crossing below the 200-day average: no clear difference from ordinary daysA close below the 200-day average is read by many traders as a sign of a downtrend; many trend rules sell there.The next 100 days were 0.58 percentage points worse than ordinary days (not clear).On these stocks, a crossing below the 200-day average did not reliably predict weaker returns over the next 100 days.
Volatility fell after a crossing above, not after a crossing belowVolatility is how much the price moves from day to day.Over the 60 trading days after a crossing above, volatility was 5% lower than over the 60 before, against no change on ordinary days. After a crossing below, it stayed about the same, against 5% lower (added after the main results).In the 60 days after either signal, the price moved no more steadily in one direction than on ordinary days.

Worked examples and how traders use it: the 200-day moving average explained. The same test for the golden cross and the 9/21 EMA. Moving-average rules compared as trading strategies: the moving average backtest. The whole series: moving average trading explained.

An event study: it measures what followed each signal. No entry, exit, position size or trading cost is simulated; the backtest of these rules is a separate study. The stocks are today’s S&P 500 members, so companies that failed along the way are missing (survivorship bias).

Read the full study ↓

Full research: method, results and limitations

Every table and assumption behind the summary above

Price around the crossings

Over the 200 trading days before a crossing above, the median stock had moved +2.6% to +3.3%, depending on the volatility state; before a crossing below, +2.7%. Calm and volatile compare each stock’s volatility with its own whole-period median, a label that uses hindsight. Over the next 100 days, a crossing above was followed by +0.03 points against ordinary days above the average (not clear), and a crossing below by −0.58 points against ordinary days below it (not clear).

In this sample, the price crossed above its 200-day average about 4 times a year per stock: 35,592 crossings above and 35,653 below in 483 stocks over 2006 to September 2026. Near its average, a price can cross back and forth within days. Crossings that reverse soon afterwards are called whipsaws. Each crossing is a trade for a rule that follows it, so the trading cost is paid often (Study 020 measures it).

Interpretation

The lines stay close to zero: in this test, the signals were not followed by a clear difference from ordinary days over the next 100 days.

The comparison days are on the same side of the average as the signal, so the test asks whether the crossing day adds anything to being on that side. It does not compare stocks above the average with stocks below it.

Volatility and trend around the signal

We added this check after reading the main results, so treat it as a pattern to test again on new data, not a confirmed edge. It asks whether the signal marks a change in how much the price moves, or the start of a steadier trend; it measures no trading profit, and the return comparison above remains the main test. Same stocks, years and signals; the comparison is again with ordinary days of the same stocks on the same side of the 200-day average. The measure is a ratio: volatility (the standard deviation of daily returns) over the 60 trading days after a signal or an ordinary day, divided by the same over the 60 days before; the figures are medians of that ratio, and 1.00 means no change. The chart shows the path on a different scale, 20-day volatility against the stock’s usual level.

Over the 60 trading days after a crossing above the 200-day average, volatility was 5% lower than over the 60 before (a median ratio of 0.95), against 1.01 on ordinary days: a difference in the ratio of −0.06 (−0.08 to −0.03), clear under every block length. It fell after 57% of these 35,571 signals, against 49% of ordinary days; and in 378 of the 483 stocks with at least one such signal, the stock’s median ratio after the signal was below its median on its own ordinary days. After a crossing below the 200-day average, the median ratio was 1.01 against 0.95: +0.06 (+0.03 to +0.09), clear under every block length.

Trendiness compares the net price change over the window with the total distance the price travelled, the sum of its daily moves: near 1, the price moved mainly one way; near 0, back and forth. It shows whether a trend followed. Before a crossing above it was 0.067 against 0.124 on ordinary days (clear under every block length); after it, 0.119 against 0.117 (not clear). Before a crossing below, 0.075 against 0.111 (clear under every block length); after it, 0.117 against 0.116 (not clear).

One possible explanation: the window before a rise holds the turbulent stretch that set it up, and volatility tends to settle after such a stretch, while falling prices tend to come with higher volatility. The test does not isolate it. It measures how much the price moved; which way it moved is the subject of the results above.

Compared with published tests

Mebane Faber’s 2007 paper, updated in 2013, held US stocks only while the index was above its 10-month average. His rule checks the index once a month, at the month-end close, against the average of the last ten month-end closes: similar in spirit to the 200-day average, with fewer and different signals. From 1901 to 2012 he reports 10.2% a year against 9.3% for buying and holding, with a worst fall of −50% against −84%, before costs and taxes. His test is a holding rule on the index and this one measures the days after each crossing in single stocks; Study 020 runs his rule on SPY over these years.

How we tested it

Question: after a crossing above the 200-day average or a crossing below the 200-day average, does the stock’s median return over the next 100 trading days differ from ordinary days for the same stocks on the same side of the 200-day average?

PartDefinition
IndicatorsThe 200-day simple moving average of the daily close (the app’s SMA200)
Crossing above the 200-day averageThe first close above the 200-day average, after a close below it
Crossing below the 200-day averageThe first close below the 200-day average, after a close above it
MeasuredFrom the signal day’s close, over the next 100 trading days (about five months)
Compared withEvery eligible day of the same stocks on the same side of the 200-day average
Stocks483 current S&P 500 members, 2006 to September 2026, price returns

The design was set on 15 October 2026 in our internal study record, before any return was read. The stocks, data and years are those of our RSI studies, so the series can be compared on one data set.

The 71,245 signals are not 71,245 independent observations: signals repeat in the same stock, the 100-day windows overlap, and stocks move together. The 95% intervals come from a calendar-block bootstrap that resamples whole stretches of the calendar (2,000 resamples), rerun with several block lengths and designs. A gap is called clear when every interval excluded zero on the same side: our own rule, stricter than a single test, and not proof that a gap will persist in future data. The two comparisons are not adjusted for being tested together, so one clear result among them would be weaker evidence than it looks. At a 100-day horizon the longest blocks leave fewer than 30 in twenty years, so those reruns are rough. Signal days are part of the ordinary-day pool, as in the app’s event study: the comparison is with every eligible day, signals included. Leaving the signal days out of the pool moves each comparison by 0.03 percentage points or less, a small fraction of every interval’s width. A crossing puts the close on its own side of the 200-day average, so the other side has no signals by construction.

Survivorship bias. This is not the historical index. It is today’s S&P 500 members projected backwards, so companies that failed or left the index after a deep fall are missing. How the bias works and how to avoid it: survivorship bias in backtesting.

Limitations

How to reproduce this

In the Events panel, add a Signal “Close ↑ crosses above SMA200”, wired into EVENT (the block that marks the event days). Choose 1d · Daily, set the horizon to 100 and the Trend to > SMA200 (a stock that has just crossed above is already above its average; the setting picks the matching ordinary days), and run it on your own stocks. For the crossing below use “↓ crosses below” with the Trend at < SMA200.

Appendix

All results

SignalStocksSignal daysMedian 100-day returnOrdinary daysDifference95% intervalResult
Crossing aboveAbove 200-day35,592+4.52%+4.48%+0.03 points−1.18 to +1.26not clear
Crossing aboveBelow 200-day0————none by construction
Crossing belowAbove 200-day0————none by construction
Crossing belowBelow 200-day35,653+4.83%+5.41%−0.58 points−1.84 to +0.51not clear

Secondary checks, set in advance

After 50 daysAbove the 200-day averageBelow it
Crossing above+0.10 points (−0.53 to +0.76)—
Crossing below—−0.54 points (−1.22 to +0.15)

Main (63-day) intervals only: these checks were not rerun under the other settings and are not adjusted for being tested together, so an interval here that excludes zero is weaker evidence than a clear result.

Volatility and trend around the signal (added after the main results)

SignalSignal daysVolatility, next 60 ÷ previous 60 daysOrdinary daysDifference95% intervalResult
Crossing above · above 200-day35,5710.9481.006−0.06−0.08 to −0.03clear
Crossing below · below 200-day35,6151.0090.952+0.06+0.03 to +0.09clear
SignalTrendiness, previous 60 daysOrdinary daysResultTrendiness, next 60 daysOrdinary daysResult
Crossing above0.0670.124clear0.1190.117not clear
Crossing below0.0750.111clear0.1170.116not clear

Intervals: calendar-block bootstrap over trading dates, blocks of 21, 63, 126, 252 days, 2000 resamples each; the interval shown is the 63-day one.

Volatility split (set in advance; the label uses hindsight)

SignalStateSignal daysDifference95% interval
Crossing aboveAbove 200-day · calm14,634−0.18 points−1.12 to +0.62
Crossing aboveAbove 200-day · volatile20,958−0.23 points−1.83 to +1.27
Crossing aboveBelow 200-day · calm0——
Crossing aboveBelow 200-day · volatile0——
Crossing belowAbove 200-day · calm0——
Crossing belowAbove 200-day · volatile0——
Crossing belowBelow 200-day · calm13,495+0.65 points+0.004 to +1.33
Crossing belowBelow 200-day · volatile22,158−1.04 points−2.50 to +0.34

Using this research. The analysis, tables and figures on this page are GU Analyser Ltd’s own work, published under a Creative Commons BY-NC 4.0 licence. You are welcome to quote it, cite it and build on it, with credit and a link. Suggested credit: GU Analyser, The Test Bench, Study 018, linking to guanalyser.com/test-bench/200-day-moving-average/. For commercial use, ask us at hello@guanalyser.com.

Rebuild the test

Build the crossing in the Events panel from the default 200-day average, set the horizon, and measure what followed it on your own stocks.

Create a free account and run your own tests → or read how the SMA is calculated →

The method: how an event study works

These are historical analyses. They are neither advice nor forecasts. They describe what happened on past data under stated, simplified assumptions. Past results do not prove what will happen next, and nothing in the Test Bench is a recommendation to buy or sell an investment. GU Analyser is an analytical and educational tool — no money is ever traded here.