The Moving Average Crossover strategy uses two moving averages of different periods to generate buy and sell signals. It appoximates the idea of a trending market by using 2 SMAs, one short fast SMA(50) and another slow longer SMA(200). It buys whenever a short SMA(50) crosses up a long SMA(200), thereby implying that the direction of the market has changed. It sells once a short SMA(50) crosses down a long SMA(200). These are fairly long MAs, which means that this strategy is naturalyl meant to capture bigger moves, and thereby might not be a good fit for short time frames. But assumptions like that do not mean anything, because we've backested it! See youself.
Backtest covers 26.5 years of NVDA β’ Daily (NVIDIA Corporation) data, from January 22, 1999 to July 11, 2025.
Equity curve is the strategy's performance over time. You should compare it to the asset's Buy & Hold performance. In general, you want the blue area to be well above the gray area.
Drawdown is how much losses (realized or unrealized) the strategy has had if compared to the highest equity peak. Compare this to the asset's drawdown to see whether your strategy does a decent job of isolating you from downside volatility. In general, the red area must be well within the gray area.
So, we have backtested 50/200 SMA cross on 26.5 years of NVDA β’ Daily candles.Β This backtest resulted in 13 positions, with the average win rate of 77% and reward-risk ratio of 16.02.Β If you assume that 16.02 reward-to-risk ratio holds, you need a minimum win rate of 5.9 to be profitable. So you're looking good so far.Β However, 13 positions is a small sample size, so take the results with a huge grain of salt.Β The key metrics are as follows:
With that exposure in mind, you can tell that for 65% time-in-market, you get 22.26% of the asset upside potential, and 63.44% of the asset downside potential.
All of the following: # "Papa" D Simple Moving Average (50, 0, close) Crosses β D Simple Moving Average (200, 0, close)
All of the following: # "India" D Simple Moving Average (50, 0, close) Crosses β D Simple Moving Average (200, 0, close)
The backtest results show some interesting metrics, but I have concerns about the statistical significance. 13 trades over 26.5 years is extremely low frequency - this makes me very skeptical about drawing any meaningful conclusions.
The win rate of 77% looks impressive at first glance, but with only 13 total trades, this number is not statistically robust. I see that the strategy underperformed buy & hold by a large margin (83,183% vs 373,678%), which is not optimal for such a long timeframe. The market exposure of 65.2% suggests the strategy misses significant upside moves while trying to avoid drawdowns.
The Risk/Reward ratio of 16.02 and win rate leeway of 76.94 look mathematically sound, but again, with such few trades these numbers are not reliable for future prediction. We would need at least 100 trades minimum to make any statistically valid assumptions about the strategy's behaviour. The high maximum drawdown of -57.1% is also concerning and should be addressed before real money implementation.
Total Trades | 13 | Net Profit | 83183.3% | Buy & Hold Profit | 373678.5% |
Win Rate | 77% | Reward/Risk Ratio | 16.02 | Max Drawdown | -57.1% |
Asset Max Drawdown | -90.0% | Exposure | 65.2% | Avg Candles in Position | 332.8 |
Sharpe Ratio | 0.70 | Sortino Ratio | 1.28 | Realized Volatility | 32.67% |
Max Winning Streak | 5 | Avg Winning Streak | 5.0 | Max Losing Streak | 2 |
Avg Losing Streak | 1.5 | Avg Trades per Month | 0.1 | Avg Trades per Day | 0.0 |
Return Std Dev | 261.5 | Loss Std Dev | 8.5 | Win Std Dev | 283.9 |
Expectancy | 12.1 | Beta | 0.4 |
backtest | exposure | peformance vs asset | drawdown vs asset | win% | reward/risk |
---|---|---|---|---|---|
BTCUSDT β’ 1 Minute | 57% | (5.4%/8.9%) 0.61x | (-2.0%/-1.9%) 1.05x | 39 | 5.4 |
EURUSD β’ 1 Minute | 61% | (-1.1%/-1.0%) 1.10x | (-1.2%/-1.2%) 1.00x | 20 | 1.1 |
GLD β’ 1 Minute | 52% | (1.7%/0.0%) Infinityx | (-2.5%/-5.5%) 0.45x | 36 | 2.5 |
NVDA β’ 1 Minute | 61% | (1.2%/16.7%) 0.07x | (-7.9%/-4.4%) 1.80x | 28 | 2.9 |
SPY β’ 1 Minute | 60% | (0.5%/4.6%) 0.11x | (-2.5%/-2.1%) 1.19x | 33 | 2.3 |
TSLA β’ 1 Minute | 47% | (6.6%/-10.3%) -0.64x | (-11.2%/-21.4%) 0.52x | 39 | 2.1 |
WMT β’ 1 Minute | 41% | (-0.5%/-5.4%) 0.09x | (-3.9%/-6.4%) 0.61x | 29 | 2.4 |
BTCUSDT β’ 10 Minutes | 57% | (18.2%/22.4%) 0.81x | (-8.6%/-12.1%) 0.71x | 41 | 3.1 |
EURUSD β’ 10 Minutes | 55% | (2.5%/5.8%) 0.43x | (-2.2%/-4.3%) 0.51x | 38 | 2.4 |
GLD β’ 10 Minutes | 58% | (26.1%/43.7%) 0.60x | (-5.9%/-8.3%) 0.71x | 54 | 3.1 |
NVDA β’ 10 Minutes | 57% | (5.0%/32.9%) 0.15x | (-33.4%/-42.8%) 0.78x | 44 | 1.4 |
SPY β’ 10 Minutes | 60% | (6.6%/14.3%) 0.46x | (-13.4%/-20.7%) 0.65x | 41 | 1.9 |
TSLA β’ 10 Minutes | 47% | (18.4%/59.0%) 0.31x | (-34.8%/-55.3%) 0.63x | 41 | 1.9 |
WMT β’ 10 Minutes | 60% | (37.4%/40.1%) 0.93x | (-10.3%/-23.8%) 0.43x | 62 | 1.8 |
BTCUSDT β’ 1 Hour | 56% | (36.4%/68.2%) 0.53x | (-31.3%/-30.6%) 1.02x | 43 | 2.2 |
EURUSD β’ 1 Hour | 50% | (6.9%/6.8%) 1.01x | (-5.7%/-9.0%) 0.63x | 42 | 2.4 |
GLD β’ 1 Hour | 60% | (35.8%/117.6%) 0.30x | (-26.6%/-22.2%) 1.20x | 36 | 3.0 |
NVDA β’ 1 Hour | 61% | (783.4%/3126.3%) 0.25x | (-51.4%/-68.0%) 0.76x | 52 | 3.5 |
SPY β’ 1 Hour | 64% | (85.7%/106.7%) 0.80x | (-19.0%/-35.1%) 0.54x | 61 | 2.3 |
TSLA β’ 1 Hour | 55% | (2930.2%/1395.5%) 2.10x | (-38.7%/-75.1%) 0.52x | 56 | 6.0 |
WMT β’ 1 Hour | 60% | (33.6%/138.2%) 0.24x | (-28.4%/-26.9%) 1.06x | 50 | 1.6 |
BTCUSDT β’ Daily | 59% | (638.7%/1337.5%) 0.48x | (-61.1%/-76.6%) 0.80x | 83 | 7.3 |
EURUSD β’ Daily | 35% | (4.8%/10.8%) 0.44x | (-12.2%/-23.3%) 0.52x | 71 | 0.7 |
GLD β’ Daily | 61% | (242.9%/595.1%) 0.41x | (-36.4%/-45.3%) 0.80x | 46 | 6.4 |
NVDA β’ Daily | 65% | (83183.3%/373678.5%) 0.22x | (-57.1%/-90.0%) 0.63x | 77 | 16.0 |
SPY β’ Daily | 72% | (1127.3%/1316.3%) 0.86x | (-32.5%/-56.7%) 0.57x | 87 | 3.8 |
TSLA β’ Daily | 57% | (3139.0%/24185.2%) 0.13x | (-65.4%/-75.0%) 0.87x | 38 | 25.3 |
WMT β’ Daily | 64% | (1143.9%/13022.2%) 0.09x | (-57.1%/-50.6%) 1.13x | 39 | 8.1 |