Bollinger Band Squeeze

The Bollinger Band Squeeze is a strategy where we search for periods of very low volatility in the stock price. This is done by measuring the distance between the upper and the lower band of the Bollinger Bands. When this distance is very small (e.g. the lowest of the past 6 months), we can anticipate a bullish action as soon as the price breaks up the upper band (alternatively, a breakdown through the lower band indicates a bearish action). In other words, the very low volatility usually results in a very high volatility.

The situation is illustrated in the figure below:

(Procter & Gamble in 2015; Source: NinjaTrader)

I coded this strategy using NinjaTrader with the following constraints:

  • There has been the Bollinger Band Squeeze during the past few days, where the distance between the bands is the lowest of the previous 125 days (more or less six trading months).
  • Yesterday the price breached the upper band (as well as is the highest of the previous days with the “squeeze”)
  • The general stock market is bullish, i.e. 100-day SMA of S&P 500 index is above 400-day SMA
  • We trade stocks whose price is greater than 20 USD and lower than 90 USD
  • We enter today on open

Regarding the stop-loss and the take profit levels:

  • We set a stop-loss level 2 USD below the lower band
  • We take profit when the price is equal to the upper Bollinger band plus twice the width of the Bollinger band (using the input data from yesterday)

Please note that the levels can be adjusted. Nevertheless, the objective is rather to test whether the Bollinger band squeeze strategy is profitable at all.

The results for the stocks from S&P 500 index are:

Profit factor 1.40
Max. drawdown -6.41%
Number of trades 476
Percent profitable 61.13%
Average trade 1.58%
Ratio win/loss 0.90
Average time in market 55 days

And now, for stocks from Russell 3000 index:

Profit factor 1.22
Max. drawdown -6.61%
Number of trades 1119
Percent profitable 58.98%
Average trade 1.01%
Ratio win/loss 0.85
Average time in market 51 days

The results are quite decent but perhaps not very excellent. It is good that the maximum drawdown is low, but an average trade results in only 1% profit for the Russell 3000 stocks (with a holding time of about 50 days). On the other hand, this strategy can be combined with others such as trendline breakouts. Finally, the stop-loss and the take profit levels may be improved.

Note, however, that the number of trades is rather limited (at least I would expect more trades). The main reason is that it is not specified how long the period with the low volatility should be. Therefore, the results may depend on the algorithm used for coding the software since some profitable trades may remain undetected.