One rule, five years of daily bars, nine tickers — and the honest answer, including the cases where it loses badly. Last run 11 Aug 2026.
z = (close − SMA20) / stdev20 · BUY when z < −2.0 · SELL when z ≥ 0.0 · long only, 100% notional, next-bar fill
No stops, no leverage, no position sizing, no parameter fitting — the same 20/−2/0 settings on every ticker so nothing is tuned per-symbol. Data is 5 years of daily closes (11 Aug 2021 → 11 Aug 2026).
| Ticker | CAGR | Sharpe | Max DD | Win % | Trades | Time in mkt | B&H CAGR | B&H Sharpe | B&H Max DD |
|---|---|---|---|---|---|---|---|---|---|
| XLE | 25.4% | 1.60 | −11.7% | 79% | 24 | 18% | 29.1% | 0.98 | −26.9% |
| SPY | 10.0% | 0.76 | −9.2% | 69% | 26 | 21% | 17.6% | 0.88 | −25.4% |
| IWM | 9.6% | 0.68 | −11.8% | 67% | 24 | 23% | 8.9% | 0.45 | −33.1% |
| XLU | 6.7% | 0.64 | −15.3% | 62% | 26 | 25% | 7.1% | 0.43 | −28.1% |
| GLD | 3.8% | 0.45 | −8.0% | 84% | 19 | 18% | 29.9% | 1.28 | −26.4% |
| QQQ | 6.1% | 0.42 | −18.2% | 75% | 20 | 21% | 21.8% | 0.85 | −35.6% |
| BTC-USD | 2.1% | 0.22 | −44.9% | 52% | 31 | 26% | 7.0% | 0.39 | −76.6% |
| TLT | −2.2% | −0.12 | −24.7% | 59% | 27 | 35% | −15.5% | −0.80 | −46.8% |
| ETH-USD | −9.9% | −0.05 | −61.2% | 47% | 32 | 28% | −9.9% | 0.20 | −79.4% |
Green Sharpe = the dip rule beat buy & hold on a risk-adjusted basis. Red = it lost.
The backtester that produced this table is free and takes no signup. Type a symbol, pick your lookback and z-thresholds, get the equity curve, the trade list and the current signal.
Mean-Reversion Backtester → Any crypto, stock or ETF · up to 5y daily · Sharpe / CAGR / max DD / win rate vs buy & hold · free, no signupThe single-setting table above deliberately does not fit parameters, because a fitted number on one sample is worth nothing. The useful version is a parameter sweep with the out-of-sample check attached, so you can see whether the best setting is a real ridge or a lucky spike.
The Full Optimization Report ($29, one ticker) is that: a sweep over lookback × entry z × exit z, walk-forward in-sample vs out-of-sample results for the best settings, the complete trade ledger as CSV, and a standalone runnable Python file so you can re-run and modify it yourself. Delivered by email within 24 hours — if the ticker's best parameters do not hold up out of sample, the report says so.
Get the $29 report →Secure Stripe checkout. Put the ticker you want in the checkout notes, or reply to the receipt.