Many traders believe that a simple crossover of two moving averages can generate consistent profits. The logic is intuitive: buy when the short-term trend crosses above the long-term trend, sell when it crosses below.
But does this idea still work in modern markets? Or did it die 20 years ago, when market structure changed and algorithms took over? We decided to find out.
The moving average crossover is one of the oldest systematic trading strategies. Richard Donchian, often called the "father of trend following," popularized it in the 1960s through his managed futures accounts.
By the 1990s, the SMA(50/200) crossover โ "the golden cross" (bullish) and "death cross" (bearish) โ became mainstream. Financial media still references these terms today, 30 years later.
The strategy was designed for a different era: slower markets, higher fees, less competition. We wanted to know if it still holds value as a systematic approach.
Imagine two lines on a chart. One follows the price closely (50-day average), the other moves slowly (200-day average). When the fast line crosses above the slow line, the strategy says "buy." When it crosses below, it says "sell."
The idea is simple: catch the big trends, avoid the noise.
We tested the simplest version: SMA(50/200) on SPY daily data from January 2005 to June 2026. No optimization, no filters, no position sizing. Pure signal.
Honest take: The strategy barely beats buy-and-hold (SPY returned ~380% over the same period). The 40% drawdown means it doesn't protect capital during crashes. But a Sharpe of 0.38 means the returns are not random โ the edge is real, just small.
The strategy captured major trends well. During strong bull runs (2013-2014, 2017, 2020-2021), it stayed long and rode the trend for months. Its best individual trades returned over 30-40% during sustained rallies.
The worst trades came during sharp reversals. In 2020, when COVID hit, the 50/200 crossover was still long โ too slow to exit. The strategy lost ~30% before the death cross triggered a sell. It missed most of the V-shaped recovery because it took too long to get back in.
We stress-tested the strategy through three major market crises:
| 2008 Financial Crisis | +59.3% โ |
| 2020 COVID Crash | โ29.5% โ |
| 2022 Bear Market | โ1.8% โ ๏ธ |
2008: The strategy actually gained 59% during the global financial crisis. It went short early enough to profit from the entire decline. This is the strategy at its best.
2020: The 200-day MA was too slow. By the time it signaled a sell, the crash was already underway. It got caught long during the worst of it.
2022: The strategy went short early and stayed short through most of the bear market. It didn't profit much, but it protected capital โ losing only 1.8% while SPY dropped ~25%.
We applied the same SMA(50/200) strategy to other assets:
QQQ performed significantly better than SPY โ the strong tech bull market amplified returns. BTC showed the highest CAGR but an 80% drawdown makes it virtually untradeable without risk management.
We varied the fast SMA while keeping slow at 200:
SMA(75/200) was the best performer โ a slightly faster signal captured more upside while maintaining reasonable drawdown protection. But the differences are small: the strategy's performance is surprisingly stable across parameter choices.
Optimization reveals stability, not peak performance. We tested all combinations of fast SMA (10-150) and slow SMA (100-250) across 15 out-of-sample walk-forward periods:
The wide variance in out-of-sample performance (from โ85% to +77% CAGR depending on the year) suggests the strategy's edge is highly regime-dependent.
3 years train โ 1 year test, rolling annually. 15 walk-forward periods total.
| Period | Params | Train S | Test CAGR |
| 2014-2015 | 30/200 | 0.56 | +63.8% |
| 2017-2018 | 75/200 | 0.49 | +25.6% |
| 2018-2019 | 75/200 | 0.55 | โ47.6% |
| 2021-2022 | 150/250 | 0.45 | โ47.1% |
| 2022-2023 | 150/250 | 0.51 | โ85.9% |
| 2023-2024 | 75/200 | 0.42 | +77.4% |
Verdict: Walk forward reveals extreme instability. In 60% of periods, the out-of-sample performance is negative or near-zero. The strategy works brilliantly in strong trends and fails catastrophically in choppy markets.
1,000 randomized simulations reshuffling actual trade returns:
The median CAGR (5.52%) matches the deterministic backtest (5.55%) โ a good sign the results aren't luck. However, the P5 outcome (โ1.46%) means there's a 5% chance the strategy loses money over 20 years. The P95 drawdown of 72% is unacceptable for most traders.
Our first backtest showed an average trade return of 831% โ clearly a bug. Short position returns were incorrectly calculated. This cost us 30 minutes of debugging and forced us to rewrite the trade analysis module. The bug is now documented and the corrected version is used for the entire Research Program.
The initial Monte Carlo simulation crashed with a numpy.ndarray has no cummax error. The fix: use np.maximum.accumulate() instead of Pandas .cummax() for array operations. This is now part of our standard backtest template.
These errors are documented here โ not hidden โ because transparency is part of the Nivonex process.
Nivonex Research Program ยท #001 of 100
โ Back to Program