Bollinger/Keltner squeezelong
Backtest Results @ SPY • 10 Minutes

This strategy buys whenever Bollinger Bands is squeezed into Kelther Channel. This normally indicates that the market is going sideways. This strategy then sells whenever price goes below the Bollinger Bands middle line. The idea is to buy during the obviously sideways market, hoping for it to burst.

Equity Curve

Backtest covers 12.6 months of SPY • 10 Minutes (SPDR S&P 500) data, from June 28, 2024 to July 11, 2025.

Equity curve is the strategy's performance over time. You should compare it to the asset's Buy & Hold performance. In general, you want the blue area to be well above the gray area.

Drawdown is how much losses (realized or unrealized) the strategy has had if compared to the highest equity peak. Compare this to the asset's drawdown to see whether your strategy does a decent job of isolating you from downside volatility. In general, the red area must be well within the gray area.

Equity Curve
Strategy
Asset
Strategy Drawdown
Asset Drawdown

So, we have backtested Bollinger/Keltner squeeze on 12.6 months of SPY • 10 Minutes candles. This backtest resulted in 144 positions, with the average win rate of 38% and reward-risk ratio of 1.61. If you assume that 1.61 reward-to-risk ratio holds, you need a minimum win rate of 38.3 to be profitable. So you're screwed! The key metrics are as follows:

  1. Total Return: Total Return: -0.30% vs 14.30% for the asset
  2. Max Drawdown: Max Drawdown: -5.60% vs -20.70% for the asset
  3. Exposure: Exposure: 26.20% time in the market
  4. Win Rate: Win Rate: 38.0%, vs 38.3% minimum
  5. Reward/Risk Ratio: Reward/Risk Ratio: 1.61

With that exposure in mind, you can tell that for 26% time-in-market, you get -2.10% of the asset upside potential, and 27.05% of the asset downside potential.

Bollinger/Keltner squeeze: enter a position when

All of the following: # Whiskey
  10min Chart(close) (2 candles ago) < 10min Bollinger Bands ® (20, 2, 2, 0, close), Up (2 candles ago)
  10min Chart(close) (1 candles ago) > 10min Bollinger Bands ® (20, 2, 2, 0, close), Up (1 candles ago)
  10min Bollinger Bands ® (20, 2, 2, 0, close), Up (1 candles ago) < 10min Keltner Channel (20, SMA, 10, 2, 0, close), Up (1 candles ago)
  10min BB (20, 2, 2, 0, close) (1 candles ago) > 10min Keltner (20, SMA, 10, 2, 0, close) (1 candles ago)

Bollinger/Keltner squeeze: exit a position when

Any of the following: # Papa
  10min Chart(close) < 10min Bollinger Bands ® (20, 2, 2, 0, close), Middle

Bollinger/Keltner squeeze @ SPY • 10 Minutes (-0.3%) backtest results explained by Alex C

Alex C

Author

The strategy shows some concerning patterns that I must point out. The negative net profit of -0.3% compared to buy & hold profit of 14.3% is already a red flag. Even though the Risk/Reward ratio of 1.61 looks okay on paper, the low win rate of 38% makes it problematic.

What catches my attention most is the high number of trades - 144 trades in about 12 months means relatively high trading activity. This could lead to significant transaction costs in real trading, which would make the already negative performance even worse. The market exposure of 26.2% suggests the strategy is quite selective about when it enters the market, which is good, but it's not catching the major moves as evidenced by the underperformance versus buy & hold.

The negative Sharpe ratio (-0.41) and Sortino ratio (-0.11) are clear indicators that this strategy is not delivering risk-adjusted returns. While the maximum drawdown of -5.6% might seem acceptable compared to the asset's -20.7%, we must remember that this is achieved through lower market exposure, not through superior trading decisions. I would strongly suggest to either modify the entry conditions or look for a completely different approach.

Tabular metrics of Bollinger/Keltner squeeze backtested on SPY • 10 Minutes

Total Trades144Net Profit-0.3%Buy & Hold Profit14.3%
Win Rate38%Reward/Risk Ratio1.61Max Drawdown-5.6%
Asset Max Drawdown-20.7%Exposure26.2%Avg Candles in Position17.2
Sharpe Ratio-0.41Sortino Ratio-0.11Realized Volatility6.66%
Max Winning Streak5Avg Winning Streak1.7Max Losing Streak7
Avg Losing Streak2.7Avg Trades per Month22.9Avg Trades per Day0.8
Return Std Dev0.5Loss Std Dev0.3Win Std Dev0.3
Expectancy-0.0Beta0.12

All backtests for Bollinger/Keltner squeeze

backtestexposurepeformance vs assetdrawdown vs assetwin%reward/risk
BTCUSD • 1 Minute
13%(0.2%/9.8%) 0.02x(-0.4%/-1.6%) 0.25x491.2
EURUSD • 1 Minute
17%(-0.1%/-0.9%) 0.11x(-0.5%/-1.2%) 0.42x282.4
GLD • 1 Minute
18%(3.6%/0.0%) Infinityx(-1.0%/-5.5%) 0.18x354.0
NVDA • 1 Minute
24%(8.1%/16.7%) 0.49x(-1.8%/-4.4%) 0.41x432.4
SPY • 1 Minute
23%(1.0%/4.6%) 0.22x(-1.6%/-2.1%) 0.76x332.4
TSLA • 1 Minute
23%(-14.5%/-10.3%) 1.41x(-15.5%/-21.4%) 0.72x281.3
WMT • 1 Minute
18%(-3.8%/-5.4%) 0.70x(-3.9%/-6.4%) 0.61x311.4
BTCUSD • 10 Minutes
19%(1.0%/27.2%) 0.04x(-6.3%/-12.1%) 0.52x351.9
EURUSD • 10 Minutes
24%(-0.3%/6.5%) -0.05x(-4.3%/-4.3%) 1.00x302.3
GLD • 10 Minutes
19%(-4.0%/43.7%) -0.09x(-8.0%/-8.3%) 0.96x371.4
NVDA • 10 Minutes
25%(-12.1%/32.9%) -0.37x(-24.9%/-42.8%) 0.58x361.6
SPY • 10 Minutes
26%(-0.3%/14.3%) -0.02x(-5.6%/-20.7%) 0.27x381.6
TSLA • 10 Minutes
24%(4.7%/59.0%) 0.08x(-32.8%/-55.3%) 0.59x401.6
WMT • 10 Minutes
27%(17.3%/40.1%) 0.43x(-6.2%/-23.8%) 0.26x441.9
BTCUSD • 1 Hour
25%(19.1%/71.4%) 0.27x(-21.5%/-31.0%) 0.69x421.7
EURUSD • 1 Hour
26%(4.9%/8.2%) 0.60x(-2.8%/-9.0%) 0.31x411.9
GLD • 1 Hour
16%(6.2%/117.6%) 0.05x(-18.6%/-22.2%) 0.84x421.6
NVDA • 1 Hour
26%(364.4%/3126.3%) 0.12x(-34.2%/-68.0%) 0.50x492.5
SPY • 1 Hour
22%(8.9%/106.7%) 0.08x(-12.4%/-35.1%) 0.35x411.7
TSLA • 1 Hour
21%(505.6%/1395.5%) 0.36x(-34.5%/-75.1%) 0.46x433.1
WMT • 1 Hour
25%(25.8%/138.2%) 0.19x(-9.3%/-26.9%) 0.35x461.6
BTCUSD • Daily
28%(2515.4%/67440.2%) 0.04x(-51.5%/-83.8%) 0.61x454.2
EURUSD • Daily
25%(5.2%/10.8%) 0.48x(-9.1%/-23.3%) 0.39x391.9
GLD • Daily
17%(13.2%/595.1%) 0.02x(-21.1%/-45.3%) 0.47x391.9
NVDA • Daily
26%(577.6%/373678.5%) 0.00x(-51.4%/-90.0%) 0.57x432.5
SPY • Daily
22%(14.1%/1316.3%) 0.01x(-39.4%/-56.7%) 0.69x391.9
TSLA • Daily
24%(1451.6%/24185.2%) 0.06x(-38.8%/-75.0%) 0.52x473.9
WMT • Daily
26%(-44.0%/9978.0%) -0.00x(-74.7%/-50.6%) 1.48x361.6