Auditing 40,000 backtests, one strategy was the worst by a clear margin: our Bollinger Band Squeeze. On crypto — its best asset class — it beat Avg Buy & Hold on just 11 of 32 pairs, a median of about −9 percentage points, and run-weighted closer to −21. Worse than a coin flip.
Most platforms would quietly leave that on the menu or quietly delete it. We did neither. We asked: is the concept bad, or is our implementation bad?
Why our version was bad
Our bb_squeeze was a dated, naive reading:
- a fixed absolute threshold for how "tight" the bands are, which doesn't adapt to crypto's volatility,
- entry on the breakout above the upper band (you buy the spike),
- exit at the middle band (you sell into every normal pullback).
That structure systematically buys highs and sells into noise. A median of −21 points — worse than random — is exactly that signature.
The rebuild
We implemented the modern standard, John Carter's TTM Squeeze:
- Bollinger Bands inside the Keltner Channels define the squeeze,
- a momentum oscillator sets the direction,
- you ride the trend and exit when momentum dies — not at the middle band.
Same concept, current logic. Result across eight crypto pairs (pre-cost):
| Variant | Median ΔCAGR vs B&H | beats B&H |
|---|---|---|
| v1 (old) | −15.9 pp | 2 of 8 |
| TTM rebuild | +8.6 pp | 6 of 8 |
A swing of about 25 points from correct logic alone. The squeeze concept works on crypto — our old code was the bottleneck, not the idea.
The twist: momentum was the edge, not the squeeze
We also tested pure momentum with no squeeze gate. It did even better: +12.8 pp.
So the squeeze wasn't the source of the edge. It just halved the trade count (33 vs 69). On crypto the edge was momentum all along — the squeeze is a cost/selectivity filter, not an alpha source.
Why we're cutting it anyway
Here's the discipline. The repaired +8.6 still sits below the strategies we already run: a simple EMA cross beats Buy & Hold on crypto by a median of +24 points, Supertrend by +23 — both with fewer trades. A correctly rebuilt, mediocre duplicate of something we already do better is still ballast.
So we're retiring it — no rebuild into the product. The "config or concept?" question is answered (config), but the answer doesn't change the decision: we crystallize the best strategies instead of carrying every one.
What happens to the data
The strategy leaves the backtester but stays visible in Strategy Insights and the Strategy Library — tagged with the retirement finding and the numbers. The accumulated data and the insight (including "the squeeze is a cost filter, not an edge") remain part of the product.
What Backtesting Arena contributes here
We test our own strategies hard enough to repair one, see that it works, and cut it anyway because we already have better. That's uncomfortable but honest — and it's why our strategy set stays short and sharp instead of long and diluted.
FAQ
If the rebuild works, why not ship it? Because +8.6 vs B&H is positive but mediocre. EMA cross (+24) and Supertrend (+23) deliver more return with fewer trades. A second, weaker trend strategy is ballast, not value.
Was the old version a bug? No, but dated: fixed volatility threshold + breakout entry / middle-band exit. Not a classic error, but a naive implementation that buys spikes and sells pullbacks in trending crypto.
What does "the squeeze is a cost filter" mean? Pure momentum (no squeeze) delivered more return (+12.8) but with twice the trades. The squeeze halves the trades for slightly less return — it saves costs but generates no edge of its own.
Can I still see the data? Yes — Strategy Insights + Strategy Library, tagged as retired, with the numbers. It's just no longer offered in the backtester.
Will you build the TTM Squeeze later after all? Only if a version clears the bar against our roster (EMA cross / Supertrend). We won't build a mid-pack duplicate.