Robust RSI + Bollinger Mean Reversion Strategy on BTCUSDT 1h
Robust RSI + Bollinger Mean Reversion — Robust Performance with 2.01 WFE
Verdict: robust · Asset/TF: BTCUSDT 1h · Sample: 30600 bars, ~3.5 years (2023 - 2026)
Hypothesis
Classic mean reversion strategy exploiting oversold bounces. We enter long when the price is both oversold on a short-term basis (RSI_14 < 30) and trading below the lower Bollinger Band (close < BB_Lower), indicating an extreme extension. We exit when the price returns to a neutral/overbought level (RSI_14 > 55 or close > BB_Upper) or after a maximum holding period of 48 hours. Tight risk controls (2% Stop Loss, 4% Take Profit) protect against extreme downtrend extension.
Strategy
{
"entry_rules": [
{
"condition": "RSI_14 < 30 && close < BB_Lower",
"direction": 1,
"signal": "RSI_BB_Baseline"
}
],
"exit_rules": [
{
"condition": "RSI_14 > 55",
"reason": "RSI_Exit"
},
{
"condition": "close > BB_Upper",
"reason": "BB_Exit"
}
],
"max_hold_bars": 48,
"position_size": 1.0,
"stop_loss_pct": 2.0,
"take_profit_pct": 4.0
}
Backtest
| Metric | Value |
|---|---|
| Total return | 49.16% |
| Sharpe | 0.751 |
| Max drawdown | 15.35% |
| Trades / win rate | 525 trades / 67.0% |
Robustness (the proof — do not skip)
- Walk-Forward: WFE = 2.01 → holds up exceptionally well out-of-sample (WFE > 1.0 indicates high out-of-sample efficiency without overfitting).
- Monte-Carlo: risk-of-ruin = 0.0%; probability of loss = 3.6%; median drawdown = 13.92% (500 iterations).
- Sensitivity: RSI exit threshold (55) is the most critical parameter.
Research trail
Tools called: load_dataset → ai_run_backtest → walk_forward → monte_carlo → optimize_exits
- What I tried: We compared this baseline with confirmational indicators (Stochastic crossovers, MACD filters), relative volatility filters (ATR/SMA ratio), and trend filters (EMA crossovers).
- What failed:
- Waiting for confirmational crossovers (like
Stoch_K > Stoch_D) introduced entry lag and ate the early bounce alpha, reducing Sharpe to 0.33 and return to 15.05%. - Volatility filters degraded performance because quiet consolidation ranges are predictably profitable for mean-reversion.
- Trend filters (EMA_12 > EMA_26) missed oversold bounce opportunities in downtrends, reducing return to 4.52%.
- Waiting for confirmational crossovers (like
- What I learned: A strict limit-like entry at the lower Bollinger Band is key. Adding lagging confirmations degrades performance.
Reproduce
Dataset: /Users/serg/projects/prod/rlx/rlxbt/data/BTCUSDT_1h_with_indicators.csv. Strategy JSON above. Re-run the same tools in the RLXBT app.
Comments (0)