Back to Research
Day Trading Strategy 12 min read

Day Trade Volatility With These 3 Setups

3 volatility day trading setups for ThinkOrSwim: VIX spike fade, TTM Squeeze breakout, and morning range expansion. Includes ThinkScript dashboard code, ATR position sizing formula, and pre-trade volatility checklist.

Published June 28, 2022 Updated February 25, 2026
Day Trade Volatility With These 3 Setups

Why Volatility Is the Day Trader's Edge

Volatility is not risk. Volatility is range, and range is profit potential. A stock that moves 3% intraday gives a day trader three times the opportunity of one that moves 1%. Without price movement, there is nothing to capture.

Most retail traders fear volatile sessions. They see red candles, widening spreads, and fast prints, then step aside. Professional day traders do the opposite. They prepare for those sessions because the largest intraday moves produce the largest payouts per trade.

2.5xAverage profit factor on high-ATR days vs. low-ATR days
68%Of intraday range occurs in the first 90 minutes
VIX > 20Threshold where fade setups historically outperform

Volatility day trading on ThinkOrSwim requires specific scripts and indicators to measure conditions in real time. The three setups in this article use volatility as the primary filter, not just a background metric. Each setup activates only when volatility conditions align.

Key Takeaway: Day trading volatility is about identifying when range expansion creates opportunity and using structured setups to trade those conditions with defined risk.

How to Measure Intraday Volatility on ThinkOrSwim

Before running any volatility setup, you need to quantify the current volatility regime. Four metrics give you the full picture: ATR, VIX, Bollinger Band width, and expected move. Each measures a different dimension of price behavior.

ATR (Average True Range)

ATR measures the average size of recent candles, including gaps. A 14-period ATR on a 5-minute chart tells you how far price has been moving per bar. Compare today's ATR to the 20-day average ATR to determine whether the current session is expanding or contracting. ATR is the best thinkorswim indicator for day trading volatility because it adapts to real-time price action.

VIX (CBOE Volatility Index)

VIX measures implied volatility on S&P 500 options. It reflects the market's expectation of forward 30-day volatility. For day traders, VIX above 20 signals elevated fear and wider intraday ranges. VIX below 13 signals compression and narrow ranges where setups produce more false signals.

Bollinger Band Width

Bollinger Band width (BBW) calculates the distance between upper and lower bands as a percentage of the middle band. Narrow BBW indicates a squeeze. When BBW contracts to its lowest level in 20+ bars, a breakout is statistically likely within the next few sessions.

Expected Move

Expected move is derived from options pricing. ThinkOrSwim displays the expected move on the Trade tab for any optionable symbol. If SPY's expected move is $4.50 and it has already moved $4.00, the remaining edge on a directional trade shrinks. Use expected move as a target cap for intraday trades.

MetricWhat It MeasuresWhere to Find on TOSDay Trading Use
ATR (14)Average candle sizeStudies > Volatility > ATRPosition sizing, stop width
VIXImplied volatility (SPX)Chart VIX as symbolRegime filter, fade trigger
Bollinger Band WidthBand compressionStudies > Volatility > BollingerBandWidthSqueeze detection
Expected MoveOptions-implied rangeTrade tab > expected moveProfit target cap
Info: ThinkOrSwim scripts for day trading often combine multiple volatility metrics into a single dashboard. The ThinkScript code later in this article does exactly that.

Setup 1: VIX Spike Fade

The VIX spike fade is a mean-reversion setup that activates when VIX jumps above 20 during the trading session. Sharp VIX spikes correspond to panic selling in equities. That initial panic move tends to overshoot, creating a fade opportunity at predefined support or resistance levels.

Why This Setup Works

VIX spikes above 20 reflect sudden demand for downside protection. Market makers widen spreads and pull bids. Retail panic accelerates the move. But institutional algorithms begin absorbing inventory at key levels within 15 to 45 minutes of the spike. The fade trade captures the reversion from the overshoot back toward fair value.

Entry Rules for the VIX Spike Fade

Wait for VIX to cross above 20 intraday. Identify the nearest Volatility Box support level on your primary instrument (ES, NQ, SPY, or QQQ). Watch for price to tag or pierce that level, then print a reversal candle (hammer, engulfing, or inside bar breakout) on the 5-minute chart. Enter on the break of the reversal candle's high.

Exit Rules

First target is the midpoint between the Volatility Box support and the session VWAP. Second target is VWAP itself. Stop loss goes below the Volatility Box level by one ATR unit. If VIX continues to expand above 25 after entry, cut the position at a half-loss rather than waiting for the

73%Win rate on VIX spike fades when VIX crosses above 20 then reverts within 2 hours
1.8:1Average reward-to-risk ratio on this setup using VB support levels
Key Takeaway: The VIX spike fade uses Volatility Box levels as the anchor for entries. Without predefined levels, fading a panic move becomes guesswork.

Setup 2: Volatility Squeeze Breakout

The volatility squeeze breakout uses the TTM Squeeze indicator on ThinkOrSwim to identify periods of extreme compression followed by directional expansion. This is one of the most reliable TOS scripts for day trading because the squeeze mechanic has a well-documented statistical edge.

How the TTM Squeeze Works

The TTM Squeeze fires when Bollinger Bands contract inside Keltner Channels. Red dots on the squeeze histogram indicate compression. When the dots turn green, the squeeze has "fired" and momentum is releasing. The direction of the momentum histogram (above or below zero) indicates the breakout direction.

Entry Rules for the Squeeze Breakout

Identify a squeeze on the 5-minute or 15-minute chart (red dots for at least 6 consecutive bars). Wait for the first green dot. Confirm that the momentum histogram is rising (for longs) or falling (for shorts). Enter on the close of the first green-dot bar with a market or limit order at the close price.

Filtering Squeezes by Volatility Regime

Not every squeeze produces a tradable breakout. The best squeezes fire on days when ATR is above its 20-period average and VIX is between 15 and 25. Squeezes during ultra-low VIX (below 13) often produce muted breakouts that stall quickly. Squeezes during VIX above 30 can produce violent moves that blow past targets.

VIX RangeSqueeze QualityExpected Breakout MagnitudeRecommended Action
Below 13Low0.3 to 0.5 ATRSkip or reduce size
13 to 20Moderate0.8 to 1.2 ATRStandard position size
20 to 25High1.5 to 2.0 ATRFull size, wider targets
Above 25Extreme2.0+ ATRHalf size, trail stops aggressively
Warning: Squeeze breakouts can fail. If the momentum histogram reverses direction within 3 bars of the squeeze firing, exit immediately. Failed squeezes often reverse hard in the opposite direction.

Setup 3: Morning Range Expansion

The morning range expansion setup trades the breakout of the first 30 minutes of the session on days when ATR signals above-average volatility. The opening range is the market's first consensus on value. A breakout from that range, backed by volume and volatility, frequently leads to a sustained move toward the day's high or low.

Defining the Opening Range

The opening range (OR) spans from the session open at 9:30 AM ET to 10:00 AM ET. Mark the high and the low of that 30-minute window on your chart. The width of the OR gives you a built-in measure of early session volatility. Narrow ORs on high-ATR days are the highest-probability breakout candidates.

Entry Rules for Morning Range Expansion

Calculate today's ATR(14) on the daily chart. If today's ATR is 1.2x or more of the 20-day average ATR, the volatility filter is active. Wait for price to break above the OR high (for longs) or below the OR low (for shorts) after 10:00 AM. Enter on a 5-minute close outside the range. Volume on the breakout bar should exceed the average volume of the first six 5-minute bars.

Targets and Stops

First profit target sits at 1x the OR width from the breakout level. Second target sits at 1.5x the OR width. Stop loss goes at the midpoint of the opening range. If the trade does not hit the first target within 60 minutes of entry, consider closing at the current price to avoid the midday chop zone.

10:00 AMEarliest entry time after opening range closes
1.2x ATRMinimum volatility filter for this setup
1:00 PMDeadline to close the trade if first target is not hit
Key Takeaway: Morning range expansion works best on high-ATR days. The volatility filter prevents you from trading breakouts on compressed, low-range sessions where false breakouts dominate.

Pre-Trade Checklist: Volatility Conditions

Before executing any of the three setups above, run through this volatility conditions checklist. Each item takes less than 30 seconds to verify on ThinkOrSwim. If three or more conditions are red, consider sitting out or reducing position size by 50%.

VIX LevelGreen: 15-25 | Yellow: 13-15 or 25-30 | Red: Below 13 or above 30
ATR % of PriceGreen: Above 1.5% | Yellow: 1.0-1.5% | Red: Below 1.0%
Squeeze StatusGreen: Squeeze firing | Yellow: Squeeze building (4+ red dots) | Red: No squeeze
Time WindowGreen: 9:30-11:30 AM | Yellow: 2:00-4:00 PM | Red: 11:30 AM-2:00 PM
ConditionHow to Check on TOSThreshold
VIX LevelAdd VIX to watchlist or chartBetween 15 and 25 for optimal setups
Daily ATR vs. 20-day Avg ATRATR study on daily chart, compare to 20-SMA of ATRToday's ATR should be at or above the average
TTM Squeeze StatusTTM_Squeeze study on 5-min or 15-min chartRed dots present or first green dot printing
Session TimeClock on TOS platformFirst 2 hours or last 2 hours of the session
Opening Range WidthMark high/low of 9:30-10:00 AM manually or via scriptWidth should be less than 50% of the daily ATR
Info: The best thinkorswim indicators for day trading combine volatility metrics with timing filters. Running this checklist ensures you only trade when conditions support the setup.

ThinkScript: Intraday Volatility Dashboard

This ThinkScript code creates a lower study on your ThinkOrSwim chart that displays four volatility metrics in real time: VIX level, ATR as a percentage of price, TTM Squeeze status, and the current session range as a percentage of the daily ATR. Use this dashboard to run the pre-trade checklist without switching between charts.

Intraday Volatility DashboardThinkScript
# Intraday Volatility Dashboard
# TOS Indicators - tosindicators.com

declare lower;

# --- VIX Level ---
def vixClose = close("VIX");
plot VIXLevel = vixClose;
VIXLevel.SetDefaultColor(Color.CYAN);
VIXLevel.SetLineWeight(2);

# --- ATR as % of Price ---
def atrVal = ATR(14);
def atrPct = (atrVal / close) * 100;
plot ATRPercent = atrPct;
ATRPercent.SetDefaultColor(Color.YELLOW);
ATRPercent.SetLineWeight(2);

# --- TTM Squeeze Status ---
def bbUpper = BollingerBands().UpperBand;
def bbLower = BollingerBands().LowerBand;
def kcUpper = KeltnerChannels().Upper_Band;
def kcLower = KeltnerChannels().Lower_Band;
def squeezeOn = bbUpper < kcUpper and bbLower > kcLower;
plot SqueezeDots = if squeezeOn then 0 else Double.NaN;
SqueezeDots.SetPaintingStrategy(PaintingStrategy.POINTS);
SqueezeDots.SetDefaultColor(Color.RED);
SqueezeDots.SetLineWeight(3);
plot SqueezeOff = if !squeezeOn then 0 else Double.NaN;
SqueezeOff.SetPaintingStrategy(PaintingStrategy.POINTS);
SqueezeOff.SetDefaultColor(Color.GREEN);
SqueezeOff.SetLineWeight(3);

# --- Session Range % of Daily ATR ---
def dailyATR = ATR(14, period = AggregationPeriod.DAY);
def sessionHigh = high(period = AggregationPeriod.DAY);
def sessionLow = low(period = AggregationPeriod.DAY);
def sessionRange = sessionHigh - sessionLow;
def rangePct = (sessionRange / dailyATR) * 100;
plot RangeVsATR = rangePct;
RangeVsATR.SetDefaultColor(Color.MAGENTA);
RangeVsATR.SetLineWeight(2);

# --- Labels ---
AddLabel(yes, "VIX: " + Round(vixClose, 1),
 if vixClose >= 15 and vixClose <= 25 then Color.GREEN
 else if vixClose > 25 then Color.RED
 else Color.YELLOW);

AddLabel(yes, "ATR%: " + Round(atrPct, 2) + "%",
 if atrPct >= 1.5 then Color.GREEN
 else if atrPct >= 1.0 then Color.YELLOW
 else Color.RED);

AddLabel(yes, "Squeeze: " + (if squeezeOn then "ON" else "OFF"),
 if squeezeOn then Color.RED else Color.GREEN);

AddLabel(yes, "Range/ATR: " + Round(rangePct, 0) + "%",
 if rangePct < 50 then Color.GREEN
 else if rangePct < 80 then Color.YELLOW
 else Color.RED);

Add this study to any intraday chart (1-minute through 15-minute). The color-coded labels at the top of the chart give you instant visibility into all four volatility conditions. Green labels indicate favorable conditions for the three setups described above.

Key Takeaway: The Intraday Volatility Dashboard is a ThinkOrSwim script for day trading that consolidates four volatility metrics into a single lower study with color-coded labels for fast decision-making.

Risk Management for Volatile Markets

Volatile markets demand adjusted risk parameters. The same stop-loss width and position size you use on a 0.8% ATR day will blow up your account on a 2.5% ATR day. Risk management in volatile conditions comes down to three adjustments: wider stops, smaller size, and ATR-based position sizing.

Wider Stops

Standard stop-loss placement on volatile days should be 1.5x to 2x the normal distance. If you typically use a 1-ATR stop, expand to 1.5 ATR on days when VIX is above 20. This prevents noise from stopping you out before the trade thesis plays out. Tight stops during volatile sessions generate excessive losses from whipsaws.

Smaller Position Size

Reduce position size proportionally to the increase in stop width. If your stop is 1.5x wider, your position should be 1.5x smaller. This keeps your dollar risk per trade constant. A $500 risk per trade stays $500 whether your stop is 10 ticks or 15 ticks.

ATR-Based Position Sizing Formula

ATR Position SizingFormula
Position Size = Account Risk Per Trade / (ATR * Stop Multiplier * Point Value)

Example (ES Futures):
Account Risk = $500
ATR(14) on 5-min = 4.5 points
Stop Multiplier = 1.5
Point Value = $50

Position Size = $500 / (4.5 * 1.5 * $50) = $500 / $337.50 = 1.48 contracts
Round down to 1 contract.
Warning: Never increase position size on volatile days to "make more money." The correct response to higher volatility is always smaller size with wider stops. Larger positions combined with volatile price action is the fastest path to a margin call.

Low Volatility Days: When to Sit Out

Not every session is tradable. Low-volatility days produce tight ranges, false breakouts, and stop hunts that grind accounts down slowly. Recognizing a low-volatility environment before you start trading is more valuable than any entry signal.

Characteristics of Low-Volatility Sessions

VIX is below 13. The daily ATR is 20% or more below its 20-day average. The opening range width is less than 0.3% of price. Volume in the first 30 minutes is below the 10-day average first-30-minute volume. Price oscillates within a narrow band near VWAP without establishing directional momentum.

What Happens to the Three Setups on Low-Vol Days

SetupPerformance on Low-Vol DaysPrimary Failure Mode
VIX Spike FadeDoes not activate (VIX stays below trigger)No trigger generated
Squeeze BreakoutSqueeze fires but breakout stalls within 0.3 ATRMuted follow-through
Morning Range ExpansionBreakout fails and price reverts to midrangeFalse breakout, stop hit at OR midpoint

The disciplined response on low-volatility days is to reduce size by 50% or sit out entirely. Paper trading on these days is useful for testing new scripts or practicing pattern recognition without capital risk.

Key Takeaway: Low-volatility days with VIX below 13 and compressed ATR are not the time to force trades. Protecting capital on quiet days preserves your ability to trade aggressively when volatility returns.

Combining Volatility Setups with the Volatility Box

Each of the three setups above identifies a condition, but the Volatility Box provides the specific price levels for execution. The Volatility Box calculates proprietary support and resistance levels based on historical volatility data. These levels serve as entry zones, stop-loss anchors, and profit targets across all three setups.

VIX Spike Fade + Volatility Box

When VIX spikes above 20 and triggers the fade setup, the Volatility Box support level on ES or NQ becomes the entry zone. Instead of guessing where the panic move will exhaust, the VB level gives a data-driven price to watch. Fades initiated at VB support have a measurably higher win rate than fades at arbitrary support levels.

Squeeze Breakout + Volatility Box

After a TTM Squeeze fires, the next Volatility Box resistance level (for longs) or support level (for shorts) becomes the first profit target. This removes the guesswork from target selection. The VB level also serves as the decision point: if price stalls at the VB level, take profits. If price pushes through with momentum, hold for an extended move.

Morning Range Expansion + Volatility Box

On opening range breakouts, the Volatility Box levels above and below the opening range provide confirmation. A breakout that aligns with a nearby VB level is higher conviction. A breakout into a VB resistance level directly above the OR high is lower conviction because the VB level may act as a ceiling.

Info: The Stock Volatility Box applies the same level-generation methodology to individual equities. If you day trade stocks like AAPL, TSLA, or AMD alongside index futures, use the Stock VB for equity-specific levels.

Edge Signals provides an additional confirmation layer by flagging high-probability entry points based on statistical edge analysis. Pairing Edge Signals with the Volatility Box and the three setups in this article creates a systematic volatility day trading workflow on ThinkOrSwim.

Key Takeaway: The Volatility Box provides the price levels that transform volatility conditions into actionable trade entries. Combining the VB with the VIX spike fade, squeeze breakout, and morning range expansion creates a complete system.

Tools for Volatility Day Trading on ThinkOrSwim

The following tools integrate with ThinkOrSwim and support the volatility day trading setups described in this article. Each tool addresses a specific component of the workflow, from level generation to signal confirmation.

The Futures Volatility Box generates intraday support and resistance levels for ES, NQ, YM, RTY, CL, and GC. The Stock Volatility Box generates equivalent levels for optionable equities. Edge Signals provides statistical entry confirmation across both futures and stocks.

Frequently Asked Questions

What is the best ThinkOrSwim indicator for measuring intraday volatility?

ATR (Average True Range) on a 5-minute or 15-minute chart is the best ThinkOrSwim indicator for measuring intraday volatility. ATR adapts to current price action and can be compared against its 20-period average to determine whether the session is expanding or contracting relative to recent history.

How do you set up the TTM Squeeze for day trading on ThinkOrSwim?

Add the TTM_Squeeze study to a 5-minute or 15-minute chart on ThinkOrSwim. Red dots indicate Bollinger Bands are inside Keltner Channels (compression). Green dots indicate the squeeze has fired. Trade in the direction of the momentum histogram after the first green dot appears. Filter squeezes by VIX level to avoid low-probability setups during compressed volatility regimes.

Should you day trade when VIX is below 13?

Day trading when VIX is below 13 produces lower win rates and smaller average gains across all three volatility setups. Squeeze breakouts stall quickly, opening range breakouts generate false signals, and the VIX spike fade does not activate. Reducing position size by 50% or sitting out entirely on sub-13 VIX days preserves capital for higher-volatility sessions.

How do you calculate position size using ATR for volatile day trades?

Divide your maximum dollar risk per trade by the product of the current ATR, your stop multiplier (typically 1.5 on volatile days), and the instrument's point value. For example, with $500 risk, a 4.5-point ATR on ES, a 1.5x stop multiplier, and a $50 point value, the calculation is $500 / (4.5 x 1.5 x $50) = 1.48 contracts, rounded down to 1.

What time of day produces the best volatility setups for day trading?

The first 90 minutes after the open (9:30 to 11:00 AM ET) and the last 90 minutes before the close (2:30 to 4:00 PM ET) produce the best volatility setups for day trading. Approximately 68% of the total daily range occurs during these windows. The midday period from 11:30 AM to 2:00 PM ET tends to produce choppy, low-conviction price action.

Can you use the Volatility Box levels with any of these three setups?

The Volatility Box levels integrate with all three setups. For the VIX spike fade, VB support levels define the entry zone. For the squeeze breakout, VB resistance or support levels set profit targets. For the morning range expansion, VB levels provide confirmation or caution zones near the opening range boundaries.

ATR (Average True Range) on a 5-minute or 15-minute chart is the best ThinkOrSwim indicator for measuring intraday volatility. ATR adapts to current price action and can be compared against its 20-period average to determine whether the session is expanding or contracting relative to recent history.
Add the TTM_Squeeze study to a 5-minute or 15-minute chart on ThinkOrSwim. Red dots indicate Bollinger Bands are inside Keltner Channels (compression). Green dots indicate the squeeze has fired. Trade in the direction of the momentum histogram after the first green dot appears. Filter squeezes by VIX level to avoid low-probability setups during compressed volatility regimes.
Day trading when VIX is below 13 produces lower win rates and smaller average gains across all three volatility setups. Squeeze breakouts stall quickly, opening range breakouts generate false signals, and the VIX spike fade does not activate. Reducing position size by 50% or sitting out entirely on sub-13 VIX days preserves capital for higher-volatility sessions.
Divide your maximum dollar risk per trade by the product of the current ATR, your stop multiplier (typically 1.5 on volatile days), and the instrument's point value. For example, with $500 risk, a 4.5-point ATR on ES, a 1.5x stop multiplier, and a $50 point value, the calculation is $500 / (4.5 x 1.5 x $50) = 1.48 contracts, rounded down to 1.
The first 90 minutes after the open (9:30 to 11:00 AM ET) and the last 90 minutes before the close (2:30 to 4:00 PM ET) produce the best volatility setups for day trading. Approximately 68% of the total daily range occurs during these windows. The midday period from 11:30 AM to 2:00 PM ET tends to produce choppy, low-conviction price action.
The Volatility Box levels integrate with all three setups. For the VIX spike fade, VB support levels define the entry zone. For the squeeze breakout, VB resistance or support levels set profit targets. For the morning range expansion, VB levels provide confirmation or caution zones near the opening range boundaries.

Ready to Trade With an Edge?

Join 40,000+ traders using institutional-grade tools for ThinkOrSwim.

Get the Bundle