Bollinger mean reversion, 18 runs: it wins most of its trades — and still loses to holding
The textbook lower-Bollinger-Band buy over 18 runs: win rates of 56–80%, profitable before costs on 15 of them, behind buy & hold on all 18.
A teardown. Every number in the results table is the tool's saved output; the reading at the end is ours and is marked as such.
2026-09-17 · textbook definition, public
How to read this: Reading a backtest result · Validation Lab: walk-forward & Monte Carlo
The claim. Buying the lower Bollinger Band is the textbook mean-reversion rule: when price closes below the band that sits two standard deviations under a 20-bar average, it is "stretched" and due to snap back to the middle. Teardown #2 tested the textbook trend rule (the golden cross); this is its mirror image, run the same way — the definition as written, nothing tuned.
What we ran. The textbook definition: long with 100% of equity when the close is below the lower Bollinger Band (20-bar simple average, 2 standard deviations); flat when the close is back at or above the middle band. No stop-loss, no take-profit, no costs modelled (the tool's cost panel re-runs the trades at 5–50 bps afterwards). Three axes, the same as teardowns #3 and #4: eight large US names on hourly bars over the two years our feed provides; the same eight on daily bars over 25 years; and the two largest crypto perpetuals on hourly bars over the ~7 months the server fetch returns. Anyone can reproduce the stock runs on the free tier from the chart's condition tab — one indicator, two conditions.
Results — 18 runs.
| Run | Trades | Win rate | Max DD | Strategy return | Buy & hold | Verdict flag | Cost panel | Break-even cost |
|---|---|---|---|---|---|---|---|---|
| AAPL · 1h · 2024–2026 | 62 | 59.7% | 22.09% | −19.13% | +53.59% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | — (loses at 0) |
| SPY · 1h · 2024–2026 | 63 | 71.4% | 7.59% | +14.13% | +33.24% | UNDERPERFORMS_HOLD · Read with caution | Thin margin over costs | 10.5 bps |
| QQQ · 1h · 2024–2026 | 64 | 70.3% | 10.24% | +2.71% | +63.16% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | 2.1 bps |
| NVDA · 1h · 2024–2026 | 69 | 66.7% | 18.26% | +27.55% | +81.66% | UNDERPERFORMS_HOLD · Read with caution | Thin margin over costs | 17.6 bps |
| MSFT · 1h · 2024–2026 | 69 | 69.6% | 13.60% | +6.71% | +12.03% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | 4.7 bps |
| AMZN · 1h · 2024–2026 | 69 | 71.0% | 17.17% | +24.25% | +30.35% | UNDERPERFORMS_HOLD · Read with caution | Thin margin over costs | 15.8 bps |
| JPM · 1h · 2024–2026 | 61 | 80.3% | 19.96% | +40.28% | +67.07% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 27.8 bps |
| XOM · 1h · 2024–2026 | 58 | 60.3% | 10.87% | +10.29% | +43.40% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | 8.4 bps |
| AAPL · 1d · 2001–2026 | 116 | 63.8% | 37.90% | +349.64% | +112,696.60% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 65.1 bps |
| SPY · 1d · 2001–2026 | 136 | 74.3% | 28.73% | +160.42% | +652.13% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 35.3 bps |
| QQQ · 1d · 2001–2026 | 124 | 71.0% | 33.21% | +70.24% | +2,279.40% | UNDERPERFORMS_HOLD · Read with caution | Thin margin over costs | 21.5 bps |
| NVDA · 1d · 2001–2026 | 131 | 55.7% | 71.87% | +227.53% | +84,768.00% | UNDERPERFORMS_HOLD · SEVERE_DRAWDOWN · Likely unreliable | Survives realistic costs | 45.3 bps |
| MSFT · 1d · 2001–2026 | 114 | 66.7% | 36.32% | +282.09% | +1,811.63% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 59.0 bps |
| AMZN · 1d · 2001–2026 | 121 | 61.2% | 43.16% | +227.12% | +66,500.54% | UNDERPERFORMS_HOLD · HIGH_DRAWDOWN · Read with caution | Survives realistic costs | 49.0 bps |
| JPM · 1d · 2001–2026 | 141 | 65.2% | 38.66% | +201.28% | +981.92% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 39.2 bps |
| XOM · 1d · 2001–2026 | 133 | 67.7% | 52.19% | +94.18% | +372.17% | UNDERPERFORMS_HOLD · HIGH_DRAWDOWN · Read with caution | Thin margin over costs | 25.0 bps |
| BTC/USDT · 1h · Feb–Sep 2026 | 94 | 61.7% | 23.20% | −14.54% | +12.23% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | — (loses at 0) |
| ETH/USDT · 1h · Feb–Sep 2026 | 89 | 66.3% | 23.67% | −6.29% | +23.79% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | — (loses at 0) |
All 18 carry the tool's UNDERPERFORMS_HOLD and NO_COSTS flags; AMZN and XOM on daily bars also carry HIGH_DRAWDOWN, and NVDA on daily bars carries SEVERE_DRAWDOWN — the only run of the 18 whose verdict headline is Likely unreliable rather than Read with caution. None carries a sample-size flag. Six runs ended with a position still open at the last bar; the tool shows that leg separately and it is not in the return (SPY 1h (+0.37%), QQQ 1h (+0.40%), AMZN 1h (-1.46%), SPY 1d (+0.00%), AMZN 1d (-0.99%), JPM 1d (+0.00%)).
The tool's own words.
- AAPL 1h: “Underperforms buy & hold by 72.72% — it lost to doing nothing (hold: 53.59%).” · “Dies at realistic costs — Rebuilt from this run's own trades with commission stripped, it still compounds to a loss (−19.13%) — no fee level can make it profitable.”
- JPM 1h: “Survives realistic costs — Profit holds up to 27.8 bps of round-trip cost.”
- SPY 1d: “Underperforms buy & hold by 491.7% — it lost to doing nothing (hold: 652.13%).”
- NVDA 1d: “Max drawdown 71.87% — likely un-survivable in live trading.”
- BTC/USDT 1h: “Underperforms buy & hold by 26.77% — it lost to doing nothing (hold: 12.23%).”
- Every page: “No trading costs modeled — real fills will be worse.”
Our reading (not the tool's).
- The rule does what the textbook says, and it is not enough. Win rates of 55.7–80.3% — the highest of any teardown so far — and 15 of 18 runs profitable before costs. Mean reversion "works" in the sense that most dips below the band do come back to the average. It still loses to holding on all 18, because the rule is in cash for most of every uptrend: it only buys after a sharp drop and sells as soon as price is back at the mean.
- Hourly bars: the profit is real and the fee eats it. On two years of hourly bars, 7 of 8 names are positive (-19.1% to +40.3% against +12.0% to +81.7% for holding), but the cost panel kills 4 of them at a 10 bps round trip (AAPL, QQQ, MSFT, XOM), leaves 3 on a thin margin (SPY, NVDA, AMZN) and clears only JPM. AAPL loses even before costs. Sixty-odd small wins a name, and each one is a fee-sized win.
- Daily bars: it survives costs, and the missing stop shows. On 25 years of daily bars all 8 names are positive and 6 of 8 survive realistic costs (break-even 21.5–65.1 bps; QQQ and XOM are on a thin margin). The price is the drawdown: 28.7% to 71.9% with no stop, because "below the lower band" in 2008 or March 2020 is not the bottom, it is the start. NVDA's 71.9% is the tool's first SEVERE_DRAWDOWN flag in this series.
- Crypto is the harshest test again. On BTC and ETH the rule loses outright before any cost (-14.5% and -6.3% against +12.2% and +23.8% for holding) while still winning 61.7% and 66.3% of its trades — the losers are the few dips that kept going.
- Paired with teardown #2. The golden cross (trend) survived costs on 8 of 8 daily runs and lost to holding on 7; the lower-band buy (mean reversion) survives costs on 6 of 8 daily runs and loses to holding on 8. Two opposite textbook rules, one shared result: on these names and these 25 years, neither beat doing nothing.
Honest limits. Hourly stock history is capped at two years by our feed (QQQ's hourly window happens to reach back to August 2024 because our cache holds more of it; the other seven start 2024-09-17), crypto at 5,000 bars by the server fetch; the 25-year daily runs are one regime sequence; long-only; entries and exits fill at the close of the bar that triggers them; no slippage or taxes; the six runs that ended in an open position show that leg separately and it is not in the return. A stop-loss would change the drawdown numbers and the win rates together — this is the rule as written, not the best version of it.
Receipts
18 share pages, open without an account (each shows the tested window, bar count, verdict and cost panel):
- AAPL 1h: https://stlab.app/v/485befa3-6b80-45ef-905b-7ff0e35ebc11
- SPY 1h: https://stlab.app/v/d1a9f46f-5f28-4405-8a40-b2ed04feb284
- QQQ 1h: https://stlab.app/v/62cc59e4-83b2-40bf-b2e6-90ce0f59f58f
- NVDA 1h: https://stlab.app/v/e25c83f7-ab1b-46b5-9b3e-782e557be435
- MSFT 1h: https://stlab.app/v/d64784c6-0a65-488c-a091-62f3dec5ca76
- AMZN 1h: https://stlab.app/v/38e8a09c-b604-475e-b259-f04f541d027a
- JPM 1h: https://stlab.app/v/572bae14-cf6c-44cb-b0c7-638ffcfa9da1
- XOM 1h: https://stlab.app/v/8915bd15-fe7e-4589-b6b5-b17166f9052f
- AAPL 1d: https://stlab.app/v/a14e7774-15e1-49f9-a544-aa153ae0ac19
- SPY 1d: https://stlab.app/v/77225650-de51-44e5-84d8-ee3c43bb6ee9
- QQQ 1d: https://stlab.app/v/a33ebbc0-a1e3-4ebe-8dd1-7d2eb7a3399f
- NVDA 1d: https://stlab.app/v/46f4f326-082c-4e30-ac48-d39f55bdda72
- MSFT 1d: https://stlab.app/v/6dc6c20a-f465-450d-8e50-d1a4e5d07700
- AMZN 1d: https://stlab.app/v/9516cb67-1ea3-424f-be13-fc2d751d67b9
- JPM 1d: https://stlab.app/v/653040a2-df93-4d7a-9953-3e846ba9136e
- XOM 1d: https://stlab.app/v/ff30bdb4-2b9a-41dc-967d-b09ae7b1f115
- BTC/USDT 1h: https://stlab.app/v/eef66dd3-6a57-484b-a7ed-14fed3dcf6c6
- ETH/USDT 1h: https://stlab.app/v/f7cc0d01-dad6-44ad-8480-18d29aa38833
Simulated results on historical data — research output, not financial advice. Past performance does not guarantee future results.
More teardowns
- Pulse Trend (MACD + RSI), 18 runs: it wins one trade in three, stays profitable — and still loses to holding — Our own MACD + RSI library entry over 18 runs: win rates of 29–46%, profitable before costs on 17 of them, behind buy & hold on all 18.
- Our own RSI bounce, 18 runs: it wins more often than it loses, and loses to holding every time — Our own RSI(14) oversold bounce over 18 runs on hourly, daily and crypto bars: profitable on 15 of them, behind buy & hold on all 18, and no sample-size flag.
- Our own EMA cross, 18 runs: a real edge, and a thin one — Our own EMA(9)/EMA(21) cross over 18 runs on hourly, daily and crypto bars: profitable before costs on 16 of them, behind buy & hold on all 18.
- The golden cross, 25 years, 8 names: it works — and still loses to holding — The textbook SMA 50/200 golden cross, untuned, on 8 large US names over 25 years: all 8 survive realistic costs, and 7 of 8 still lose to buy & hold.
- A 93%-win-rate strategy, run over 25 years: what survived — A KNN SuperTrend strategy posted with a 93% win rate, ported line-by-line and run 13 times on up to 25 years of daily and hourly bars. None beat buy & hold.