← All graded classics

Bollinger Band Breakout

The exact opposite read of the same bands: a close outside means GO, not fade.

F

The claim

A close beyond a 2-standard-deviation band signals a volatility expansion worth riding, not fading. Same indicator as the reversion version, opposite conclusion — they can't both be right.

Where it comes from

Volatility-breakout trading traces to the futures world (Turtle-era channel breakouts); using Bollinger closes as the trigger is the chart-native variant John Bollinger actually leans toward.

The exact rule we graded

Long while %B(20, 2σ) > 1, short while %B < 0, on 1-hour candles. Exits: 2.5-ATR trailing stop, 100-bar time exit.

The honest verdict

FAILS the gate
Net expectancy
+3.8bp
OOS trades
6,382
Win rate
36.8%
Reward:risk
1.79
  • OOS net expectancy > 0
  • Clears the cost hurdle
  • Robust, not lucky
  • Survivable drawdown
  • Not overfit
Per-asset OOS expectancy
DOGE
+24.3bp
AVAX
+11.9bp
LINK
+6.5bp
ETH
+2.3bp
XRP
+0.9bp
BTC
-0.3bp
BNB
-4.9bp
SOL
-8.9bp
Permanent verification record →Verified — run on our engine + data

Live forward test

since 2026-07-11 — win or lose

The backtest above is history. Since publication, this exact spec also runs in our nightly forward-test harness (the same one behind /forward-tests): only trades entered after publication count, open positions are never force-closed, and the record publishes either way.

No closed forward trades recorded yet — the record accrues nightly as trades complete their full exit windows.

Honest port notes

  • Deliberately the mirror image of our Bollinger Reversion entry, on identical data and costs — the pair is a controlled experiment on which folklore survives.
The exact spec, as graded (JSON)
{
  "name": "Bollinger Band Breakout",
  "universe": [
    "BTC/USDT:USDT",
    "ETH/USDT:USDT",
    "SOL/USDT:USDT",
    "BNB/USDT:USDT",
    "XRP/USDT:USDT",
    "DOGE/USDT:USDT",
    "LINK/USDT:USDT",
    "AVAX/USDT:USDT"
  ],
  "risk": {
    "risk_per_trade_pct": 1,
    "leverage_cap": 3,
    "max_daily_loss_pct": 5,
    "max_dd_halt_pct": 25
  },
  "sleeves": [
    {
      "name": "main",
      "timeframe": "1h",
      "entry": {
        "type": "rule",
        "logic": "all",
        "long": [
          {
            "indicator": "bb_pband",
            "period": 20,
            "op": ">",
            "value": 1
          }
        ],
        "short": [
          {
            "indicator": "bb_pband",
            "period": 20,
            "op": "<",
            "value": 0
          }
        ]
      },
      "exit": {
        "trail_atr": 2.5,
        "time_exit_bars": 100
      }
    }
  ]
}

Every strategy graded on identical terms: 1-hour candles, 8 liquid USDT perpetuals (BTC, ETH, SOL, BNB, XRP, DOGE, LINK, AVAX), ~6 years of data with a chronological train/test split, real cost hurdle, 1% risk-per-trade sizing, 3x leverage cap. All numbers are out-of-sample (test window only).

Run YOUR version of this strategy
Different thresholds, timeframe, or filter? Paste your exact rules or code and see if your variant survives the same gates.
Grade it free →

A Grade is a historical, out-of-sample statistical measurement — not investment advice, a prediction, or a guarantee. Most strategies fail; a passing grade can stop working as markets change. Risk disclosure