Bollinger Reversion (20, 2)
Positive risk-adjusted return in 10 of 18 cells — strongest on SPX500 · 1H (Sharpe 0.71); 8 cells lose after the 0.05% per-side fee. Trails buy-and-hold by 490.7pp on average.
§ Verdict rationale
Composite Sharpe 0.14 across 18 cells — expectancy does not survive the 0.05% per-side fee. Best cell: SPX500 1H (Sharpe 0.71). The account is wiped out entirely in 2 of 18 cells — the fee drag alone, before any question of signal quality.
§ Alpha score breakdown
alpha = edge (0-40: clamp(compositeSharpe/2,0,1)*40) + stability (0-25: positiveCells/18*25) + flaw penalty (0 to -25: static findings, 0 across v1 catalog) + reproduction (0-10: engine oracle parity vs pine2py, 251/257 scripts = 9)
§ Equity vs buy-and-hold — fee-adjusted, per cell
§ All 18 cells — including the ugly ones
| Market · TF | Sharpe | Return | vs B&H | Max DD | Win | Trades |
|---|---|---|---|---|---|---|
| BTCUSD 1H | -1.67 | -100.0% | -1509.0pp | -100.0% | 70% | 1489 |
| BTCUSD 4H | -0.04 | -52.3% | -1447.0pp | -71.4% | 67% | 340 |
| BTCUSD 1D | 0.08 | -27.6% | -1430.7pp | -80.5% | 61% | 51 |
| ETHUSD 1H | -1.67 | -100.0% | -635.8pp | -100.0% | 68% | 1479 |
| ETHUSD 4H | -0.26 | -91.8% | -614.4pp | -93.2% | 68% | 342 |
| ETHUSD 1D | -0.10 | -72.2% | -603.3pp | -81.9% | 64% | 55 |
| SPX500 1H | 0.71 | +16.5% | -56.2pp | -11.1% | 76% | 94 |
| SPX500 4H | 0.23 | +5.4% | -67.4pp | -15.6% | 71% | 28 |
| SPX500 1D | 0.46 | +99.8% | -489.6pp | -28.7% | 82% | 74 |
| QQQ 1H | 0.20 | +4.8% | -88.2pp | -14.7% | 66% | 88 |
| QQQ 4H | 0.39 | +13.1% | -79.6pp | -16.8% | 68% | 31 |
| QQQ 1D | 0.31 | +62.9% | -1370.7pp | -22.4% | 74% | 68 |
| GOLD 1H | 0.51 | +16.2% | -107.0pp | -15.5% | 79% | 71 |
| GOLD 4H | 0.46 | +11.3% | -111.8pp | -13.8% | 76% | 21 |
| GOLD 1D | 0.39 | +51.7% | -168.4pp | -19.0% | 73% | 69 |
| EURUSD 1H | -4.36 | -33.2% | -42.3pp | -33.2% | 63% | 368 |
| EURUSD 4H | -0.44 | -4.3% | -12.6pp | -7.7% | 70% | 84 |
| EURUSD 1D | -0.24 | -16.1% | +1.7pp | -24.2% | 61% | 72 |
10 of 18 cells positive · best SPX500 · 1H · cells are not equal length — the composite is a median
§ The exact source that ran — Pine v5
//@version=5strategy("Bollinger Reversion (20, 2)", initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)[mid, upper, lower] = ta.bb(close, 20, 2)longSig = ta.crossover(close, lower)exitSig = ta.crossover(close, mid)if longSig strategy.entry("L", strategy.long)if exitSig strategy.close("L")plot(strategy.equity, "equity")plot(strategy.position_size, "pos")plot(strategy.closedtrades, "closed")plot(strategy.wintrades, "wins")plot(strategy.grossprofit, "gp")plot(strategy.grossloss, "gl")This source was executed verbatim by the wavealgo JS engine — there is no port step to drift. The engine is oracle-verified bar-by-bar (1e-9 tolerance) against an independent Python implementation on 251/257 corpus scripts.
§ Flaw checklist
Verdict rules: pass: composite Sharpe >= 0.9 and >= 12/18 cells positive · cond: composite Sharpe > 0 and best cell Sharpe >= 0.9 · fail: otherwise · rep: static repaint/look-ahead finding (none in the authored v1 catalog: confirmed-bar signals, next-bar-open fills)
§ What the numbers mean
- Sharpe ratio
- Risk-adjusted return: mean daily return divided by its standard deviation, annualized ×√252. The composite figure is the mean of the 18 cell Sharpes — one bad market drags it honestly.
- Max drawdown
- The worst peak-to-trough equity loss over the window, measured on the fee-adjusted curve. What you would have sat through, not what you would have ended with.
- Profit factor (PF)
- Gross profit divided by gross loss, with fees charged to the loss side. Above 1.0 means gross gains exceeded gross losses; 1.0–1.2 is usually noise.
- Win rate
- Share of closed trades that closed profitable. A high win rate with a profit factor near 1 means many small wins and a few large losses — common in mean-reversion.
- vs buy-and-hold
- Strategy total return minus the return of simply holding the asset over the same window — the benchmark any active strategy must beat to justify existing.
- Alpha score
- The desk’s 0–100 composite: out-of-sample edge (0–40), regime stability across cells (0–25), flaw penalty (0 to −25), reproduction accuracy (0–10). The exact formula ships with the data.
Bring your own. We grade it the same.
Engine: pine2js (next-bar-open fills, TV rule) · scored UTC 2026-08-08 04:53 · deterministic rerun — same data, same numbers. Backtested results are measurements of the past, not investment advice; nothing here is a recommendation to trade. wavealgo is operated by Streamize LLC.