Our own RSI bounce, 18 runs: it wins more often than it loses, and loses to holding every time
A teardown of a strategy from our own library. 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-09 · our own library entry, run as published
The claim. "RSI Oversold Bounce" sits in this site's official library with the description "Buys RSI(14) dips below 30 and exits on recovery above 60. The classic mean-reversion starter, kept honest with a tight stop." Its published card shows AAPL on 1-hour bars over six months: 9 trades, +9.56% against +21.05% for holding, and the tool's verdict on it has always been Likely unreliable — nine trades is not a sample. Teardown #3 tested our trend-following seed; this one tests its mirror image, the mean-reversion seed, and the first question is what happens to "unreliable" once the rule gets enough trades.
What we ran. The library entry's code, unchanged: long with 100% of equity when RSI(14) closes below 30, flat when it closes above 60, 2% stop-loss, 6% take-profit, no costs modelled (the cost panel re-runs the trades at 5–50 bps afterwards). Three axes: the published timeframe on eight large US names over the two years our feed provides for hourly bars; the same names 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 library card.
Results — 18 runs.
| Run | Trades | Win rate | Max DD | Strategy return | Buy & hold | Verdict flag | Cost panel | Break-even cost |
|---|---|---|---|---|---|---|---|---|
| AAPL · 1h · 2024–2026 | 39 | 53.8% | 13.94% | +26.00% | +46.20% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 29.7 bps |
| SPY · 1h · 2024–2026 | 30 | 80.0% | 5.75% | +31.54% | +41.40% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 45.9 bps |
| QQQ · 1h · 2024–2026 | 38 | 60.5% | 9.85% | +27.44% | +51.08% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 32.0 bps |
| NVDA · 1h · 2024–2026 | 42 | 47.6% | 19.44% | +55.71% | +119.29% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 52.9 bps |
| MSFT · 1h · 2024–2026 | 45 | 48.9% | 14.85% | +11.26% | +23.59% | UNDERPERFORMS_HOLD · Read with caution | Thin margin over costs | 11.9 bps |
| AMZN · 1h · 2024–2026 | 47 | 42.6% | 18.47% | −9.03% | +48.30% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | — (loses at 0) |
| JPM · 1h · 2024–2026 | 33 | 63.6% | 12.19% | +27.08% | +65.92% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 36.4 bps |
| XOM · 1h · 2024–2026 | 37 | 48.6% | 21.97% | −5.29% | +39.75% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | — (loses at 0) |
| AAPL · 1d · 2001–2026 | 57 | 43.9% | 43.54% | +43.82% | +105,363.87% | UNDERPERFORMS_HOLD · HIGH_DRAWDOWN · Read with caution | Survives realistic costs | 31.9 bps |
| SPY · 1d · 2001–2026 | 49 | 40.8% | 25.88% | +27.06% | +638.44% | UNDERPERFORMS_HOLD · Read with caution | Thin margin over costs | 24.5 bps |
| QQQ · 1d · 2001–2026 | 44 | 59.1% | 19.35% | +262.29% | +2,204.36% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 148.2 bps |
| NVDA · 1d · 2001–2026 | 88 | 40.9% | 45.18% | +48.52% | +81,227.45% | UNDERPERFORMS_HOLD · HIGH_DRAWDOWN · Read with caution | Thin margin over costs | 22.4 bps |
| MSFT · 1d · 2001–2026 | 56 | 48.2% | 14.22% | +217.44% | +1,788.87% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 104.0 bps |
| AMZN · 1d · 2001–2026 | 55 | 45.5% | 16.49% | +161.06% | +68,928.04% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 87.9 bps |
| JPM · 1d · 2001–2026 | 71 | 43.7% | 30.71% | +89.98% | +917.42% | UNDERPERFORMS_HOLD · Read with caution | Survives realistic costs | 45.3 bps |
| XOM · 1d · 2001–2026 | 67 | 41.8% | 48.50% | +43.25% | +297.19% | UNDERPERFORMS_HOLD · HIGH_DRAWDOWN · Read with caution | Survives realistic costs | 26.9 bps |
| BTC/USDT · 1h · Feb–Sep 2026 | 43 | 55.8% | 22.60% | −4.59% | +19.12% | UNDERPERFORMS_HOLD · Read with caution | Dies at realistic costs | — (loses at 0) |
| ETH/USDT · 1h · Feb–Sep 2026 | 50 | 58.0% | 15.40% | +21.18% | +28.16% | UNDERPERFORMS_HOLD · Read with caution | Thin margin over costs | 19.2 bps |
All 18 carry the tool's UNDERPERFORMS_HOLD and NO_COSTS flags; AAPL, NVDA and XOM on daily bars also carry HIGH_DRAWDOWN. None carries a sample-size flag, and none ended with an open position at the last bar. The verdict headline is Read with caution on every one of the 18 — the card's Likely unreliable does not survive contact with a real sample.
The tool's own words.
- SPY 1h: “Underperforms buy & hold by 9.85% — it lost to doing nothing (hold: 41.4%).” · “Survives realistic costs — Profit holds up to 45.9 bps of round-trip cost.”
- AMZN 1h: “Dies at realistic costs — Rebuilt from this run's own trades with commission stripped, it still compounds to a loss (−9.0%) — no fee level can make it profitable.”
- QQQ 1d: “Underperforms buy & hold by 1942.07% — it lost to doing nothing (hold: 2204.36%).” · “Profit holds up to 148.2 bps of round-trip cost.”
- AAPL 1d: “Max drawdown 43.54% — could you actually hold through that?”
- Every page: “No trading costs modeled — real fills will be worse.”
Our reading (not the tool's).
- "Unreliable" was about the sample, not the rule. Nine trades on the card; 30 to 47 per name over two years of hourly bars, 44 to 88 over 25 years of daily bars. With a sample, the rule turns out to be what its description says — a bounce that wins more often than it loses (15 of 18 runs profitable, win rates of 41–80%) and, on 11 of 18 runs, one that keeps its profit past a 25 bps round trip. That is a better-behaved rule than the two crossover strategies we tested before it. It still loses to holding on all 18.
- Why it loses: it is barely ever in the market. By construction the strategy owns nothing until RSI(14) prints below 30, and sells on the first print above 60 or at ±2%/6%, whichever comes first. On names that spent 25 years mostly rising, that means sitting in cash through most of the rise; the gap to holding is not a fee or a bad exit, it is absence. SPY on hourly bars is the cleanest picture: an 80% win rate, a 2.95 profit factor, a 5.75% worst drawdown — and +31.5% against +41.4% for doing nothing.
- A 2% stop did not cap the drawdown. AAPL, NVDA and XOM on daily bars show 43–49% peak-to-trough with a 2% stop on every trade. The stop fills at the close of the bar that crosses it, so a gap day or a crash session costs the whole bar, and a run of stopped-out entries at 100% of equity compounds. Which of the two did the damage on each name we can't tell from the summary numbers; that all three carry the tool's HIGH_DRAWDOWN flag is the point.
- Costs decide the edges, not the middle. Three runs lose before any fee (AMZN, XOM on hourly bars; BTC) and four hold on by 12–25 bps (MSFT hourly; SPY and NVDA daily; ETH). The rest survive 27–148 bps. On crypto perpetuals the spread is the whole story: ETH survives 19 bps, BTC loses at zero — if you take this rule to perpetuals, read the cost panel before anything else.
- What we did to our own catalog. Nothing. The entry keeps its code, its six-month card and its Likely unreliable label, because on the card's own sample that label is correct. This page is what the label was asking for.
Honest limits. Hourly stock history is capped at two years by our feed (this window starts Sep 9, 2024, four days later than teardown #3's, because the feed's window rolls forward); crypto at 5,000 bars by the server fetch; the 25-year daily runs are one regime sequence; long-only; stops and targets fill at the close of the bar that crosses them; no slippage or taxes; RSI warm-up seeds can differ from other implementations. No run ended in an open position, so the returns above are fully realized.
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/de06672f-8139-4ff5-af73-50a32831639d
- SPY 1h: https://stlab.app/v/4f005738-5eb5-4dc3-8cff-ba6139cdd9c2
- QQQ 1h: https://stlab.app/v/e2f94886-db1c-48af-af1f-6d3c2f4cec41
- NVDA 1h: https://stlab.app/v/e8ff0a88-9f2b-46a6-afdc-19d52f6bd002
- MSFT 1h: https://stlab.app/v/12b96c27-440a-4622-b6f6-3f239ef57ba8
- AMZN 1h: https://stlab.app/v/0890627f-6198-490f-bd1a-b3e6e9831443
- JPM 1h: https://stlab.app/v/ee1087bc-edfe-4dc1-b0b9-a971756f5e3b
- XOM 1h: https://stlab.app/v/53d5d671-459f-414c-b0d0-b9e1283f6c7c
- AAPL 1d: https://stlab.app/v/58c1b027-6fbe-4da0-b53e-58f85e4f5b36
- SPY 1d: https://stlab.app/v/aed50b8a-1082-4e44-b61c-f9f9362294e7
- QQQ 1d: https://stlab.app/v/2801b384-c1db-443a-aea6-9ccc54c1ef37
- NVDA 1d: https://stlab.app/v/2293b9e6-52fb-4d04-b9c7-3ee9bec0ed5c
- MSFT 1d: https://stlab.app/v/3293d4d6-27ee-4587-b956-0d8ab0e52578
- AMZN 1d: https://stlab.app/v/d364aaa1-98a6-436d-bfc0-cf2402867486
- JPM 1d: https://stlab.app/v/ff7b3b8f-bf8d-487a-b3be-e967442134bc
- XOM 1d: https://stlab.app/v/f87ad1c5-eafa-4314-95da-4ff95209c558
- BTC/USDT 1h: https://stlab.app/v/4f9ca3f6-9ff9-414f-aac0-433d489c42a9
- ETH/USDT 1h: https://stlab.app/v/59522fd7-b4d9-4e2e-aa91-c3410629ab74
The library entry itself: https://stlab.app/library/b2f70433-d483-4f00-abf9-2d17a01e7f7a
Simulated results on historical data — research output, not financial advice. Past performance does not guarantee future results.