How To Analyze Volatility Every Morning
Learn the complete 10-minute morning volatility routine for ThinkOrSwim day traders. Covers the 5-step process including VIX term structure analysis, overnight futures review, Volatility Box levels, squeeze alignment across timeframes, and ATR-based position sizing with a full ThinkScript dashboard code.
- Why a Morning Volatility Routine Matters
- The 10-Minute Morning Volatility Process
- Step 1: Check the VIX and VIX Term Structure
- Step 2: Review Overnight Futures Action
- Step 3: Analyze the Volatility Box Levels
- Step 4: Check the Squeeze Status Across Timeframes
- Step 5: Set Position Sizing Based on Volatility
- ThinkScript: Morning Volatility Dashboard
- High Volatility vs Low Volatility Day Trading
- Reading the Volatility Box Morning Email
- Common Morning Routine Mistakes
- Tools for Your Morning Volatility Analysis
Why a Morning Volatility Routine Matters
Professional day traders do not open ThinkOrSwim and immediately start clicking buy or sell. They run a structured volatility analysis first. A consistent morning routine reduces impulsive trades by up to 40% and helps you identify whether the market environment favors trend-following or mean-reversion strategies before risking a single dollar.
Volatility is the single variable that changes everything about your trading plan. It dictates your position size, your stop-loss distance, your profit targets, and even which setups you should prioritize. A 12-point ATR day on the S&P 500 requires a completely different approach than a 45-point ATR day.
Without this routine, you are essentially trading blind. You might size a position for a calm, range-bound day and then get destroyed when the VIX spikes 20% by noon. Or you might sit on the sidelines during a low-volatility day waiting for a breakout that never comes. The morning routine eliminates these costly mismatches between your strategy and the actual market environment.
The 10-Minute Morning Volatility Process
Every morning before the 9:30 AM ET open, professional traders run through a five-step volatility checklist. This process takes exactly 10 minutes and gives you a complete picture of the day's expected volatility regime. Each step builds on the previous one to create a comprehensive trading framework that adapts to any market condition.
The order matters. You start with the macro picture (VIX), zoom into futures price action, layer on your Volatility Box framework, check for squeeze conditions, and finally calibrate your position sizing. This top-down approach ensures you never miss a critical data point that could define your entire session.
Step 1: Check the VIX and VIX Term Structure
The CBOE Volatility Index (VIX) is your first and most important data point each morning. A VIX below 15 signals a low-volatility regime where mean-reversion strategies thrive. A VIX between 15 and 25 indicates normal volatility suitable for most strategies. A VIX above 25 demands caution, reduced size, and wider stops.
Beyond the raw VIX number, check the term structure by comparing the VIX to VIX3M (3-month volatility). When VIX is below VIX3M, the term structure is in contango. This is the normal state where short-term fear is lower than long-term uncertainty. Markets tend to grind higher or chop sideways during contango environments.
| Term Structure | Condition | Day Trading Implication | Typical VIX Range |
|---|---|---|---|
| Contango | VIX < VIX3M | Favor mean-reversion, sell premium, tighter stops | 12-18 |
| Flat | VIX ≈ VIX3M | Transitional. Watch for directional breakout | 18-22 |
| Backwardation | VIX > VIX3M | Favor trend-following, buy premium, wider stops | 22-40+ |
When the term structure flips to backwardation (meaning VIX is above VIX3M) the market is pricing in more near-term fear than long-term uncertainty. This is a warning signal. Backwardation occurs roughly 15% of trading days and is associated with sharp directional moves, gap fills, and elevated intraday ranges that can catch unprepared traders off guard.
Step 2: Review Overnight Futures Action
Before the cash market opens, ES (S&P 500 futures) and NQ (Nasdaq 100 futures) have been trading for hours in the overnight session. Pull up the overnight range on your ThinkOrSwim chart and note three critical data points: the overnight high, the overnight low, and the current price relative to the prior day's close.
Gap analysis is essential for framing the open. A gap up or down of more than 0.5% on ES signals that overnight participants have established a directional bias. Gaps between 0.5% and 1.0% fill approximately 70% of the time by the end of the regular session. Gaps larger than 1.0% fill only about 50% of the time and often indicate a trend day.
Pay special attention to where price is within the overnight range at 9:15 AM ET. If ES is trading near the overnight high heading into the open, buyers have been in control and you should watch for continuation above that level. If price is mid-range, expect a more balanced open with potential for rotation in either direction.
Also check the volume profile of the overnight session in ThinkOrSwim. Thin overnight volume (below 500K contracts on ES) means the overnight levels are less reliable as support and resistance. Heavy overnight volume (above 1M contracts) gives those levels much more significance during the regular session.
Step 3: Analyze the Volatility Box Levels
The Volatility Box generates statistically-derived support and resistance levels using two models: the hourly model and the daily model. Each morning, these levels define the playing field for your trades. The hourly model captures short-term volatility cycles, while the daily model frames the broader expected range for the session.
Start by identifying where the current pre-market price sits relative to both sets of levels. If price is between the daily upper and lower Volatility Box levels, you are in the expected range. This favors mean-reversion trades at the extremes. If price has already breached a daily level in pre-market, expect a potential trend day with momentum continuation.
Layer the hourly levels on top of the daily levels to create a zone map for the session. When hourly and daily levels converge within a tight range (less than 5 points on ES), that zone becomes a high-probability reaction area. These confluences are where the best risk-to-reward entries occur during the regular session.
Step 4: Check the Squeeze Status Across Timeframes
The TTM Squeeze (Bollinger Band and Keltner Channel compression) is one of the most powerful volatility indicators for day traders. Each morning, check the squeeze status on three timeframes: daily, weekly, and monthly. When all three timeframes show an active squeeze, a major move is building and the eventual breakout will be explosive.
A daily squeeze alone fires every few weeks and produces moves of 1-3% on the S&P 500. A daily plus weekly squeeze alignment occurs a few times per quarter and produces 3-7% directional moves. The rare triple squeeze (daily + weekly + monthly) happens only 2-3 times per year and can produce moves exceeding 10%.
| Squeeze Alignment | Frequency | Expected Move (SPY) | Day Trading Impact |
|---|---|---|---|
| Daily Only | Every 2-3 weeks | 1-3% | Normal breakout plays, standard sizing |
| Daily + Weekly | 3-4x per quarter | 3-7% | Increase directional bias, add to winners |
| Daily + Weekly + Monthly | 2-3x per year | 7-12%+ | Maximum conviction, trend-follow aggressively |
| No Squeeze | Most days | Choppy 0.3-0.8% | Mean-reversion, reduce size, tight targets |
When no squeeze is active on any timeframe, the market is in an expanded volatility state and likely to chop. These are the days where over-trading destroys accounts. Reduce your size by 30-50% and focus only on A-plus setups at key Volatility Box levels rather than forcing trades in directionless chop.
Step 5: Set Position Sizing Based on Volatility
Position sizing is where your morning routine translates directly into risk management. The core principle is simple: when volatility is high, reduce your share or contract count. When volatility is low, you can increase size. This inverse relationship keeps your dollar risk per trade consistent regardless of market conditions.
Use the Average True Range (ATR) on the daily chart as your sizing denominator. Calculate your maximum dollar risk per trade (typically 1-2% of account equity), then divide by the current ATR to determine your position size. For example, if you risk 00 per trade and the 14-day ATR on SPY is .00, your maximum position is 100 shares.
On high-volatility days (VIX above 25 or ATR at 1.5x its 20-day average), cut your standard position size by 50%. On low-volatility days (VIX below 14 or ATR at 0.7x its 20-day average), you can increase size by 25-30%. This dynamic sizing approach keeps your equity curve smooth and prevents catastrophic drawdowns during volatility spikes.
ThinkScript: Morning Volatility Dashboard
Below is a ThinkScript study that creates a multi-label dashboard on your ThinkOrSwim chart. It displays the current VIX level, VIX term structure, the 14-day ATR, squeeze status, and relative volume. All five critical morning metrics visible in one glance. Add this to your daily SPY or ES chart as labels.
# Morning Volatility Dashboard
# Displays VIX, ATR, Squeeze Status, and Relative Volume
# Add to SPY or ES daily chart as labels
# --- VIX Level ---
def vixClose = close("VIX");
AddLabel(yes, "VIX: " + Round(vixClose, 2),
if vixClose < 15 then Color.GREEN
else if vixClose < 25 then Color.YELLOW
else Color.RED);
# --- VIX Term Structure ---
def vix3m = close("VIX3M");
def termStructure = vixClose - vix3m;
AddLabel(yes, "Term: " +
(if termStructure > 0 then "BACKWARDATION" else "CONTANGO") +
" (" + Round(termStructure, 2) + ")",
if termStructure > 0 then Color.RED else Color.GREEN);
# --- 14-Day ATR ---
def atrValue = Round(ATR(14), 2);
def atr20Avg = Average(ATR(14), 20);
def atrRatio = atrValue / atr20Avg;
AddLabel(yes, "ATR(14): " + atrValue +
" (" + AsPercent(atrRatio - 1) + " vs avg)",
if atrRatio > 1.3 then Color.RED
else if atrRatio < 0.8 then Color.CYAN
else Color.YELLOW);
# --- Squeeze Status ---
def bbUpper = BollingerBands().UpperBand;
def bbLower = BollingerBands().LowerBand;
def kcUpper = KeltnerChannels().Upper_Band;
def kcLower = KeltnerChannels().Lower_Band;
def sqzOn = bbUpper < kcUpper and bbLower > kcLower;
def sqzCount = if sqzOn then sqzCount[1] + 1 else 0;
AddLabel(yes, "Squeeze: " +
(if sqzOn then "ON (" + sqzCount + " bars)"
else "OFF"),
if sqzOn then Color.RED else Color.GREEN);
# --- Relative Volume ---
def avgVol = Average(volume, 20);
def relVol = if avgVol > 0 then Round((volume / avgVol) * 100, 0) else 0;
AddLabel(yes, "RelVol: " + relVol + "%",
if relVol > 150 then Color.GREEN
else if relVol < 70 then Color.GRAY
else Color.YELLOW);
# --- Suggested Position Size Adjustment ---
AddLabel(yes, "Size Adj: " +
(if vixClose > 25 then "50% REDUCED"
else if vixClose > 20 then "75% NORMAL"
else if vixClose < 14 then "125% INCREASED"
else "100% STANDARD"),
if vixClose > 25 then Color.RED
else if vixClose < 14 then Color.CYAN
else Color.WHITE);High Volatility vs Low Volatility Day Trading
Your entire trading approach must shift based on the volatility regime you identified in your morning routine. High-volatility and low-volatility days are different environments requiring different strategies, different sizing, and different psychological approaches. Trading the same way in both regimes is a guaranteed path to inconsistency.
| Factor | Low Volatility (VIX < 15) | High Volatility (VIX > 25) |
|---|---|---|
| Position Size | Standard to 1.25x | 0.5x to 0.75x standard |
| Stop Distance | Tight (0.5-1x ATR) | Wide (1.5-2.5x ATR) |
| Profit Targets | Modest (1-1.5x risk) | Extended (2-4x risk) |
| Primary Strategy | Mean-reversion, fades | Trend-following, breakouts |
| Trade Frequency | 4-8 trades per day | 1-3 high-conviction trades |
| Time in Trade | 5-20 minutes | 30-90 minutes |
| Best Setups | Range fades at VB levels | Breakout and retest entries |
| Gap Strategy | Fade gaps toward fill | Trade in gap direction |
| Overnight Holds | Acceptable with stops | Avoid unless hedged |
| Options Strategy | Sell premium (iron condors) | Buy premium (straddles, debit spreads) |
The most dangerous mistake is applying low-volatility habits to a high-volatility day. Tight stops that work perfectly when SPY moves per day will get you stopped out repeatedly when SPY is moving per day. Conversely, wide stops on a low-volatility day mean you are risking far too much relative to your potential reward.
Reading the Volatility Box Morning Email
Volatility Box subscribers receive a morning email before the market open containing the calculated levels for both the hourly and daily models. This email is a critical component of your morning routine because it delivers the statistical framework directly to your inbox. No manual calculations or chart drawing required.
When you open the email, focus on three elements first. The daily upper and lower levels define your maximum expected range for approximately 70-75% of trading days. The hourly levels provide intraday rotation targets for shorter-term trades. And the model directional bias tells you whether the statistical edge favors long or short trades at the open.
Cross-reference the Volatility Box levels with the VIX and squeeze data from your earlier steps. If the VIX is elevated and a squeeze is firing, the daily Volatility Box levels are more likely to be tested or breached. If the VIX is low and no squeeze is active, price will likely stay well within the levels, making the hourly model rotations your primary trading framework for the day.
Common Morning Routine Mistakes
Even traders who build a morning routine often sabotage it with avoidable errors. The most common mistake is rushing through the process. If you are spending less than 5 minutes, you are skipping critical data points. If you are spending more than 20 minutes, you are over-analyzing and creating paralysis. The sweet spot is 8-12 minutes of focused analysis.
The second critical mistake is ignoring the VIX term structure and only checking the VIX level. A VIX at 18 in contango is a completely different environment than a VIX at 18 that just dropped from 28 and is in backwardation. The term structure provides context that the raw number alone cannot deliver. Always check VIX relative to VIX3M.
Other frequent mistakes include: not adjusting position size for the current volatility regime, ignoring overnight session data and only referencing the prior regular session close, skipping the squeeze check because no squeeze has been active recently, and failing to document your morning analysis in a trading journal for later review and improvement.
Finally, do not check Twitter, Discord, or financial news before completing your own independent analysis. Other opinions will anchor your bias before you have objectively assessed the data. Complete your 5-step process first, form your own thesis, and only then review external commentary to see if you missed anything material.
Tools for Your Morning Volatility Analysis
Building an effective morning routine requires the right tools working together. The combination of ThinkOrSwim native features with specialized volatility tools creates a complete analytical framework. Below are the core tools referenced throughout this guide that form the foundation of a professional-grade morning volatility process.
ThinkOrSwim provides the charting platform, VIX data, ATR calculations, and squeeze indicators natively. The Volatility Box adds statistically-modeled support and resistance levels recalculated each session. Together, these tools deliver every data point in your 5-step morning checklist without needing any additional software or paid data feeds beyond your TOS platform and Volatility Box subscription.
Ready to Trade With an Edge?
Join 40,000+ traders using institutional-grade tools for ThinkOrSwim.
Get the Bundle