RESEARCH #001

SMA Cross: Does the Classic Still Work?

๐Ÿ“… June 2026 ยท ๐Ÿ“Š Level 1 โ€” Basic ยท โฑ 20.6 years of data ยท ๐Ÿท SMA, Trend Following

1 The Problem

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.

2 History

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.

3 Simple Explanation

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.

4 First Hypothesis

Hypothesis: SMA(50/200) crossover on SPY over the last 20 years will produce positive but modest returns, with significant drawdowns during sharp trend reversals.

5 Basic Test โ€” No Optimization

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.

+204%
Total Return
5.55%
CAGR
0.38
Sharpe Ratio
โˆ’40.3%
Max Drawdown
54.2%
Win Rate
5,174
Total Trades

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.

6 Trade Analysis

Best Trades

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.

Worst Trades

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.

Key insight: SMA Cross protects in slow declines but fails in sudden crashes. The lag is the price of simplicity.

7 Crisis Check

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%.

8 Different Markets

We applied the same SMA(50/200) strategy to other assets:

11.73%
QQQ CAGR
0.64
QQQ Sharpe
โˆ’37.1%
QQQ Max DD
21.97%
BTC CAGR
0.64
BTC Sharpe
โˆ’80.8%
BTC Max DD

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.

9 Different Parameters

We varied the fast SMA while keeping slow at 200:

10/200
5.20% CAGR ยท 0.36 S
30/200
5.96% CAGR ยท 0.40 S
75/200
7.04% CAGR ยท 0.45 S
150/200
6.86% CAGR ยท 0.44 S

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.

10 We Tried to Break It

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:

What we found: The optimal parameters varied wildly by period. In 2010-2011, SMA(50/200) was best. In 2018-2019, SMA(75/200) won. In 2022-2023, no parameter choice could save the strategy from a โˆ’85% drawdown. This is not parameter instability โ€” this is strategy fragility.

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.

11 Walk Forward Analysis

3 years train โ†’ 1 year test, rolling annually. 15 walk-forward periods total.

PeriodParamsTrain STest CAGR
2014-201530/2000.56+63.8%
2017-201875/2000.49+25.6%
2018-201975/2000.55โˆ’47.6%
2021-2022150/2500.45โˆ’47.1%
2022-2023150/2500.51โˆ’85.9%
2023-202475/2000.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.

12 Monte Carlo Simulation

1,000 randomized simulations reshuffling actual trade returns:

5.52%
Median CAGR
5.67%
Mean CAGR
โˆ’1.46%
P5 CAGR
13.32%
P95 CAGR
50.6%
Mean DD
72.2%
P95 DD

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.

13 Errors & Failures

โš  First run: wrong trade tracking

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.

โš  Monte Carlo: numpy type error

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.

14 Verdict

โš  PARTIALLY VALIDATED
SMA Cross works โ€” but only in strong trending markets. The strategy survived 2008 and 2022 but failed in 2020 and produces unacceptable drawdowns for most risk profiles. Its edge exists but is too small to justify as a standalone system. Recommendation: use as a trend filter only, not as a primary strategy.
๐Ÿ“ˆ Returns5/10
๐Ÿ›ก Stability4/10
๐Ÿ”ง Simplicity10/10
๐Ÿ“‰ Drawdown3/10
๐ŸŒ Scalability6/10
๐Ÿ“Š Overall5.6/10

15 What's Next

  1. Add a volume filter. SMA Cross + Volume Spike could filter out false signals in low-volume markets.
  2. Test regime detection. Use the strategy only in trending regimes, switch to mean-reversion in sideways markets.
  3. Forward test (30 days). Run the strategy on current market data with SMA(75/200) as the primary parameter set.
  4. Research #002 โ€” EMA Cross. Does the exponential variant perform better than simple?

Nivonex Research Program ยท #001 of 100

โ† Back to Program