The Test Bench › Moving averages › Golden cross › Study 017
Does a golden cross predict a rally, and a death cross a fall? We tested 12,653 signals across 483 S&P 500 stocks, 2006 to September 2026, over the next 100 trading days (about five months).
STUDY 017After a golden cross in a stock above its 200-day average, the stock rose a median 4.3% over the next 100 trading days, 0.17 percentage points less than on an ordinary day.
After a death cross in a stock below its 200-day average, the stock rose a median 5.3%, 0.07 percentage points less than on an ordinary day.
The largest estimated gap in the four comparisons, in either direction, was 1.20 percentage points; none met our test for a clear difference.
In this test, a golden cross or a death cross showed no clear difference from ordinary days over the next 100 trading days; that is not proof that there is none.
Worked examples and how traders use it: the golden cross explained. The same test for the 200-day average 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).
Calm and volatile compare each stock’s volatility with its own whole-period median, a label that uses hindsight. Over the 200 trading days before the signal, stocks above their 200-day average had moved a median +0.7% to +3.9%, depending on the volatility state. Over the next 100 days they rose a median 4.3%, against +4.5% on an ordinary day; the gap was not clear.
Over the 200 trading days before the signal, stocks below their 200-day average had moved a median −2.7% to +1.8%, depending on the volatility state. Over the next 100 days they rose a median 5.3%, against +5.4% on an ordinary day; the gap was not clear.
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.
A check set in advance, from a published claim: SentimenTrader (19 April 2016) reported that on the S&P 500 index, longer-term returns after a golden cross were better when the 200-day average was still falling (lower than five days earlier). We tested the idea on single stocks, with the direction read over 20 trading days, set in advance. Here the comparison is with all ordinary days of the same stocks, and it rests on the main interval only, without the robustness reruns.
After golden crosses with a falling 200-day average, the next 100 days were +0.89 points against ordinary days (−1.45 to +3.43); with a rising one, −1.54 points (−2.99 to −0.29). The order matches SentimenTrader’s finding on the index, but the two intervals overlap, so the test cannot rank them. Only the rising-average interval excludes zero, and only on the main interval.
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 golden cross in a stock above its 200-day average, volatility was 10% lower than over the 60 before (a median ratio of 0.90), against 1.00 on ordinary days: a difference in the ratio of −0.10 (−0.14 to −0.07), clear under every block length. It fell after 63% of these 5,700 signals, against 49% of ordinary days; and in 403 of the 482 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 death cross in a stock below its 200-day average, the median ratio was 1.00 against 0.95: +0.04 (+0.01 to +0.08), 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 golden cross it was 0.161 against 0.122 on ordinary days (clear under every block length); after it, 0.120 against 0.117 (not clear). Before a death cross, 0.161 against 0.108 (clear under every block length); after it, 0.119 against 0.116 (not clear).
The two other cells answer whether the side of the 200-day average or the direction of the signal drove this. After a golden cross in a stock below its 200-day average, the median ratio was 1.00, against 0.95 on ordinary days (not clear, 537 signals); after a death cross in a stock above it, 0.91 against 1.00 (clear under every block length). Here the side of the 200-day average mattered more than the direction of the cross.
One possible explanation: a stock above its 200-day average is usually in a calmer phase, and a cross there comes at the end of a short swing that then settles; below the average, the turbulence of the decline goes on. The test does not isolate it. It measures how much the price moved; which way it moved is the subject of the results above.
Bespoke Investment Group (25 April 2016) reported that, for many stocks and indices, the back-tested returns after a golden cross were unremarkable. In our test, in stocks above their 200-day average the next 100 days were not clearly different from ordinary days.
On the S&P 500 index itself, Arthur Hill at StockCharts (June 2016) found that holding the index only while its 50-day average was above the 200-day returned 8.48% a year from 1991 to 2015, against 7.55% for buying and holding, mostly by stepping aside in bear markets. That is a trading rule on one index; Study 020 runs it on SPY and on these stocks.
Question: after a golden cross or a death cross, 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?
| Part | Definition |
|---|---|
| Indicators | The 50-day and 200-day simple moving averages of the daily close (the app’s SMA50 and SMA200) |
| Golden cross | The first close on which the 50-day average is above the 200-day, after a close below it |
| Death cross | The first close on which the 50-day average is below the 200-day, after a close above it |
| Measured | From the signal day’s close, over the next 100 trading days (about five months) |
| Compared with | Every eligible day of the same stocks on the same side of the 200-day average |
| Stocks | 483 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 12,653 signals are not 12,653 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 four 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.001 percentage points or less, a small fraction of every interval’s width.
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.
In the Events panel, add a Signal “SMA50 ↑ crosses above SMA200” (both are default columns), wired into EVENT (the block that marks the event days). Choose 1d · Daily, set the horizon to 100 and the Trend to > SMA200, and run it on your own stocks. For the death cross use “↓ crosses below” with the Trend at < SMA200. For the slope check, add a custom SMA with Period 200 and Bars back 20 (the 200-day average as it stood 20 days earlier): “SMA200 > your SMA” means the 200-day average is rising.
| Signal | Stocks | Signal days | Median 100-day return | Ordinary days | Difference | 95% interval | Result |
|---|---|---|---|---|---|---|---|
| Golden cross | Above 200-day | 5,772 | +4.31% | +4.48% | −0.17 points | −1.65 to +0.95 | not clear |
| Golden cross | Below 200-day | 544 | +6.61% | +5.41% | +1.20 points | −2.53 to +3.84 | not clear |
| Death cross | Above 200-day | 833 | +4.75% | +4.48% | +0.27 points | −1.37 to +2.08 | not clear |
| Death cross | Below 200-day | 5,504 | +5.34% | +5.41% | −0.07 points | −1.77 to +1.58 | not clear |
| After 50 days | Above the 200-day average | Below it |
|---|---|---|
| Golden cross | −0.23 points (−0.77 to +0.43) | +0.50 points (−1.81 to +2.80) |
| Death cross | +0.94 points (−0.45 to +2.12) | +0.55 points (−0.44 to +1.46) |
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.
| Signal | Signal days | Volatility, next 60 ÷ previous 60 days | Ordinary days | Difference | 95% interval | Result |
|---|---|---|---|---|---|---|
| Golden cross · above 200-day | 5,700 | 0.902 | 1.005 | −0.10 | −0.14 to −0.07 | clear |
| Golden cross · below 200-day | 537 | 1.003 | 0.955 | +0.05 | −0.03 to +0.12 | not clear |
| Death cross · above 200-day | 838 | 0.913 | 1.005 | −0.09 | −0.12 to −0.06 | clear |
| Death cross · below 200-day | 5,503 | 0.996 | 0.955 | +0.04 | +0.01 to +0.08 | clear |
| Signal | Trendiness, previous 60 days | Ordinary days | Result | Trendiness, next 60 days | Ordinary days | Result |
|---|---|---|---|---|---|---|
| Golden cross | 0.161 | 0.122 | clear | 0.120 | 0.117 | not clear |
| Death cross | 0.161 | 0.108 | clear | 0.119 | 0.116 | not 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.
| Signal | State | Signal days | Difference | 95% interval |
|---|---|---|---|---|
| Golden cross | Above 200-day · calm | 3,384 | −0.40 points | −1.44 to +0.53 |
| Golden cross | Above 200-day · volatile | 2,388 | −0.19 points | −3.05 to +2.38 |
| Golden cross | Below 200-day · calm | 219 | +1.09 points | −2.05 to +3.70 |
| Golden cross | Below 200-day · volatile | 325 | +2.08 points | −4.03 to +7.67 |
| Death cross | Above 200-day · calm | 465 | +0.91 points | −0.93 to +3.25 |
| Death cross | Above 200-day · volatile | 368 | −1.15 points | −3.59 to +2.06 |
| Death cross | Below 200-day · calm | 1,731 | +0.85 points | −0.73 to +1.92 |
| Death cross | Below 200-day · volatile | 3,773 | −0.60 points | −2.87 to +1.78 |
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 017, linking to guanalyser.com/test-bench/golden-cross-death-cross/. For commercial use, ask us at hello@guanalyser.com.
Rebuild the test
Build the crossover in the Events panel from the default 50-day and 200-day averages, set the trend precondition and 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