VVIX:VIX Ratio

Walshy

New member
VIP
Curious if anyone is aware of a VVIX:VIX ratio indicator on this forum? Something I could then add a standard Bollinger Band to. Thanks in advance.
 
Solution
Curious if anyone is aware of a VVIX:VIX ratio indicator on this forum? Something I could then add a standard Bollinger Band to. Thanks in advance.
Code:
# === VIX / VVIX Ratio with Scaling === #

input symbol1 = "VIX";
input symbol2 = "VVIX";
input scaleFactor = 100;      # <— Adjust this to make the plot appear larger or smaller

# Fetch prices
def vix = close(symbol1);
def vvix = close(symbol2);

# Avoid division by zero
def ratio = if vvix != 0 then vix / vvix else Double.NaN;

# Scaled plot for visibility
plot RatioPlot = ratio * scaleFactor;
RatioPlot.SetDefaultColor(Color.CYAN);
RatioPlot.SetLineWeight(2);

# Label shows the TRUE ratio, not the scaled one
AddLabel(yes, "VIX/VVIX: " + AsText(ratio), Color.CYAN);
AddLabel(yes...
Curious if anyone is aware of a VVIX:VIX ratio indicator on this forum? Something I could then add a standard Bollinger Band to. Thanks in advance.
Code:
# === VIX / VVIX Ratio with Scaling === #

input symbol1 = "VIX";
input symbol2 = "VVIX";
input scaleFactor = 100;      # <— Adjust this to make the plot appear larger or smaller

# Fetch prices
def vix = close(symbol1);
def vvix = close(symbol2);

# Avoid division by zero
def ratio = if vvix != 0 then vix / vvix else Double.NaN;

# Scaled plot for visibility
plot RatioPlot = ratio * scaleFactor;
RatioPlot.SetDefaultColor(Color.CYAN);
RatioPlot.SetLineWeight(2);

# Label shows the TRUE ratio, not the scaled one
AddLabel(yes, "VIX/VVIX: " + AsText(ratio), Color.CYAN);
AddLabel(yes, "Scale x" + scaleFactor, Color.GRAY);
 
Solution

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Code:
# === VIX / VVIX Ratio with Scaling === #

input symbol1 = "VIX";
input symbol2 = "VVIX";
input scaleFactor = 100;      # <— Adjust this to make the plot appear larger or smaller

# Fetch prices
def vix = close(symbol1);
def vvix = close(symbol2);

# Avoid division by zero
def ratio = if vvix != 0 then vix / vvix else Double.NaN;

# Scaled plot for visibility
plot RatioPlot = ratio * scaleFactor;
RatioPlot.SetDefaultColor(Color.CYAN);
RatioPlot.SetLineWeight(2);

# Label shows the TRUE ratio, not the scaled one
AddLabel(yes, "VIX/VVIX: " + AsText(ratio), Color.CYAN);
AddLabel(yes, "Scale x" + scaleFactor, Color.GRAY);
Thanks much, @antwerks. Given that I want the "VVIX / VIX" ratio, I will change your "def ratio" line so it reads, "def ratio = if vix != 0 then vvix / vix else Double.NaN;"
 
Thanks much, @antwerks. Given that I want the "VVIX / VIX" ratio, I will change your "def ratio" line so it reads, "def ratio = if vix != 0 then vvix / vix else Double.NaN;"
just adjust the scaler and you will be good as GOLD. Quick Rules You Can Use Tomorrow


LevelRatioAction (next 1–10 days)
VVIX/VIX ≥ 9.0VVIX/VIXBuy VIX calls or UVXY → expect 50–200% spike
VVIX/VIX ≤ 5.8VVIX/VIXSell VIX premium / buy SPY → calm is coming
VIX > 35 & VIX/VVIX > 0.30VIX/VVIXCover shorts, buy SPY → bounce very likely


Bottom line: Put VVIX/VIX on your main screen and watch 5.8 and 9.0 like a hawk. Only glance at VIX/VVIX when the VIX is already in the 30s–40s and you’re hunting the exact top.
 
Last edited:
just adjust the scaler and you will be good as GOLD. Quick Rules You Can Use Tomorrow


LevelRatioAction (next 1–10 days)
VVIX/VIX ≥ 9.0VVIX/VIXBuy VIX calls or UVXY → expect 50–200% spike
VVIX/VIX ≤ 5.8VVIX/VIXSell VIX premium / buy SPY → calm is coming
VIX > 35 & VIX/VVIX > 0.30VIX/VVIXCover shorts, buy SPY → bounce very likely


Bottom line: Put VVIX/VIX on your main screen and watch 5.8 and 9.0 like a hawk. Only glance at VIX/VVIX when the VIX is already in the 30s–40s and you’re hunting the exact top.
Interesting action rules. If you include standard Bollinger Bands on the ratio, when the ratio pokes above or below the BB, it points to a short term reversal coming.
 
How did you add the scale into the script? can you share with me the final script please? thanks
Code:
# === VIX / VVIX Ratio with Scaling === #

input symbol1 = "VIX";
input symbol2 = "VVIX";
input scaleFactor = 100;      # <— Adjust this to make the plot appear larger or smaller

# Fetch prices
def vix = close(symbol1);
def vvix = close(symbol2);

# Avoid division by zero
def ratio = if vvix != 0 then vix / vvix else Double.NaN;

# Scaled plot for visibility
plot RatioPlot = ratio * scaleFactor;
RatioPlot.SetDefaultColor(Color.CYAN);
RatioPlot.SetLineWeight(2);

# Label shows the TRUE ratio, not the scaled one
AddLabel(yes, "VIX/VVIX: " + AsText(ratio), Color.CYAN);
AddLabel(yes, "Scale x" + scaleFactor, Color.GRAY);
 
How did you add the scale into the script? can you share with me the final script please? thanks
If you trade the SP500 /ES or spx here is a good one too
Code:
# VIX3M/VIX Ratio with Major Pivots Only
# antwerks

declare lower;

# --- Ratio Calculation
def U = close("VIX3M");
def D = close("VIX");
def UDL = U / D;

plot ratio = UDL;
ratio.SetDefaultColor(Color.CYAN);
ratio.SetLineWeight(2);

# --- Reference Levels
plot l1 = 0.8;
plot l2 = 0.9;
l1.SetDefaultColor(Color.RED);
l2.SetDefaultColor(Color.GREEN);

# --- Long-Term Pivot Parameters ---
input pivotLength = 50; # use bigger numbers for fewer signals (try 50–100)
def highestPivot = Highest(ratio, pivotLength);
def lowestPivot  = Lowest(ratio, pivotLength);

# --- Show only the current major pivots ---
def isHighest = ratio == highestPivot;
def isLowest  = ratio == lowestPivot;

plot MajorHigh = if isHighest then ratio else Double.NaN;
plot MajorLow  = if isLowest then ratio else Double.NaN;

MajorHigh.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
MajorHigh.SetDefaultColor(Color.RED);
MajorHigh.SetLineWeight(3);

MajorLow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
MajorLow.SetDefaultColor(Color.GREEN);
MajorLow.SetLineWeight(3);

# --- Labels for quick reading
AddLabel(yes, "Highest Pivot: " + Round(highestPivot, 2), Color.RED);
AddLabel(yes, "Lowest Pivot: " + Round(lowestPivot, 2), Color.GREEN);

 
just adjust the scaler and you will be good as GOLD. Quick Rules You Can Use Tomorrow


LevelRatioAction (next 1–10 days)
VVIX/VIX ≥ 9.0VVIX/VIXBuy VIX calls or UVXY → expect 50–200% spike
VVIX/VIX ≤ 5.8VVIX/VIXSell VIX premium / buy SPY → calm is coming
VIX > 35 & VIX/VVIX > 0.30VIX/VVIXCover shorts, buy SPY → bounce very likely


Bottom line: Put VVIX/VIX on your main screen and watch 5.8 and 9.0 like a hawk. Only glance at VIX/VVIX when the VIX is already in the 30s–40s and you’re hunting the exact top.
Thanks for this @antwerks , just stumbled onto it. One question - is it VIX/VVIX or VVIX/VIX ? The code and the level in your table are different. please clarify. thanks again.
 
Thanks for this @antwerks , just stumbled onto it. One question - is it VIX/VVIX or VVIX/VIX ? The code and the level in your table are different. please clarify. thanks again.
A little confusing sorry I wrote for the VIX/VVIX someone wanted the VVIX/VIX - you can use either in specific circumstances. VIX/VVIX vs VVIX/VIX tells two different stories.
First: What They Represent
  • VIX = implied volatility of S&P 500 options
    → “Price of fear”
  • VVIX = implied volatility of VIX options
    → “Volatility of volatility”
So:
  • VIX = fear level
  • VVIX = instability in fear
VVIX often moves before VIX.
Original Script: ratio VIX / VVIX

What It Measures is Fear relative to volatility-of-volatility.

High ratio → VIX elevated but VVIX not exploding
Low ratio → VVIX elevated relative to VIX
Interpretation of a Falling VIX/VVIX

VVIX rising faster than VIX
--Options traders expect bigger volatility move coming
--Pre-shock or instability condition
This often precedes:
  • Vol spikes
  • Market stress
  • Fast directional moves
Rising VIX/VVIX

VIX high but VVIX stable
--Panic may be stabilizing
--Fear present but not accelerating

When to Use VIX/VVIX, use it when you're looking for:
  • Early warning of volatility expansion
  • Detecting pre-crash instability
  • Timing volatility trades
  • Detecting compression before breakout
It’s a stability gauge.

Inverted: VVIX / VIX
this flips perspective and what it measures -
Vol-of-vol relative to fear.
High ratio → instability in volatility itself
Low ratio → vol regime stable

Rising VVIX/VIX
VVIX rising faster than VIX
→ Volatility structure unstable
→ Market fragile
→ Often precedes sharp moves

This is your “fragility detector.”

Falling VVIX/VIX

VVIX calming relative to VIX
→ Volatility regime stabilizing
→ Often bullish for equities

The Practical Difference

RatioBest ForWhat It Detects
VIX/VVIXStabilityIs panic accelerating?
VVIX/VIXFragilityIs the volatility structure unstable?

They are inverses mathematically,
but psychologically they frame data differently.

Which Should You Use? Depends on purpose.

For Swing Equity Traders (45–90 days)

I prefer VVIX / VIX
Why?
Because rising VVIX/VIX = structural instability in vol.

That usually:
  • Precedes sharp pullbacks
  • Signals market regime shifts
  • Helps you size CSP / CC aggression
It behaves like a regime pressure gauge.

For Volatility Traders

Use VIX / VVIX

Because falling ratio often leads VIX expansion. Better early warning for vol products.

Institutional View is when VVIX rises faster than VIX: That means traders are buying volatility protection on volatility itself. That’s not normal hedging. That’s defensive positioning.

A Practical Read

If:
  • VVIX/VIX trending up
  • VIX still low
That’s a red flag.

If:
  • VVIX/VIX falling
  • VIX elevated
That’s stabilization — often bullish.

Should You Keep Both? Yes.
You can create:
  • One for early instability (VVIX/VIX)
  • One for stabilization (VIX/VVIX)

They’ll mirror, but psychologically they’re easier to interpret in one direction.
If You Want a Cleaner Version, Here’s a dual-mode script:

Code:
# === VIX/VVIX Ratio Engine ===

input invert = yes;   # yes = VVIX/VIX, no = VIX/VVIX
input scaleFactor = 100;

def vix = close("VIX");
def vvix = close("VVIX");

def rawRatio =
    if invert then
        if vix != 0 then vvix / vix else Double.NaN
    else
        if vvix != 0 then vix / vvix else Double.NaN;

plot RatioPlot = rawRatio * scaleFactor;
RatioPlot.SetLineWeight(2);
RatioPlot.SetDefaultColor(Color.CYAN);

AddLabel(yes,
    if invert then "VVIX/VIX: " else "VIX/VVIX: " +
    AsText(rawRatio),
    Color.CYAN
);

Use VVIX/VIX as a regime fragility monitor
Rising = tighten risk
Falling = expand aggression
 

Thanks for the details in this post. So for the specific values in the earlier post:
VIX > 35 & VIX/VVIX > 0.30VIX/VVIXCover shorts, buy SPY → bounce very likely

This is when VIX is really elevated and the volatility index (VIX/VVIX) is dying/low. indicating SPY could bounce soon.. Did I understand that right?
 
Thanks for the details in this post. So for the specific values in the earlier post:
VIX > 35 & VIX/VVIX > 0.30VIX/VVIXCover shorts, buy SPY → bounce very likely

This is when VIX is really elevated and the volatility index (VIX/VVIX) is dying/low. indicating SPY could bounce soon.. Did I understand that right?
yes but here is a more useful VIX–VVIX divergence indicator traders often use. Instead of subtracting them (which is misleading because they’re on different scales), it uses a ratio, which better reflects volatility stress.
It calculates:
VVIX ÷ VIX

This measures how expensive volatility options are relative to volatility itself.
How Traders Interpret It

Ratio LevelMarket Meaning
Above 9–10Volatility traders expect big volatility expansion
6–9Normal volatility pricing
Below 6Volatility complacency


Example

VIXVVIXRatio
141057.5 (normal)
1515010 (volatility stress)
201105.5 (calm volatility expectations)
Why This Works Better
The ratio removes the scale mismatch problem:

IndexTypical Range
VIX10–40
VVIX70–180
Instead of subtracting them, the ratio shows relative pricing of volatility-of-volatility.
Practical Signal Traders Watch

A common pattern before market selloffs:
1️⃣ VVIX rises sharply
2️⃣ VIX barely moves
3️⃣ Ratio spikes above ~9
4️⃣ SPX drops soon after

This is because options traders start buying volatility protection first.
Optional Upgrade (Even Better)

The most powerful version traders use includes:
  • VVIX/VIX ratio
  • 5-day moving average
  • spike detection
  • extreme alerts
It can signal SPX reversals surprisingly well.
Code:
# VIX / VVIX Ratio Indicator
declare lower;
input vixSymbol = "VIX";
input vvixSymbol = "VVIX";

def vix = close(vixSymbol);
def vvix = close(vvixSymbol);

# Ratio calculation
def ratio = vvix / vix;

# Plot ratio
plot VVIX_VIX_Ratio = ratio;
VVIX_VIX_Ratio.SetDefaultColor(Color.YELLOW);
VVIX_VIX_Ratio.SetLineWeight(2);

# Reference levels
plot HighRisk = 9;
HighRisk.SetDefaultColor(Color.RED);
HighRisk.SetStyle(Curve.SHORT_DASH);

plot LowRisk = 6;
LowRisk.SetDefaultColor(Color.GREEN);
LowRisk.SetStyle(Curve.SHORT_DASH);

# Labels
AddLabel(yes, "VVIX/VIX Ratio: " + Round(ratio, 2),
if ratio > 9 then Color.RED
else if ratio < 6 then Color.GREEN
else Color.YELLOW);
 

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
769 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top