Mean reversion is the oldest counter-trend idea in trading: price stretched far from its recent average tends to snap back. Its most-quoted implementation is RSI(14) with the classic 30/70 bands — buy oversold, sell overbought. It is also one of the most carelessly tested ideas on the internet: most write-ups never say whether they bought every candle below 30 or waited for the oscillator to turn back up, rarely include costs, and never publish the months that hurt.
We pinned the strict reading and ran it as a machine would: long when RSI(14) crosses back UP through 30, short when it crosses back DOWN through 70, on 15-minute candles built from 12 months of real Binance 1-minute data on BTC and ETH — around the clock, both directions, 1.5×ATR stop, 1.5R target, 1% risk, 0.05% commission per side, the same deterministic engine that powers Secuora’s AI backtester. The headline is honest: the unfiltered rule lost money on both symbols, and most of the damage was not the pattern — it was the fee line on a very large trade count. That finding is the research. Full numbers below.
Verified Result
No edge: net negative after costs across 2 markets.
| Market | TF | Trades | Win | PF | Max DD | Net |
|---|---|---|---|---|---|---|
| ETH | 15m | 1,336 | 40.6% | 0.75 | 88.8% | -87.3% |
| BTC | 15m | 1,338 | 38.4% | 0.54 | 98.9% | -98.9% |
How the SVS 23 breaks down ▾
12 months of real 1-minute data, fees on (0.05%/side), $10k start, 1% risk. How the score works →
The exact rules we tested
- Compute RSI(14) on 15-minute candles.
- Long when RSI crosses back UP through 30 — the candle where it leaves oversold, not every candle below the band.
- Short when RSI crosses back DOWN through 70 — the mirror exit from overbought.
- Stop 1.5×ATR(14) from entry; target 1.5R.
- No session filter — crypto trades 24/7, so every qualifying cross is taken.
- Risk 1% of equity per trade; 0.05% commission per side; 10× max notional leverage.
Results
Binance spot 1-minute klines (data-api.binance.vision), aggregated per strategy timeframe · starting balance $10,000 · risk 1%/trade · Commission 0.05% per side; no spread/slippage modeled (BTC/ETH spot spreads are sub-basis-point); position size capped at 10× notional leverage. Generated 2026-06-12 by the Secuora ai-strategy deterministic runner (same engine as the in-app AI backtester).
| Month | Trades | Win rate | Net P&L |
|---|---|---|---|
| 2025-06 | 122 | 41% | −$3,621 |
| 2025-07 | 119 | 38% | −$2,502 |
| 2025-08 | 115 | 39% | −$1,362 |
| 2025-09 | 111 | 41% | −$872 |
| 2025-10 | 108 | 36% | −$522 |
| 2025-11 | 110 | 35% | −$315 |
| 2025-12 | 100 | 38% | −$203 |
| 2026-01 | 92 | 39% | −$168 |
| 2026-02 | 103 | 36% | −$104 |
| 2026-03 | 125 | 42% | −$59 |
| 2026-04 | 120 | 40% | −$77 |
| 2026-05 | 113 | 35% | −$80 |
| Month | Trades | Win rate | Net P&L |
|---|---|---|---|
| 2025-06 | 123 | 38% | −$2,385 |
| 2025-07 | 117 | 34% | −$2,290 |
| 2025-08 | 120 | 41% | −$709 |
| 2025-09 | 101 | 44% | −$497 |
| 2025-10 | 126 | 43% | −$445 |
| 2025-11 | 127 | 42% | −$404 |
| 2025-12 | 93 | 45% | −$145 |
| 2026-01 | 100 | 34% | −$908 |
| 2026-02 | 99 | 36% | −$434 |
| 2026-03 | 124 | 44% | −$158 |
| 2026-04 | 105 | 42% | −$246 |
| 2026-05 | 101 | 46% | −$115 |
Assumptions (how loose terms were pinned down)
- Long when RSI(14) crosses back UP through 30; short when it crosses back DOWN through 70 (cross semantics, not level-touch)
- Stop 1.5×ATR(14); target 1.5R; no session filter (24/7)
Cross semantics vs level-touch: the definition decides the result
"Buy when RSI is below 30" and "buy when RSI crosses back up through 30" sound like the same strategy and are not even close. The level-touch reading re-signals on every oversold candle, stacking entries all the way down a crash; the cross reading fires once per excursion, at the moment the oscillator actually turns. Trade counts differ by multiples, entry prices differ, drawdowns differ — and the "RSI win rate" you read somewhere could be either one. Ours is the cross reading, pinned in the rules above. Compare nothing to this page unless the other test pins its reading too.
The second decider is regime, and the monthly table shows the regime dependence plainly: not a single month finished green on either symbol — the losses merely shrink in quieter months and deepen in trending ones, when RSI stays pinned and every cross-back is an early knife-catch. But the deepest finding here is about frequency. Taken unfiltered around the clock, the rule fired well over a thousand times per symbol in a year with per-trade expectancy near zero before costs — and 0.05% per side multiplied by that trade count compounded into most of the net loss. Frequency without edge is not neutral; it is a fee subscription.
How to backtest mean reversion on Secuora
RSI threshold is a built-in primitive of the AI backtester, so this strategy automates end to end — and the replay terminal covers the discretionary half.
- Open /backtest/ai and describe the rule in plain English: "long when RSI(14) crosses back up through 30, short when it crosses back down through 70, 1.5×ATR stop, 1.5R target, 15-minute candles." It compiles to the same engine that produced this page.
- Run it on BTC and ETH with costs on and confirm you reproduce the shape of the result above — reproduction is what separates research from content.
- Change one variable per run: add a session filter, require a higher-timeframe trend to agree, or widen the target — and watch the trade count and the fee line move together.
- Open /backtest/demo (free, no sign-up), add the RSI indicator, and replay a trending month bar by bar to feel why the cross-back entries kept catching knives.
- Journal the variants you would actually trade — rules, confluences, screenshots — so the version you risk money on is the version you tested.
Methodology, in one paragraph
Data: Binance spot 1-minute klines (data-api.binance.vision), aggregated per strategy timeframe, June 1, 2025 – June 1, 2026 (12 months). Execution: Secuora’s deterministic strategy runner (the same engine behind the in-app AI backtester) — single position at a time, entries at the close of the signal candle, commission 0.05% per side; no spread/slippage modeled (btc/eth spot spreads are sub-basis-point); position size capped at 10× notional leverage, starting balance $10,000, 1% risk per trade. Swings are confirmed fractals with no look-ahead. These are mechanical results: no discretion, every signal taken. Past performance does not predict future results; this is research, not financial advice.
Frequently asked questions
What is mean reversion trading?
Mean reversion bets that price stretched far from its recent average will snap back toward it — the opposite of trend-following. Oscillators like RSI quantify the stretch: readings under 30 are called oversold, over 70 overbought. The tradeable question is never whether price eventually reverts; it is whether a specific entry, stop and target around those readings carries positive expectancy after costs.
What win rate do mean reversion strategies have?
For this exact rule — RSI(14) cross-backs through 30/70 on 15-minute BTC and ETH with a 1.5R target — the real win rate is in the results table above. A 1.5R target needs roughly 40% winners just to break even before costs, and the unfiltered rule landed around that line and lost once commission was charged. Treat any quoted mean-reversion win rate that comes without a pinned rule set and a costs statement as marketing.
Does RSI mean reversion work on crypto?
Not in this raw form. Run unfiltered around the clock on 15-minute BTC and ETH, the 30/70 cross lost money on both symbols over 12 months, and most of the net loss was the commission on a very large trade count. If a tradeable version exists, it lives in taking far fewer, better-located signals — regime filters, higher-timeframe levels, session selection — which is exactly what this unfiltered baseline lets you test against.
How do I backtest an RSI strategy myself?
Two ways on Secuora: describe the rule in plain English at /backtest/ai — RSI threshold is a built-in primitive, and it compiles to the same deterministic engine that produced this research — or open the free replay terminal at /backtest/demo, add the RSI indicator, and trade the signals bar by bar with simulated stop-loss and take-profit orders.
