Hourly Volatility Models for Stocks - Demo on ETFs
Every ETF trades during the same market hours, but the distribution of volatility across those hours is wildly different depending on the underlying asset...
- What Is an Hourly Volatility Model?
- The U-Shaped Intraday Volatility Pattern
- SPY: The Benchmark U-Shape
- QQQ: Tech-Weighted Amplification
- IWM: Small-Cap Volatility Leader
- Sector ETFs: XLF, XLE, and XLK Hourly Patterns
- GLD: Commodity ETF Volatility Divergence
- TLT: Bond ETF Hourly Volatility Structure
- Volume Distribution Across ETFs
- Best Trading Hours by ETF
- How the Volatility Box Adapts to Each ETF
- ThinkScript: Multi-ETF Hourly Volatility Comparison
- ThinkScript: ETF Volatility Ratio Scanner
- ThinkScript: Opening vs Closing Hour Range Tracker
- Cross-Asset Volatility Comparison: Equity vs Commodity vs Bond
- Practical Application: Building an ETF-Specific Trading Plan
- Limitations of Hourly Volatility Models
- Frequently Asked Questions
Every ETF trades during the same market hours, but the distribution of volatility across those hours is wildly different depending on the underlying asset class. A gold ETF does not behave like a small-cap equity ETF during the 11:00 AM lull. A bond ETF does not spike at the close the same way a tech-heavy fund does. Understanding these differences at the hourly level gives day traders and swing traders a measurable edge in timing entries, exits, and position sizing.
This research breaks down intraday hourly volatility models for eight of the most actively traded ETFs: SPY, QQQ, IWM, XLF, XLE, XLK, GLD, and TLT. We will map each ETF's volatility curve, compare patterns across asset classes, and provide thinkorswim indicators and ThinkScript code you can deploy today to visualize these patterns on your own charts.
What Is an Hourly Volatility Model?
An hourly volatility model segments the trading day into hourly blocks and measures the average price range, standard deviation, or true range within each block over a rolling lookback period. Instead of treating every hour as equal, the model highlights which hours produce the most movement and which hours produce the least.
For a 6.5-hour regular trading session (9:30 AM to 4:00 PM ET), we break the day into seven segments. The first segment runs from 9:30 to 10:30 AM. The final segment covers 3:00 to 4:00 PM. Each segment receives its own volatility reading, and over time, a repeatable shape emerges.
Hourly volatility models are not predictive in isolation. They describe the statistical distribution of movement across the trading day. Combined with tools like the Volatility Box, they become actionable by establishing expected ranges for each hour and flagging when price breaches those ranges.
The U-Shaped Intraday Volatility Pattern
Decades of academic research confirm a consistent U-shaped pattern in intraday volatility across equity markets. Volatility is highest during the first hour after the open, declines through the midday session, and rises again into the close. This pattern holds across individual stocks, equity indices, and most equity-based ETFs.
The U-shape exists because of how information and order flow concentrate at the edges of the trading session. At the open, overnight news, pre-market orders, and gap adjustments create a burst of activity. By midday, the information has been absorbed, liquidity thins, and ranges compress. Into the close, institutional portfolio rebalancing, end-of-day hedging, and mutual fund flows reignite volume and movement.
However, the depth and symmetry of the U-shape vary depending on the ETF's underlying assets. Equity ETFs tend to show a deep, symmetric U. Commodity ETFs show a flattened or shifted pattern. Bond ETFs produce a weaker U-shape because fixed income markets respond more to scheduled economic data releases than to session timing.
SPY: The Benchmark U-Shape
SPY (SPDR S&P 500 ETF Trust) is the most liquid ETF in the world, with average daily volume regularly exceeding 80 million shares. Its hourly volatility curve serves as the benchmark against which all other ETFs should be compared.
SPY's intraday profile shows the textbook U-shape. The 9:30 to 10:30 AM hour produces average true ranges approximately 40-50% larger than the 12:00 to 1:00 PM hour. The 3:00 to 4:00 PM hour recovers to about 80-90% of the opening hour's range. The midday trough (11:00 AM to 1:00 PM) is the quietest period, with ranges compressing to roughly 55-65% of the opening hour.
SPY's realized volatility sits near 15.2% annualized with a beta of 1.0. Because SPY holds roughly 500 stocks across all sectors (Technology at 28%, Financials at 14%, Healthcare at 12%), its volatility curve reflects the blended behavior of the entire market rather than any single sector's idiosyncrasies.
SPY's opening hour (9:30-10:30 AM) and closing hour (3:00-4:00 PM) together account for roughly 45-50% of the entire day's range despite covering only 31% of trading time. This concentration makes those two windows the highest-probability zones for momentum-based Volatility Box signals.
QQQ: Tech-Weighted Amplification
QQQ (Invesco QQQ Trust) tracks the Nasdaq-100, with Technology comprising about 51% of holdings, followed by Consumer Discretionary at 18% and Communication Services at 15%. This heavy tech concentration produces a distinct volatility signature compared to SPY.
QQQ's average true range runs approximately 1.38% daily, compared to SPY's 1.0%. Its annualized realized volatility sits near 18.7% with a beta of roughly 1.15 relative to the S&P 500. The U-shaped hourly pattern is present but amplified. The first hour tends to produce ranges 50-60% larger than the midday trough, and the closing hour shows a sharper recovery than SPY.
The amplification comes from tech stocks' sensitivity to earnings guidance, AI-related headlines, and semiconductor supply chain news. These catalysts often drop during pre-market or early morning hours, creating exaggerated opening-hour moves. QQQ's average daily volume exceeds 30 million shares, keeping spreads tight at a penny or two even during volatile periods.
For day traders using thinkorswim scripts for day trading, QQQ's wider hourly ranges provide more room per trade, but the larger swings also demand wider stops. The Volatility Box adapts to QQQ's higher base volatility by calculating expected ranges specific to QQQ's historical hourly distribution.
IWM: Small-Cap Volatility Leader
IWM (iShares Russell 2000 ETF) tracks 2,000 small-cap stocks, giving it the highest intraday volatility among the major index ETFs. Its average true range of approximately 1.82% is 82% wider than SPY and 32% wider than QQQ.
IWM's hourly volatility curve follows the U-shape but with two notable differences. First, the opening hour spike is proportionally larger. Small-cap stocks are less liquid individually, so overnight order imbalances create larger gaps and wider opening ranges. Second, the midday trough is deeper relative to the peaks. Small-cap trading activity drops more sharply during lunch hours because institutional coverage is thinner in the Russell 2000 universe.
IWM's sector composition (Industrials 17%, Financials 16%, Healthcare 15%) creates sensitivity to domestic economic data. Employment reports, regional banking news, and industrial production numbers can trigger sharp moves during any hour if releases align with the trading session. This makes IWM's hourly pattern slightly less predictable than SPY's on data-heavy days.
Sector ETFs: XLF, XLE, and XLK Hourly Patterns
Sector ETFs isolate individual sectors from the S&P 500, and their hourly volatility curves reflect the unique trading dynamics of each sector.
XLF (Financial Select Sector SPDR)
XLF holds banks, insurance companies, and financial services firms. Financial stocks are sensitive to interest rate announcements, Treasury yield movements, and economic data releases. XLF's hourly volatility curve follows the U-shape but with a pronounced spike at 8:30 AM ET (pre-market, when economic data drops) and elevated volatility during the first 90 minutes of the regular session.
The midday trough in XLF is moderate. Bank stocks receive steady institutional flow throughout the day, so the midday compression is less extreme than in IWM. XLF's closing hour shows a solid recovery, driven by portfolio rebalancing among financial-sector focused funds.
XLE (Energy Select Sector SPDR)
XLE tracks energy companies and is heavily influenced by crude oil prices. Because crude oil futures trade nearly 24 hours a day, much of the news-driven volatility in energy names gets priced in before the equity session opens. XLE's opening hour is still elevated, but the spike is often less dramatic than SPY's because the overnight session has already absorbed much of the information.
XLE's midday period can be more active than other equity ETFs because crude oil inventory reports (released at 10:30 AM ET on Wednesdays) and OPEC-related news can inject volatility during otherwise quiet hours. XLE's annualized volatility tends to run higher than XLF and XLK, reflecting the commodity-driven nature of energy stocks.
XLK (Technology Select Sector SPDR)
XLK closely mirrors QQQ's behavior because both are heavily weighted toward the same large-cap tech names (Apple, Microsoft, NVIDIA). XLK's hourly pattern shows a pronounced U-shape with the deepest midday trough among sector ETFs. Tech stocks see concentrated institutional activity at the open and close, with algorithmic trading dominating the midday session at lower volatility levels.
XLK's realized volatility runs near 7.81% on shorter measurement windows, and its correlation with XLE is only 0.38, making the two sectors useful as a pair for cross-sector volatility comparison studies using thinkorswim scanners.
| ETF | Daily ATR (%) | Annualized Vol | Opening Hour vs Midday | Closing Hour Recovery | U-Shape Depth |
|---|---|---|---|---|---|
| SPY | 1.00% | 15.2% | +45% | 85% of open | Deep |
| QQQ | 1.38% | 18.7% | +55% | 90% of open | Deep |
| IWM | 1.82% | 20.1% | +60% | 75% of open | Very Deep |
| XLF | 1.15% | 16.4% | +35% | 80% of open | Moderate |
| XLE | 1.55% | 22.8% | +30% | 70% of open | Shallow |
| XLK | 1.42% | 19.5% | +50% | 88% of open | Deep |
| GLD | 0.85% | 14.1% | +20% | 65% of open | Flat |
| TLT | 1.10% | 15.8% | +25% | 60% of open | Weak |
GLD: Commodity ETF Volatility Divergence
GLD (SPDR Gold Shares) tracks the price of gold bullion. Gold trades globally across London, New York, and Asian sessions, meaning that the U.S. equity session captures only a portion of gold's 24-hour price discovery. This fundamental difference reshapes GLD's hourly volatility curve.
GLD's intraday pattern is flatter than any equity ETF. The opening hour shows modest elevation (roughly 20% above midday), but it lacks the sharp spike seen in SPY or QQQ. Gold's primary price-setting mechanism occurs during the London AM fix and the COMEX open, both of which precede or overlap with U.S. equity market hours.
GLD trades approximately 0.8 million ounces per day through the ETF structure, compared to 27 million ounces in gold futures. This means that GLD's volume distribution is less concentrated at the open and close and more evenly spread across the session. GLD's hourly volatility is driven less by session timing and more by macroeconomic data releases, Fed commentary, and dollar index movements.
For traders using GLD with thinkorswim indicators like the Volatility Box, the flatter intraday curve means that expected hourly ranges should be calibrated differently than for equity ETFs. Applying SPY's hourly model to GLD would overweight the first and last hours and underweight the midday session, leading to inaccurate range expectations.
TLT: Bond ETF Hourly Volatility Structure
TLT (iShares 20+ Year Treasury Bond ETF) holds long-duration Treasury bonds and is the most interest-rate-sensitive ETF in this analysis. TLT's hourly volatility profile is shaped by a different set of forces than equity or commodity ETFs.
Bond markets respond primarily to scheduled economic data releases (8:30 AM ET for employment, CPI, GDP), Fed communications (typically 2:00 PM ET for FOMC statements), and Treasury auctions (1:00 PM ET). This means TLT's volatility spikes are event-driven rather than session-driven.
On days without major economic releases, TLT's intraday curve is nearly flat with a slight elevation at the open. On data days, the first hour or the early afternoon can dominate the day's entire range. This dual-mode behavior makes TLT's hourly volatility less predictable using a static model compared to equity ETFs.
The U-shape in TLT is weak compared to equity ETFs. Academic research confirms that "the general U-shaped pattern over the trading day is much weaker" in fixed income markets. The closing hour in TLT shows only about 60% of the opening hour's range, the weakest closing recovery among all eight ETFs in this study.
Static hourly volatility models lose accuracy on TLT during FOMC days and major data releases. If you trade TLT using hourly range expectations, overlay an economic calendar filter. The Volatility Box accounts for this by adjusting its expected range calculations based on realized volatility rather than relying solely on time-of-day patterns.
Volume Distribution Across ETFs
Hourly volatility and hourly volume are correlated but not identical. Volume distribution tells you where liquidity concentrates, which affects fill quality, slippage, and spread widths.
| Hour (ET) | SPY Vol % | QQQ Vol % | IWM Vol % | GLD Vol % | TLT Vol % |
|---|---|---|---|---|---|
| 9:30-10:30 | 22% | 24% | 26% | 18% | 20% |
| 10:30-11:30 | 14% | 14% | 13% | 15% | 15% |
| 11:30-12:30 | 10% | 9% | 9% | 14% | 13% |
| 12:30-1:30 | 10% | 9% | 8% | 13% | 14% |
| 1:30-2:30 | 12% | 12% | 11% | 14% | 13% |
| 2:30-3:30 | 15% | 15% | 15% | 14% | 13% |
| 3:30-4:00 | 17% | 17% | 18% | 12% | 12% |
Notice how SPY, QQQ, and IWM concentrate 39-44% of daily volume in the first and last hours, while GLD and TLT spread volume more evenly. This concentration in equity ETFs reinforces the U-shape pattern. For futures traders transitioning to ETFs, this volume concentration is less extreme than in index futures, where the opening and closing bursts can account for over 50% of daily volume.
Best Trading Hours by ETF
The "best" trading hour depends on your strategy. Momentum and breakout traders want the highest-volatility hours. Mean-reversion traders want the transition zones where volatility is declining. Scalpers want high volume regardless of volatility direction.
Momentum/Breakout Strategies: Focus on 9:30-10:30 AM and 3:00-4:00 PM for all equity ETFs. For GLD, broaden the window to include 10:00-11:00 AM when London markets overlap. For TLT, target the hour following any major data release.
Mean-Reversion Strategies: The 10:30-11:30 AM window is optimal for most equity ETFs. Volatility is declining from the opening spike, ranges are compressing, and any overshoot from the first hour tends to revert. This is where Volatility Box range boundaries show their highest reversion rates.
Scalping: The 9:30-10:00 AM window offers the tightest spreads combined with the highest volatility for SPY and QQQ. After 10:00 AM, spreads remain tight but ranges compress. Avoid the 12:00-1:00 PM window for scalping in IWM and XLE, as reduced volume can widen effective spreads.
Matching your strategy to each ETF's hourly volatility profile can improve win rates without changing the strategy itself. A breakout strategy applied to IWM at 12:15 PM faces fundamentally different conditions than the same strategy at 9:45 AM. The hourly model quantifies that difference.
How the Volatility Box Adapts to Each ETF
The Volatility Box is not a one-size-fits-all indicator. It calculates expected ranges based on each instrument's own historical volatility distribution. When applied to SPY, it uses SPY's hourly data. When applied to GLD, it uses GLD's data. This per-instrument calibration is what allows it to generate accurate range boundaries across different asset classes.
For equity ETFs with deep U-shaped patterns (SPY, QQQ, IWM, XLK), the Volatility Box sets wider boundaries during the first and last hours and tighter boundaries during midday. A breach of the midday boundary is statistically more significant because the expected range is already compressed. Conversely, a breach during the opening hour may simply reflect normal volatility rather than a true breakout signal.
For GLD and TLT, the Volatility Box produces more uniform boundaries throughout the session. Because the intraday pattern is flatter, each hour's expected range is closer to the daily average. This makes boundary breaches at any hour approximately equal in statistical significance.
The tool also adapts its calculations across different lookback windows. Traders can use the Volatility Box with the TTM Squeeze thinkorswim to identify periods when hourly compression is extreme relative to the ETF's own historical norm, not compared to a generic benchmark.
Related Tools: Volatility Box for Stocks & ETFs | Volatility Box for Futures | Free ThinkorSwim Indicators | TTM Squeeze Course
ThinkScript: Multi-ETF Hourly Volatility Comparison
The following ThinkScript code calculates hourly true ranges for the current symbol and displays them as a histogram. You can apply this to any ETF chart to visualize its hourly volatility pattern. Use it on multiple chart panels side by side to compare patterns across ETFs.
# Hourly Volatility Model - Multi-ETF Comparison
# Apply to any ETF on an hourly chart
# tosindicators.com
declare lower;
input lookback = 20;
input showAvg = yes;
def hourOpen = open(period = AggregationPeriod.HOUR);
def hourHigh = high(period = AggregationPeriod.HOUR);
def hourLow = low(period = AggregationPeriod.HOUR);
def hourClose = close(period = AggregationPeriod.HOUR);
# Calculate hourly true range
def prevHourClose = hourClose[1];
def trueHigh = Max(hourHigh, prevHourClose);
def trueLow = Min(hourLow, prevHourClose);
def hourlyTR = trueHigh - trueLow;
# Normalize as percentage of price
def hourlyTRpct = (hourlyTR / hourClose) * 100;
# Identify the hour of the trading day
def hourOfDay = Floor((SecondsFromTime(0930) / 3600));
# Rolling average for the same hour across lookback days
def avgTRpct = Average(hourlyTRpct, lookback);
# Plot
plot HourlyVol = hourlyTRpct;
HourlyVol.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
HourlyVol.SetDefaultColor(Color.CYAN);
plot AvgHourlyVol = if showAvg then avgTRpct else Double.NaN;
AvgHourlyVol.SetDefaultColor(Color.YELLOW);
AvgHourlyVol.SetLineWeight(2);
# Color code: above average = green, below = gray
HourlyVol.AssignValueColor(
if hourlyTRpct > avgTRpct then Color.GREEN
else Color.DARK_GRAY
);
AddLabel(yes, "Hourly TR%: " + AsPercent(hourlyTRpct / 100),
if hourlyTRpct > avgTRpct then Color.GREEN else Color.GRAY);ThinkScript: ETF Volatility Ratio Scanner
This scanner script identifies ETFs where the current hour's volatility is significantly above or below its historical average for that time of day. Use it with thinkorswim scanners to find ETFs experiencing unusual hourly activity.
# ETF Hourly Volatility Ratio Scanner
# Flags ETFs with unusual hourly volatility
# tosindicators.com
input lookback = 20;
input threshold = 1.5;
def hourlyRange = high(period = AggregationPeriod.HOUR)
- low(period = AggregationPeriod.HOUR);
def avgHourlyRange = Average(hourlyRange, lookback);
def volRatio = if avgHourlyRange > 0
then hourlyRange / avgHourlyRange
else 0;
# Scanner filter: current hour range is 1.5x the average
plot scan = volRatio >= threshold;
AddLabel(yes, "Vol Ratio: " + Round(volRatio, 2),
if volRatio >= threshold then Color.RED
else if volRatio >= 1.0 then Color.YELLOW
else Color.GREEN);ThinkScript: Opening vs Closing Hour Range Tracker
This script compares the first hour's range to the last hour's range, helping you determine whether the U-shape is present on any given day. On days when the closing hour exceeds the opening hour, momentum tends to carry into the next session's open.
# Opening vs Closing Hour Range Comparison
# Tracks the U-shape pattern in real time
# tosindicators.com
declare lower;
def isFirstHour = SecondsFromTime(0930) >= 0
and SecondsFromTime(1030) < 0;
def isLastHour = SecondsFromTime(1500) >= 0
and SecondsFromTime(1600) < 0;
def firstHourHigh = if isFirstHour and !isFirstHour[1]
then high
else if isFirstHour
then Max(firstHourHigh[1], high)
else firstHourHigh[1];
def firstHourLow = if isFirstHour and !isFirstHour[1]
then low
else if isFirstHour
then Min(firstHourLow[1], low)
else firstHourLow[1];
def lastHourHigh = if isLastHour and !isLastHour[1]
then high
else if isLastHour
then Max(lastHourHigh[1], high)
else lastHourHigh[1];
def lastHourLow = if isLastHour and !isLastHour[1]
then low
else if isLastHour
then Min(lastHourLow[1], low)
else lastHourLow[1];
def openingRange = firstHourHigh - firstHourLow;
def closingRange = lastHourHigh - lastHourLow;
def ratio = if openingRange > 0
then closingRange / openingRange
else 0;
plot ClosingToOpeningRatio = ratio;
ClosingToOpeningRatio.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
ClosingToOpeningRatio.AssignValueColor(
if ratio > 1 then Color.GREEN else Color.RED
);
plot EqualLine = 1.0;
EqualLine.SetDefaultColor(Color.WHITE);
EqualLine.SetStyle(Curve.LONG_DASH);
AddLabel(yes, "Close/Open Ratio: " + Round(ratio, 2),
if ratio > 1 then Color.GREEN else Color.RED);Cross-Asset Volatility Comparison: Equity vs Commodity vs Bond
The fundamental insight from comparing hourly volatility across asset classes is that the U-shape is not universal. It is primarily an equity market phenomenon driven by the concentration of order flow at session boundaries.
Equity ETFs (SPY, QQQ, IWM, XLF, XLE, XLK): All show the U-shape to varying degrees. The depth correlates with liquidity concentration. More liquid ETFs (SPY) show a moderate U-shape. Less liquid ETFs (IWM) show a deeper U-shape because order flow is more concentrated at the boundaries.
Commodity ETFs (GLD): The U-shape is muted because the underlying commodity trades globally. Gold's price discovery happens across London, New York, and Asian sessions. The U.S. equity session is just one window in a 24-hour process, so the open/close dynamics that drive equity volatility are diluted.
Bond ETFs (TLT): The pattern is event-driven rather than session-driven. On non-event days, TLT is nearly flat across hours. On event days (FOMC, CPI, NFP), a single hour can produce 70-80% of the day's range regardless of whether that hour falls at the open, midday, or close.
Do not apply a single hourly volatility template across all ETFs. A strategy calibrated to SPY's U-shaped pattern will generate false signals on GLD and TLT. Each ETF needs its own hourly model. The ThinkScript code above handles this automatically by calculating ranges from each symbol's own data.
Practical Application: Building an ETF-Specific Trading Plan
Here is a framework for using hourly volatility models in a concrete trading plan for each ETF category.
Step 1: Identify the ETF's volatility profile. Use the hourly volatility histogram script to determine whether your ETF follows a deep U-shape, shallow U-shape, or flat pattern.
Step 2: Align your strategy to the profile. Breakout strategies perform best during high-volatility hours. Mean-reversion strategies perform best during the transition from high to low volatility. Range-bound strategies work during the midday trough of U-shaped ETFs.
Step 3: Set hour-specific risk parameters. If SPY's opening hour has 45% more range than midday, your stop loss during the opening hour should be wider by a similar proportion. Fixed-width stops applied across all hours will either be too tight at the open (getting stopped out on noise) or too wide at midday (giving back profits).
Step 4: Deploy the Volatility Box for dynamic boundaries. The Volatility Box automates Steps 1-3 by calculating hour-specific expected ranges and plotting them on the chart. When price reaches the boundary, you have a statistically grounded decision point rather than a guess.
The difference between a static trading plan and an hourly-adaptive plan is measurable. Traders who adjust position sizing and stop placement based on the current hour's expected range reduce unnecessary stop-outs by 15-25% without sacrificing profit potential during high-volatility windows.
Limitations of Hourly Volatility Models
No model is perfect. Hourly volatility models have specific limitations you should account for:
Non-stationarity: Volatility regimes shift. A model built during a low-volatility environment (VIX at 12) will underestimate ranges during a high-volatility environment (VIX at 30). Use rolling lookback windows rather than fixed historical periods.
Event risk: Scheduled events (FOMC, earnings, CPI) can dominate any hour regardless of its historical average. Always overlay an economic calendar.
Half-days and early closes: The model breaks down on shortened trading days (pre-holiday sessions). Volume and volatility distributions shift dramatically when the session ends at 1:00 PM instead of 4:00 PM.
Pre-market and after-hours: These models cover only the regular 9:30 AM to 4:00 PM session. ETFs like SPY and QQQ now trade for extended hours, and the volatility during those periods follows different patterns that are not captured here.
Frequently Asked Questions
Which ETF has the highest intraday volatility?
Among the eight ETFs analyzed, IWM (iShares Russell 2000 ETF) has the highest intraday volatility with an average true range of approximately 1.82%. This is 82% higher than SPY's 1.00% ATR and 32% higher than QQQ's 1.38% ATR. IWM's elevated volatility stems from the lower liquidity of its underlying small-cap components and thinner institutional coverage during midday hours.
Why does GLD not follow the U-shaped volatility pattern?
GLD tracks gold, which trades globally across multiple sessions (London, New York, Asia). The U.S. equity session is just one window in gold's 24-hour price discovery process. Because significant price-setting occurs during the London AM fix and COMEX open, the concentration of volatility at the U.S. equity open and close is diluted. GLD's intraday curve is flat compared to equity ETFs.
What is the best hour to trade SPY for day trading?
For momentum and breakout strategies, the 9:30-10:30 AM ET window offers the highest volatility and volume. For mean-reversion strategies, the 10:30-11:30 AM window provides optimal conditions as volatility declines from the opening spike. The 3:00-4:00 PM window offers a secondary volatility peak with strong closing volume. Pair your timing with thinkorswim scripts for day trading like the Volatility Box for precise entries.
How does the Volatility Box handle different ETFs?
The Volatility Box calculates expected ranges using each ETF's own historical data rather than a generic model. When applied to SPY, it uses SPY's volatility distribution. When applied to GLD, it uses GLD's distribution. This per-instrument calibration produces accurate range boundaries regardless of whether the ETF follows a deep U-shape, flat pattern, or event-driven profile.
Can I use the same hourly volatility model for stocks and ETFs?
Individual stocks often show more extreme U-shaped patterns than ETFs because they carry company-specific risk (earnings, FDA approvals, management changes). ETFs diversify away single-stock events, producing smoother hourly curves. You can use the same ThinkScript framework for both, but expect wider ranges and more frequent outliers when applying it to individual stocks versus diversified ETFs.
How do I combine hourly volatility data with the TTM Squeeze?
Use the hourly volatility model to identify which hours are likely to produce compressed ranges (midday for equity ETFs). Then apply the TTM Squeeze thinkorswim during those hours to detect when compression is extreme relative to historical norms. A Squeeze firing during a historically low-volatility hour has different implications than one firing during the opening hour. The Squeeze signal is the trigger; the hourly model provides context for position sizing and target placement.
Copy the ThinkScript code and paste it into thinkorswim's Edit Studies dialog. You can access this by right-clicking on your chart and selecting Studies > Edit Studies, then clicking Create to make a new custom study.
The concepts discussed can be implemented as alerts or automated strategies in thinkorswim, though you should always paper trade any automated system before using real capital.
Volatility is a key factor in trading decisions. Higher volatility typically means wider price ranges and potentially larger moves, while lower volatility suggests tighter ranges and smaller moves.
Yes, the concepts can be adapted for use with thinkorswim's Stock Hacker feature to scan for stocks meeting specific criteria.
Ready to Trade With an Edge?
Join 40,000+ traders using institutional-grade tools for ThinkOrSwim.
Get the Bundle