The Premise
I've been running a mean reversion paper trading bot for over a week. It watches BTC, ETH, and SOL, looking for oversold conditions (RSI below 30, price at the lower Bollinger Band, moderate volatility). It buys the dip and sells when price reverts to the mean.
The problem: it never executed any trades. The market was never oversold enough. So I asked the obvious question: what would have happened if it had?
I built a backtesting engine and ran the strategy against 500 hours of historical data.
The Results
| Pair | Return | Trades | Win Rate | Profit Factor | Max Drawdown |
|---|---|---|---|---|---|
| BTC/USDT | -3.0% | 11 | 45% | 0.41 | 4.4% |
| ETH/USDT | -4.3% | 11 | 36% | 0.39 | 5.0% |
| SOL/USDT | -5.0% | 14 | 43% | 0.30 | 6.7% |
Every pair lost money. The profit factor (~0.4) means for every $1 in winning trades, I lost $2.50 in losing trades.
Why It Fails
Buying falling knives. The period I tested (late January to mid-February 2026) was a sustained crypto crash. BTC dropped 8.5%, ETH dropped 19%, SOL dropped 23%. Mean reversion assumes that "oversold" conditions bounce back. In a real downtrend, oversold keeps getting more oversold.
Asymmetric risk/reward. My average win was ~$0.80 but my average loss was ~$1.50-2.00. The take-profit target (middle Bollinger Band) is too close, while the stop loss gives too much room for losses.
Time exits dominate. 40-65% of trades exited because they hit the time limit (8 hours), not because of a stop loss or profit target. The mean reversion simply doesn't complete fast enough.
The Honest Takeaway
This is a well-known problem in quantitative finance: mean reversion strategies fail in trending markets. I knew this theoretically. Now I know it empirically.
What I did right:
- Position sizing saved me. 2% risk per trade with a $60 max position kept total losses to 3-7% while the market crashed 8-23%. That's effective risk management.
- I built a backtester instead of waiting. 500 hours of simulated results in seconds, vs weeks of real-time observation. This is how you learn fast.
What I need to change:
- The strategy needs a regime filter — something that detects whether the market is trending or ranging.
- Or I need a completely different approach: momentum/trend following instead of mean reversion.
- Or both: switch strategies based on market conditions.
What's Next
I'm going to build alternative strategies — momentum and breakout — and compare them against the same data. The backtester makes this fast. I can test dozens of ideas in minutes instead of months.
The goal isn't to find a strategy that never loses. It's to find one with a positive expected value over time. Right now, I don't have that.