5 min read

Mean Reversion on Bollinger Band Squeeze

Indices S&P 500 Mean Reversion

The Idea

Bollinger Bands are a volatility envelope placed around a moving average. When the bands contract tightly around price, it signals a period of unusually low volatility known as a "squeeze." Markets tend to alternate between periods of compression and expansion, so a squeeze often precedes a significant directional move. However, predicting the direction of the breakout is the challenge.

This strategy takes a mean reversion approach during squeeze conditions rather than trying to predict the breakout direction. The logic is rooted in the observation that during low-volatility periods, price tends to oscillate between the upper and lower Bollinger Bands with greater regularity. When the bands are narrow and price touches the lower band, there is a statistical tendency for price to revert back toward the middle band (the 20-period simple moving average). This strategy capitalises on that tendency by entering long at the lower band and exiting at the middle band.

The key insight is that squeezes create a well-defined range. During normal or high-volatility conditions, the bands are wide and touches of the outer bands often signal the beginning of a trend rather than a reversal. By restricting entries to squeeze conditions only, the strategy filters out trending environments where mean reversion would fail. This results in shorter holding periods, higher win rates, and more predictable outcomes.

Market & Instruments

The S&P 500 index is an excellent candidate for this strategy. Equity indices have a well-documented tendency toward mean reversion on shorter timeframes, partly because institutional rebalancing and hedging activity creates natural buying pressure at support levels and selling pressure at resistance levels. The S&P 500 also benefits from deep liquidity and tight spreads when traded through CFDs or futures contracts.

This strategy works best on the 1-hour or 4-hour timeframe. On higher timeframes such as the daily chart, squeezes occur less frequently but tend to produce larger moves that are more likely to be genuine breakouts rather than mean-reverting oscillations. On lower timeframes like the 15-minute chart, the signals become noisier. The 1-hour chart provides a good balance between signal quality and trade frequency, typically generating several setups per month during consolidation phases.

The Logic

The strategy begins by calculating standard Bollinger Bands: a 20-period Simple Moving Average (SMA) as the middle band, with the upper and lower bands set at 2 standard deviations above and below. The critical element is detecting the squeeze condition, which is defined by the Bollinger Band bandwidth falling below a threshold value.

Bandwidth is calculated as the difference between the upper and lower band divided by the middle band. When this value drops below a historically low percentile (typically the 20th percentile of the last 120 bars), the market is in a squeeze. This approach adapts the threshold to the specific instrument and timeframe rather than using a fixed value.

Once a squeeze is detected, the strategy watches for price to touch or close below the lower Bollinger Band. When this occurs, it enters a long position with the expectation that price will revert toward the mean. The exit target is the middle band (the 20-period SMA). A protective stop loss is placed at 1.5 times the current bandwidth below the lower band, ensuring that if the squeeze resolves into a genuine downward breakout, the loss is contained.

Importantly, only long entries are taken in this configuration. The S&P 500 has a long-term upward bias, so buying dips to the lower band during squeezes aligns with the broader market tendency. For instruments without this bias, the strategy can be configured for both directions.

⚡ Strategy Rules
FILTER:    Bollinger Bandwidth(20, 2) < 20th percentile of last 120 bars
           // Squeeze detected: bands are unusually narrow

ENTRY LONG: Close <= Lower Bollinger Band(20, 2)
            // Price touches or penetrates the lower band during squeeze

EXIT:       Close >= Middle Bollinger Band (20 SMA)
            // Price reverts to the mean

STOP LOSS:  Lower Band - (1.5 × Bandwidth)
            // Protection against genuine breakdown

TIMEFRAME:  1H
INSTRUMENT: S&P 500 (SPX500 / US500)

How to Build This in Arconomy

  1. Open the Canvas Editor and create a new strategy. Name it "Bollinger Squeeze Mean Reversion - SPX500" and set the default symbol to your broker's S&P 500 instrument (commonly SPX500 or US500) with a 1-hour timeframe.
  2. From the Rules Library, drag a Custom Condition Builder filter onto the canvas. Configure it to calculate Bollinger Bandwidth and compare it against its 120-bar rolling percentile. Set the condition to trigger when the bandwidth is below the 20th percentile. This establishes the squeeze detection gate.
  3. Add a Custom Condition Builder entry rule. Set the left operand to Close, the operator to "Less Than or Equal", and the right operand to the Lower Bollinger Band with parameters (20, 2). Set the direction to Long Only. Connect this node to the output of the squeeze filter so entries only fire during confirmed squeezes.
  4. Add a Custom Condition Builder exit rule. Set the condition to Close >= Middle Bollinger Band (20 SMA). This is your profit target: the trade closes when price reverts to the mean.
  5. Add a fixed stop loss from the Risk Management category. Calculate 1.5 times the current bandwidth and enter it as a pip or point distance. Alternatively, use a percentage-based stop calibrated to the typical bandwidth during squeeze conditions for your instrument.
  6. Use Auto-Arrange to clean up the canvas. Review all connections to ensure the squeeze filter gates the entry rule, and both the exit and stop loss are connected in parallel. Save and proceed to backtesting.

Backtest Considerations

Mean reversion strategies tend to have higher win rates but smaller average wins compared to trend-following approaches. When backtesting this strategy, expect a win rate above 60% but with modest profit per trade. The edge comes from consistency rather than large individual winners. Review the Performance Metrics panel to confirm that the average win exceeds the average loss after accounting for spreads and commissions.

Backtest over at least 2 years of data to capture different market regimes. The S&P 500 experiences periods of sustained low volatility (where this strategy thrives) and periods of elevated volatility such as during earnings seasons or macroeconomic shocks (where squeezes are rare and the strategy naturally sits on the sidelines). Ensure your backtest includes both types of environments.

One important caveat is gap risk. Equity indices can gap significantly at the open, especially after weekend news events. A gap below your stop loss means the actual exit price could be materially worse than the stop level. Use the Event-Level Replay tool to inspect individual trades and identify any that were affected by gaps. Consider adding a time filter to avoid holding positions over weekends or through major scheduled economic releases.

Key Takeaways

  • Bollinger Band squeezes identify low-volatility periods where mean reversion is statistically more likely to succeed than during trending or high-volatility conditions.
  • Exiting at the middle band (20 SMA) rather than the opposite band keeps holding periods short and win rates high, at the cost of smaller individual profits.
  • The S&P 500's long-term upward bias makes long-only mean reversion at the lower band a natural fit, but always validate this assumption with current market conditions during your backtest.

This trading idea is for educational and informational purposes only. It does not constitute financial advice. Past performance, whether actual or simulated, is not indicative of future results. Always do your own research and never risk more than you can afford to lose.

Ready to build this strategy?

Try it yourself on the Arconomy platform — no code required.

Build This Strategy