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.
# === 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.
# === 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);
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
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;"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);
just adjust the scaler and you will be good as GOLD. Quick Rules You Can Use TomorrowThanks 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;"
| Level | Ratio | Action (next 1–10 days) |
|---|---|---|
| VVIX/VIX ≥ 9.0 | VVIX/VIX | Buy VIX calls or UVXY → expect 50–200% spike |
| VVIX/VIX ≤ 5.8 | VVIX/VIX | Sell VIX premium / buy SPY → calm is coming |
| VIX > 35 & VIX/VVIX > 0.30 | VIX/VVIX | Cover shorts, buy SPY → bounce very likely |
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.just adjust the scaler and you will be good as GOLD. Quick Rules You Can Use Tomorrow
Level Ratio Action (next 1–10 days) VVIX/VIX ≥ 9.0 VVIX/VIX Buy VIX calls or UVXY → expect 50–200% spike VVIX/VIX ≤ 5.8 VVIX/VIX Sell VIX premium / buy SPY → calm is coming VIX > 35 & VIX/VVIX > 0.30 VIX/VVIX Cover 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.
How did you add the scale into the script? can you share with me the final script please? thanks
# === 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);
If you trade the SP500 /ES or spx here is a good one tooHow did you add the scale into the script? can you share with me the final script please? thanks
# 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);
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.just adjust the scaler and you will be good as GOLD. Quick Rules You Can Use Tomorrow
Level Ratio Action (next 1–10 days) VVIX/VIX ≥ 9.0 VVIX/VIX Buy VIX calls or UVXY → expect 50–200% spike VVIX/VIX ≤ 5.8 VVIX/VIX Sell VIX premium / buy SPY → calm is coming VIX > 35 & VIX/VVIX > 0.30 VIX/VVIX Cover 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.
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.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.
| Ratio | Best For | What It Detects |
|---|---|---|
| VIX/VVIX | Stability | Is panic accelerating? |
| VVIX/VIX | Fragility | Is the volatility structure unstable? |
# === 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
);
| VIX > 35 & VIX/VVIX > 0.30 | VIX/VVIX | Cover shorts, buy SPY → bounce very likely |
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.Thanks for the details in this post. So for the specific values in the earlier post:
VIX > 35 & VIX/VVIX > 0.30 VIX/VVIX Cover 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?
| Ratio Level | Market Meaning |
|---|---|
| Above 9–10 | Volatility traders expect big volatility expansion |
| 6–9 | Normal volatility pricing |
| Below 6 | Volatility complacency |
| VIX | VVIX | Ratio |
|---|---|---|
| 14 | 105 | 7.5 (normal) |
| 15 | 150 | 10 (volatility stress) |
| 20 | 110 | 5.5 (calm volatility expectations) |
| Index | Typical Range |
|---|---|
| VIX | 10–40 |
| VVIX | 70–180 |
# 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);
| Thread starter | Similar threads | Forum | Replies | Date |
|---|---|---|---|---|
| I | VVIX SMA "NaN" Issue | Questions | 1 | |
| B | Possible to Calculate VIX value on underlying stock? | Questions | 1 | |
| R | AO, MACD and RSI of VIX in SPY chart | Questions | 3 | |
| Q | VIX MTF Label | Questions | 5 | |
| R | VIX put/call volume ratio symbol | Questions | 2 |
Start a new thread and receive assistance from our community.
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.
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.