DEV Community

maymay5692
maymay5692

Posted on

I Backtested 49 Crypto Trading Strategies. Here's Every Single Result.

I wanted to build a trading bot. But before writing any live trading code, I needed to answer one question: which strategy actually works?

The internet is full of opinions. "EMA crossover is the best." "RSI works great." "Bollinger Bands are underrated." Nobody shows their data.

So I built a backtesting engine in Python, implemented 49 strategies, and ran all of them against 3 years of BTC/USDT daily data. Every result is in this post — Sharpe ratio, max drawdown, win rate, number of trades. No cherry-picking.

Test Conditions

Parameter Value
Pair BTC/USDT
Period Jan 2023 – Feb 2026 (~37 months)
Timeframe Daily (1d)
Initial Capital $10,000
Commission 0.1% per trade
Slippage 0.05%
Data Source Binance API

Important context: BTC went from ~$16,500 to $97,000+ during this period. This is a strong bull run. Trend-following strategies had a massive tailwind. Keep that in mind when reading the numbers.

The Full Results Table

39 out of 49 strategies produced valid results. Sorted by Sharpe ratio.

# Strategy Sharpe Return MaxDD Win% Trades PF
1 multi_timeframe 1.50 546% -32% 100% 2
2 ema_crossover 1.30 491% -34% 35% 34 1.73
3 parabolic_sar 1.25 456% -37% 36% 94 1.09
4 triple_ma 1.25 502% -39% 35% 20 1.45
5 macd 1.17 428% -33% 36% 84 1.00
6 macd_histogram 1.17 428% -33% 36% 84 1.00
7 atr_trailing_stop 1.11 275% -49% 100% 1
8 momentum 1.07 283% -32% 36% 135 1.46
9 multi_factor 1.07 352% -42% 40% 87 0.72
10 donchian_breakout 1.06 320% -37% 34% 32 0.73
11 swing_trading 1.03 311% -42% 36% 28 1.21
12 sma_crossover 0.99 330% -38% 27% 45 0.96
13 breakout_confirmation 0.94 319% -36% 46% 11 1.23
14 obv 0.93 214% -36% 25% 149 0.86
15 adx_trend_follow 0.89 440% -51% 33% 54 0.71
16 keltner_channel 0.85 257% -36% 33% 18 0.84
17 golden_death_cross 0.80 343% -52% 43% 7 0.95
18 rsi 0.80 358% -71% 74% 27 1.15
19 vwap 0.79 322% -80% 50% 22 1.64
20 rsi_divergence 0.78 361% -82% 55% 29 0.47
21 candlestick_patterns 0.77 163% -50% 38% 74 1.05
22 stochastic 0.71 183% -79% 54% 26 0.59
23 volume_profile 0.70 140% -52% 25% 67 1.25
24 adx_ma_combo 0.70 528% -82% 25% 16 0.86
25 pivot_point 0.69 150% -49% 52% 210 0.69
26 grid_trading 0.66 140% -75% 67% 54 0.81
27 cci 0.65 156% -77% 64% 44 0.89
28 support_resistance 0.65 140% -68% 58% 76 0.69
29 pair_trading 0.60 128% -54% 57% 14 0.60
30 bollinger_squeeze 0.54 175% -82% 35% 26 0.46
31-39 (various) <0.2

Strategies 31-39 either produced zero trades (range_trading, statistical_arbitrage), negative Sharpe ratios (mean reversion strategies), or errored out (cointegration).

The 6 ML strategies (XGBoost, LSTM, reinforcement learning) generated zero trades. Daily OHLCV data for 3 years simply isn't enough for ML models to find meaningful patterns.

What the Numbers Actually Say

Trend-following dominates

9 out of the top 11 strategies are trend-following. Moving average crossovers, breakouts, momentum — strategies that ride trends and cut losses.

This makes sense given the data. BTC went 6x during the test period. Anything that buys uptrends and holds them would do well. The question is whether this continues in a bear market. (Spoiler: it won't.)

35% win rate is fine

Every top trend-following strategy has a win rate around 35%. That means 6-7 out of every 10 trades lose money. But the winners are 3-4x larger than the losers, so the math works out.

Meanwhile, strategies with 70%+ win rates (RSI, Bollinger mean reversion) have max drawdowns of -70% to -155%. High win rate ≠ good strategy. What matters is the ratio of average win to average loss.

The #1 strategy is fake

multi_timeframe sits at the top with Sharpe 1.50. Looks amazing. But it only made 2 trades in 37 months. Two. That's not a strategy — that's a coincidence. The parameters happened to catch two lucky swings.

Any strategy with fewer than 30 trades is statistically unreliable. I'd want 50+ trades before trusting a backtest result.

Trades Verdict
1-5 Meaningless
6-20 Suspicious
20-30 Borderline
30+ Minimum acceptable
50+ Statistically sound

Mean reversion gets destroyed

Every mean reversion strategy (Bollinger Bands, z-score, Bollinger mean reversion) produced negative Sharpe ratios with drawdowns exceeding -100%. In a strong trend, buying dips means buying against the market — and the market kept going.

These strategies might work in a ranging market. But you won't know it's a ranging market until after the fact.

The Strategy I Actually Use

I went with ema_crossover for live trading. Not because it's the best on paper, but because:

  1. Sharpe 1.30 — second overall, first among strategies with meaningful trade counts
  2. 34 trades — enough to have some statistical confidence
  3. Only 2 parameters (fast=12, slow=26) — fewer knobs to overfit
  4. Simple to understand — if the short-term average crosses above the long-term average, buy. If it crosses below, sell. No black box.

I've been running it live with real money ($33) on MEXC for 3 months. Results so far: 2 trades, roughly breakeven. The backtest says 491% over 3 years, but in practice, you can go months without a signal on daily timeframes.

(That's a referral link. Signing up is free and supports this project.)

Multi-Pair Results

I also ran the top strategies against ETH/USDT and SOL/USDT.

Pair Strategy Sharpe Return MaxDD Trades
BTC/USDT ema_crossover 1.30 491% -34% 34
SOL/USDT ema_crossover 1.35 1,271% -58% 34
ETH/USDT ema_crossover 0.87 197% -64% 38
SOL/USDT triple_ma 1.44 2,150% -56% 24

SOL was the runaway winner — 1,271% return with ema_crossover alone. SOL went from $8 post-FTX collapse to $200+ in 2024. Any trend-following strategy would have caught that.

ETH underperformed across all strategies (Sharpe < 1.0 everywhere). Too correlated with BTC (0.80) to add diversification value, but not trending as strongly independently.

What Backtests Don't Tell You

This entire post is about past performance. Here's what the numbers can't capture:

  • Regime changes: a strategy that works in a bull market may fail in a bear market
  • Execution reality: slippage, order book depth, and API latency in live trading
  • Multiple comparison bias: test 39 strategies and some will look good by chance
  • Survivorship bias: I only tested strategies I could find and implement. The space of possible strategies is infinite
  • Your starting point matters: the same strategy produces very different experiences depending on when you start

My $33 account running ema_crossover hasn't made money yet. The backtest says 491% over 3 years. Both of those statements are true simultaneously.

Run It Yourself

The backtesting engine is open source:

# GitHub repository coming soon
cd crypto-backtest-engine
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

python scripts/run_backtest.py --strategy ema_crossover --symbol BTCUSDT --timeframe 1d
Enter fullscreen mode Exit fullscreen mode

You'll need an exchange account for live data. I use MEXC for testing — zero maker fees and low minimum trade amounts make it practical for small-budget experiments.

The Honest Takeaway

49 strategies. 3 years of data. One clear conclusion: simple trend-following beats everything else, but only when there's a trend.

The next 3 years might look completely different. Build a circuit breaker, start small, and don't trust any backtest number — including the ones in this post.

This is a technical analysis of backtesting results, not financial advice. Past performance does not guarantee future results. Only trade with money you can afford to lose. This post contains a referral link.

Top comments (0)