VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
ACADEMY / Indicators and signals

TTM Squeeze: does the Bollinger-Keltner breakout survive a backtest?

The TTM Squeeze marks when volatility has compressed (Bollinger Bands inside the Keltner Channel) but not which way price will leave. Any edge sits in the direction rule you add and in the costs per trade, so judge it by completed trades after costs on one bar size, then validate out-of-sample.

By · Published · updated · Editorial policy

Contents
  1. Does the TTM Squeeze predict profitable breakouts?
  2. How is the squeeze condition defined and how do you set it up?
  3. What do the red and green dots mean?
  4. How do you read the momentum histogram direction?
  5. Which timeframe suits the TTM Squeeze?
  6. What does a Keltner breakout test on NQ daily bars show?
  7. How do you handle whipsaws and validate a squeeze rule?
  8. Frequently asked questions
  9. References

Does the TTM Squeeze predict profitable breakouts?

The TTM Squeeze does not predict profitable breakouts by itself. It reliably marks when volatility has compressed, because the Bollinger Bands have moved inside the Keltner Channel, but it says nothing about which way price will leave. The tradable edge, if there is one, sits in the direction rule you add and in the costs of each trade.

The TTM Squeeze indicator is a volatility tool that compares two channels around price and shows a dot when the narrower one fits inside the wider one. Think of a coiled spring: the squeeze tells you the spring is compressed, and a compressed spring usually moves. It does not tell you whether it will jump up or down. A trader who buys every release is making a separate bet on direction, and that bet is what a backtest actually measures. The same split between "describes the market" and "makes money" applies to most technical indicators: a tool can be accurate about what it measures and still have no edge once you turn it into orders and pay the costs.

One claim runs through this article: the squeeze answers "when", the histogram and your breakout rule answer "which way", and the bar size and costs decide whether anything is left over. Each section below tests one piece of that chain.

How is the squeeze condition defined and how do you set it up?

A squeeze is on when both Bollinger Bands sit inside the Keltner Channel, and setting it up means fixing four numbers and one bar size before any test runs. The common settings are a 20-period Bollinger Band at 2 standard deviations and a 20-period Keltner Channel at 1.5 times the average true range (ATR).

The two channels measure volatility in different ways. Bollinger Bands are a pair of lines placed a chosen number of standard deviations above and below a moving average, so they widen and narrow with the spread of recent closes. The Keltner Channel is a pair of lines placed a chosen multiple of the ATR above and below a moving average, and the ATR, introduced by Wilder (1978), is the average size of a bar's full range including gaps. The Bollinger Bands react faster to a quiet stretch than the ATR-based Keltner Channel does. When closes have been so tightly packed that the faster channel fits inside the slower one, the squeeze is on.

Illustration of the squeeze: the Bollinger Bands narrow until both lines sit inside the Keltner Channel, which is the squeeze on, then widen back outside it, which is the squeeze off Bollinger inside Keltner Illustration: this is the squeeze Keltner Bollinger Squeeze on Squeeze off Inside means quiet, not direction. So: add a rule for which way.
The squeeze is nothing more than the Bollinger Bands fitting inside the Keltner Channel. The shaded stretch is the compression; the crossing back outside is the release.

Set it up in this order, and write the choices down before you look at any result:

  1. Choose the bar size. The same four numbers give very different squeezes on 5-minute and daily bars. The timeframe section below explains why.
  2. Fix the Bollinger length and width. 20 periods and 2 standard deviations is the usual starting point.
  3. Fix the Keltner length and multiplier. 20 periods and 1.5 ATR is the usual starting point. A smaller multiplier makes squeezes rarer; a larger one makes them more frequent.
  4. Define "inside" strictly. Both the upper Bollinger line below the upper Keltner line and the lower Bollinger line above the lower Keltner line, on the bar's close.
  5. Decide the direction rule and the exit now, not after the first chart looks promising.

Four numbers are four chances to tune a result to one stretch of history. When the lengths and multipliers are entered as ranges instead of single values, the strategy generation in AlphaPrime (Valynox) turns the squeeze idea into a family of testable rules, so the settings around 20, 2 and 1.5 are evaluated together rather than one hand-picked value at a time.

What do the red and green dots mean?

A red dot means the Bollinger Bands are inside the Keltner Channel (squeeze on) and a green dot means they have moved back outside (squeeze off). The first green dot after a run of red dots is the release, and that single bar is the one most squeeze rules act on.

The dots sit on the zero line of the indicator pane. A run of red dots can last three bars or thirty; the length of the run tells you how long volatility stayed compressed, and many traders treat longer runs as more meaningful, though that is a claim to test rather than assume. The green dot itself carries no direction. Price can leave a squeeze upward, downward, or leave and come straight back, which is the whipsaw case covered in the last section.

A run of red dots, meaning squeeze on and volatility compressed, is followed by green dots, meaning squeeze off and volatility expanding; an arrow marks the change from the last red dot to the first green dot as the release bar that most rules act on Act on the first green dot Red means squeeze on, green off Release Red dot Compressed: wait Green dot Expanding The first green dot is the release. So: enter on the next bar's open.
Red dot: compressed, wait. Green dot: expanding. The transition from the last red dot to the first green dot is the release bar.
DotChannel positionVolatilityWhat a rule does
RedBollinger Bands inside the Keltner ChannelCompressedNothing yet; count the bars in the run
First green after redBollinger Bands have crossed back outsideStarting to expandRead the histogram for direction and enter on the next bar
Green with no red before itBollinger Bands outside, as they are most of the timeNormalNothing; this is the default state, not a signal

Two practical points follow. First, trade the transition, not the colour: a chart is green most of the time, so "green means go" would keep you in the market almost always. Second, a rule that enters on the close of the release bar is using a price it could not have traded at; enter on the open of the next bar. How a plain Bollinger Band rule behaves on its own, before any Keltner filter is added, is covered in the Bollinger Bands strategy backtest; the squeeze inherits the same strengths and the same false signals in quiet markets.

How do you read the momentum histogram direction?

The histogram supplies the direction that the dots lack: its sign says whether momentum is above or below zero, and its slope says whether that momentum is growing or fading. Sign and slope together give four states, and a rule can test each one separately instead of treating every release the same way.

The histogram is a momentum indicator drawn as bars, where momentum is how far price has moved relative to a recent midpoint. The indicator page covers the calculation; what matters for testing is the reading, which takes two questions on the release bar:

  1. Is the bar above or below zero? Above zero means recent movement is upward, below zero downward.
  2. Is this bar further from zero than the one before it, or closer? Further from zero is "growing"; closer is "fading".
Four momentum histogram states from sign and slope on the release bar: positive and growing is traded long, negative and growing is traded short, and the two fading states are skipped Trade the growing states Sign and slope on the release bar Positive, growing Trade long Positive, fading Skip Negative, growing Trade short Negative, fading Skip
Four histogram states from two questions. A breakout rule normally trades the two "growing" states and ignores the two "fading" ones.

A long breakout rule takes a release when the histogram is positive and growing; a short rule takes one when it is negative and growing (moving further below zero). The two fading states are releases where momentum is already turning back toward zero, and most traders skip them. Charting packages colour these four states differently from one another, so read the sign and slope rather than memorising a colour scheme. A useful test is to split your release trades into the four states and look at the average trade after costs in each: if the "growing" states are no better than the "fading" ones, the histogram is adding nothing to your rule on that market and bar size.

Which timeframe suits the TTM Squeeze?

Daily and multi-hour bars produce fewer and cleaner squeezes with a larger move per trade relative to costs, while 1- to 5-minute bars produce many squeezes that release in both directions before a trend forms. Judge the timeframe by completed trades after costs, not by how the chart looks.

The reason is the ratio between the typical move after a release and the round-trip cost. Commission and slippage are roughly the same number of ticks whether you trade a 5-minute bar or a daily bar, but the move you can capture is many times larger on the daily bar. On short bars the cost eats a large share of each trade, and the frequent false releases add losses on top. This is the same arithmetic that decides which tools hold up in the article on the best indicator for intraday trading: the indicator matters less than the move per trade next to the cost per trade.

Bar sizeSqueezes per yearMove per trade vs round-trip costFalse releasesWhat to count before trusting it
1- to 5-minuteManySmallFrequentCompleted trades after costs
30- to 60-minuteModerateMediumSomeCompleted trades after costs
DailyFewLargeRareCompleted trades after costs
Hypothetical example: the round-trip cost is about the same on every bar size, so it takes about 15 percent of a typical 5-minute squeeze move but only about 1 percent of a typical daily squeeze move Same cost, very different move Cost as share of a typical move Cost Kept Illustration 5-min 15% Daily 1% Short bars: costs eat the move. So: count trades after costs.
Bar size changes the trade count, the move per trade and the whipsaw risk. The thing to count is the same on every row: completed trades after costs.

Hypothetical example

Suppose a 5-minute squeeze on an index future typically moves 10 points after the release before it stalls, and a daily squeeze typically moves 150 points. Suppose the round-trip cost, commission plus one tick of slippage on each side, comes to about 1.5 points either way. On the 5-minute bars the cost is 15 percent of the typical move; on daily bars it is 1 percent. The 5-minute rule might fire 200 times a year against the daily rule's 10, so it builds a trade sample quickly, but it needs a much higher share of winners just to cover its costs.

Daily bars have the opposite problem: a daily squeeze rule on one market may produce only a dozen releases a year, so several years of history, or several markets, are needed before the average trade means anything. Pick the bar size, run the rule with costs, and count the trades; then decide whether the sample is large enough to read.

What does a Keltner breakout test on NQ daily bars show?

A stand-in ATR channel breakout rule on NQ daily bars held a position almost all the time from 2019 to mid-2025, so its result describes a trend-following exposure to a rising Nasdaq-100 market rather than the squeeze pattern itself. The run tested an ATR Channel rule, which is the Keltner half of the squeeze, as the only entry and exit, with no stop, no target and no Bollinger condition; it is a stand-in built from standard indicators, not the TTM Squeeze.

The run below is the one candidate AlphaPrime kept out of about a thousand it tried, chosen for its return against its drawdown. Picking the kept candidate after the fact flatters it: among a thousand variants, the best-looking one carries part luck, which Bailey, Borwein, López de Prado and Zhu (2014) show grows with the number of variants compared on the same data. The rule did not earn this money in any account, and the figures are not something a reader can expect.

Source: AlphaPrime product engine (CPU), run 2026-10-31. NQ daily bars, 2019-01-02 to 2025-06-30, long and short, 1 contract, $20 commission and $10 slippage per trade.

NumberResult
Net profit (closed trades)$184,055
Max drawdown$108,925
Trades34
Win rate55.88%
Profit factor2.067
Average trade$5,413.38
Time in market95.61%
Look at how few flat stretches the equity curve has, which is what a near-always-in-market rule looks like, at the depth of the drawdown relative to the climb, and at whether the slope in the out-of-sample stretch resembles the slope before it.
Look at how few flat stretches the equity curve has, which is what a near-always-in-market rule looks like, at the depth of the drawdown relative to the climb, and at whether the slope in the out-of-sample stretch resembles the slope before it. NQ · daily · 2019-01-02 to 2025-06-30 · CPU engine backtest

Three readings matter more than the headline. First, time in market of 95.61% with 34 trades over six and a half years means the rule was long or short on almost every day; a channel breakout with no stop simply flips when price crosses the opposite band. Over a period in which the Nasdaq-100 rose strongly, that is mostly a long exposure, and a reader should ask how much of the $184,055 a plain buy-and-hold on one contract would have shown. Second, the max drawdown of $108,925 is more than half the net profit, which is the price of holding through every reversal without a stop. Third, 34 trades is a small sample: a change in two or three trades would move the average trade of $5,413.38 by a large amount. The pure channel version of this rule, with its parameters and exits, is worked through in the Keltner channel strategy test; adding the Bollinger condition on top turns an always-in-market rule into a selective one, which cuts time in market and the trade count further, so expect an even smaller sample to judge from.

How do you handle whipsaws and validate a squeeze rule?

Whipsaws are the squeeze's main failure mode, so a squeeze rule earns trust only after a time-ordered out-of-sample run, walk-forward windows, doubled slippage and a check that neighbouring Bollinger and Keltner settings behave alike. A whipsaw is a release that moves far enough to trigger an entry and then reverses, so the trade is stopped out or flipped at a loss before any trend forms.

Handle whipsaws in the rule design first, then measure what is left in validation:

  • Require a minimum run of red dots before a release counts, and test several minimums; a longer compression often, though not always, precedes a cleaner move.
  • Require the histogram state to agree with the trade direction on the release bar and still agree on the entry bar.
  • Use a stop sized in ATR rather than a fixed number of points, so it scales with the volatility that is expanding at the release.
  • Add a time exit that closes the trade after a fixed number of bars if neither the stop nor the target is hit, which removes the "drift for weeks" trades.
Five checks in order: fix the settings and bar size, run in-sample with costs, run out-of-sample unchanged, walk forward with doubled slippage, check neighbouring settings; a failure at step 3 or 4 means reject the rule, not re-tune it Five checks, no re-tuning In this order, set before you test 1 2 3 4 5 Fix settings, bar size In-sample, with costs Out-of-sample, unchanged Walk-forward, 2× slippage Neighbouring settings Fails? Reject A fail at step 3 or 4 is final. So: reject it, do not re-tune.
The order of checks a squeeze rule must pass. A failure at step 3 or 4 means reject; changing a setting to rescue it makes the test data part of the tuning.

Then run the checks in this order:

  1. Fix the four settings and the bar size and write them down, along with the pass rule for step 3.
  2. Run the in-sample period with commission and slippage from the first run, so the ranking already reflects what you could trade.
  3. Run the out-of-sample period unchanged. Out-of-sample data is the later part of the history that was not used to choose any setting. A good result keeps a similar average trade after costs and spreads profit across most quarters; a bad result shows profit sitting in one or two releases or a sign change at the split date.
  4. Walk the rule forward and double the slippage. Walk-forward analysis is a test that tunes on one window, trades the next window unchanged, moves forward and repeats, which Pardo (2008) describes as the way to measure what you could actually have traded. A squeeze rule that survives on daily bars but dies with doubled slippage on 5-minute bars was living on cheap fills.
  5. Check the neighbours. Run 18 and 22 periods, 1.8 and 2.2 standard deviations, 1.3 and 1.7 ATR. If only 20, 2 and 1.5 work, the result describes that one history, not the squeeze.

Count the trades at each step. Because a daily squeeze rule on one market produces few trades, the walk-forward windows and a second or third market are usually what bring the out-of-sample sample to a size worth reading.

Your next step: load your own bar data for one market, set the squeeze to 20, 2 and 1.5 on daily bars, define a long rule for "positive and growing" and a short rule for "negative and growing" with an ATR stop, and run it with your real commission and one tick of slippage per side. Then write down how many completed trades it produced before you look at the profit.

Frequently asked questions

Is the TTM Squeeze a reliable indicator?

It is reliable at what it measures: when both Bollinger Bands sit inside the Keltner Channel, volatility has compressed, and that is a mechanical fact about the recent bars. It is not a reliable predictor of direction, because a squeeze can release upward, downward or reverse immediately. Whether a squeeze rule is worth trading depends on the direction rule you add, the bar size and the costs, and only a backtest with costs and an out-of-sample period can answer that for your market.

What are the standard TTM Squeeze settings?

The common setup is a 20-period Bollinger Band at 2 standard deviations and a 20-period Keltner Channel at 1.5 times the average true range. The squeeze is on when both Bollinger lines are inside both Keltner lines. Treat these four numbers as a starting point and test the neighbouring values; a rule that only works at exactly 20, 2 and 1.5 is describing one stretch of history.

What do the red and green dots on the TTM Squeeze mean?

A red dot means the squeeze is on: the Bollinger Bands are inside the Keltner Channel and volatility is compressed. A green dot means the squeeze is off: the bands have moved back outside and volatility is expanding. The signal most rules use is the first green dot after a run of red dots, with the momentum histogram read on that bar for direction.

Which timeframe is best for the TTM Squeeze?

Daily and multi-hour bars give fewer squeezes, a larger move per trade relative to costs and fewer false releases, so they are easier to trade after commission and slippage. One- to five-minute bars give many squeezes and many whipsaws, and the costs take a large share of each trade. The right choice for you is the bar size where the rule still shows a positive average trade after realistic costs across enough completed trades to read.

References

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.
  • Wilder, J. W. (1978). New Concepts in Technical Trading Systems. Trend Research.