VIX Curve

VIX Curve Monitor tracks the shape of the volatility term structure — from VIX9D and spot VIX through VIX3M, VIX6M and the VX futures curve out to month 8 — to show whether a volatility spike is building, fading, or spreading further out the curve.
THE LINES
Main line: VIX ÷ VIX3M (30-day vs 3-month implied volatility)
• Green, below 0.90 — calm, curve in normal contango
• Gray, 0.90–1.00 — stress building
• Red, above 1.00 — backwardation: near-term implied volatility is above longer-term
Second line (optional): VIX ÷ VIX6M, light gray
• Above 1.00 means the longer part of the curve is in backwardation too
Reference lines: 1.00 (solid), 0.90 stress (dotted), 0.80 calm floor (dotted)
MARKERS
Markers print when the main line closes back below 1.00 after a spike:
▲ Green — spike over, after a large spike (peak at or above 1.05)
▲ Gray — spike over, after a small spike, with the chart 10% or more below its 1-year high
● Dot — spike over, after a small spike, with the chart within 5% of its 1-year high
▲ Bright green — confirmed: the ratio closes below 0.90 after a marker
✕ Dark red — failed: the ratio closes back above 1.03 before confirming. The next close below 1.00 re-arms
No marker prints after a small spike while the chart is 5–10% below its high.
A confirmed or failed state stays in the table (and shading) for 21 bars by default. Confirmed ends early if the ratio goes back above 1.00.
THE TABLE
STATUS — overall state of the curve:
• CALM — normal contango
• STRESS BUILDING — ratio between 0.90 and 1.00
• SHORT-TERM PANIC — backwardation at the front only
• INVERSION SPREADING — in backwardation, and back months (VX 2–4) up 10% or more vs their 10-day average, or above 24
• REGIME FEAR — in backwardation, and far months (VX 5–8) up 5% or more vs their 10-day average: the whole curve lifting
SIGNAL — where the marker cycle stands: pending (with the spike peak and which marker is next), spike over, confirmed, or failed
VIX/VIX3M — the main ratio, its state, and the previous close
VIX9D/VIX — near-term (9-day) vs 30-day volatility. Above 1.00 means stress is concentrated in the next several days, often around scheduled events. Display only — not used in markers or status
VIX/VIX6M — the second ratio
VX1/VX2 — whether the futures curve is in backwardation
SPREAD — direction of the back months (rising, stable or falling)
• back VX2–4 — % change vs the 10-day average
• far (months) — % change vs the 10-day average, with month names
VX EXPIRY — the next VX expiration and days remaining
WATCH — during backwardation, how far VIX (and VX1) must fall to return to contango
FLOOR — when not in backwardation, whether the ratio's 20-day lows are rising
Full mode adds VIX, VIX9D and VIX3M levels, the full VX curve (months 1–8), front-to-back slope, VVIX, distance of the back months from the 24 level, and any symbols missing from your data feed.
WHAT'S ORIGINAL
VIX/VIX3M is a widely used ratio. This script builds on it by:
• Classifying each spike by size and by where the chart sits relative to its 1-year high, with a separate rule for each case (including a zone where no marker prints)
• Tracking each spike through a full cycle — spike over, confirmed, or failed — with re-arming after a failure, so repeated whipsaws around 1.00 don't print a marker every time
• Reading the full VX futures curve alongside the ratio, with months 1–8 selected automatically from the date so the curve readings roll themselves
• Separating front-end stress from stress moving into the back and far months
Each component answers a different question: the ratio shows how stressed the front is, the futures rows show how far that stress has spread, and the markers show when a spike has ended.
LIMITATIONS
• Thresholds (1.05, 0.90, 1.03, 10%, 5%, +10%, +5%) are fixed rules, not optimized for any period
• Markers describe the state of the volatility curve. They do not forecast price
• Back- and far-month readings on past bars use the current contracts, so historical STATUS is approximate
• Requires CBOE index data (VIX, VIX3M, VIX6M) and VX futures. Delayed data plans work, but live values lag
DATA NOTES
• Designed for a daily SPX or SPY chart. All markers use the daily close
• Index and VX data are requested on the chart's own timeframe, aligned so each bar uses the same day's index close (VIX indexes close at 4:15pm ET, 15 minutes after SPY/SPX). Without this alignment every historical bar would show the previous day's values. Historical markers reflect values available by 4:15pm that day — no future data is used. On the live bar, values and markers update until the close; a marker near a threshold can change between 4:00 and 4:15pm, so confirm after 4:15pm or reload the chart
• VX contracts for months 1–8 are selected automatically from the date and roll themselves after each expiration. A manual mode is available. Because contracts are chosen from today's date, back/far month readings (and STATUS on past bars) reflect the current contracts. Markers use only VIX/VIX3M and the chart close and are not affected
• If far-month VX contracts are unavailable on your feed, the far row uses VIX6M instead and is labeled "far (VIX6M)"
• If your data plan lacks a symbol, it shows "n/a" — change the prefix in Inputs (CBOE: / CBOE_DLY: / TVC:)
• Optional background shading (off by default): red while in backwardation, gray in the 0.90–1.00 stress zone, faint blue while a marker is pending, and green while confirmed — on the price pane, the indicator pane, or both
• Marker colors are set in Inputs → Marker colors. Line and level styles are in the Style tab
• Thresholds, table colors, table position, text size and the confirmed/failed display length are adjustable
Alerts: spike over (all three types), confirmed, failed, backwardation, inversion spreading, regime fear. Use "Once Per Bar Close" so alerts match the daily-close logic.
For educational and informational purposes only. Not financial advice.
THE LINES
Main line: VIX ÷ VIX3M (30-day vs 3-month implied volatility)
• Green, below 0.90 — calm, curve in normal contango
• Gray, 0.90–1.00 — stress building
• Red, above 1.00 — backwardation: near-term implied volatility is above longer-term
Second line (optional): VIX ÷ VIX6M, light gray
• Above 1.00 means the longer part of the curve is in backwardation too
Reference lines: 1.00 (solid), 0.90 stress (dotted), 0.80 calm floor (dotted)
MARKERS
Markers print when the main line closes back below 1.00 after a spike:
▲ Green — spike over, after a large spike (peak at or above 1.05)
▲ Gray — spike over, after a small spike, with the chart 10% or more below its 1-year high
● Dot — spike over, after a small spike, with the chart within 5% of its 1-year high
▲ Bright green — confirmed: the ratio closes below 0.90 after a marker
✕ Dark red — failed: the ratio closes back above 1.03 before confirming. The next close below 1.00 re-arms
No marker prints after a small spike while the chart is 5–10% below its high.
A confirmed or failed state stays in the table (and shading) for 21 bars by default. Confirmed ends early if the ratio goes back above 1.00.
THE TABLE
STATUS — overall state of the curve:
• CALM — normal contango
• STRESS BUILDING — ratio between 0.90 and 1.00
• SHORT-TERM PANIC — backwardation at the front only
• INVERSION SPREADING — in backwardation, and back months (VX 2–4) up 10% or more vs their 10-day average, or above 24
• REGIME FEAR — in backwardation, and far months (VX 5–8) up 5% or more vs their 10-day average: the whole curve lifting
SIGNAL — where the marker cycle stands: pending (with the spike peak and which marker is next), spike over, confirmed, or failed
VIX/VIX3M — the main ratio, its state, and the previous close
VIX9D/VIX — near-term (9-day) vs 30-day volatility. Above 1.00 means stress is concentrated in the next several days, often around scheduled events. Display only — not used in markers or status
VIX/VIX6M — the second ratio
VX1/VX2 — whether the futures curve is in backwardation
SPREAD — direction of the back months (rising, stable or falling)
• back VX2–4 — % change vs the 10-day average
• far (months) — % change vs the 10-day average, with month names
VX EXPIRY — the next VX expiration and days remaining
WATCH — during backwardation, how far VIX (and VX1) must fall to return to contango
FLOOR — when not in backwardation, whether the ratio's 20-day lows are rising
Full mode adds VIX, VIX9D and VIX3M levels, the full VX curve (months 1–8), front-to-back slope, VVIX, distance of the back months from the 24 level, and any symbols missing from your data feed.
WHAT'S ORIGINAL
VIX/VIX3M is a widely used ratio. This script builds on it by:
• Classifying each spike by size and by where the chart sits relative to its 1-year high, with a separate rule for each case (including a zone where no marker prints)
• Tracking each spike through a full cycle — spike over, confirmed, or failed — with re-arming after a failure, so repeated whipsaws around 1.00 don't print a marker every time
• Reading the full VX futures curve alongside the ratio, with months 1–8 selected automatically from the date so the curve readings roll themselves
• Separating front-end stress from stress moving into the back and far months
Each component answers a different question: the ratio shows how stressed the front is, the futures rows show how far that stress has spread, and the markers show when a spike has ended.
LIMITATIONS
• Thresholds (1.05, 0.90, 1.03, 10%, 5%, +10%, +5%) are fixed rules, not optimized for any period
• Markers describe the state of the volatility curve. They do not forecast price
• Back- and far-month readings on past bars use the current contracts, so historical STATUS is approximate
• Requires CBOE index data (VIX, VIX3M, VIX6M) and VX futures. Delayed data plans work, but live values lag
DATA NOTES
• Designed for a daily SPX or SPY chart. All markers use the daily close
• Index and VX data are requested on the chart's own timeframe, aligned so each bar uses the same day's index close (VIX indexes close at 4:15pm ET, 15 minutes after SPY/SPX). Without this alignment every historical bar would show the previous day's values. Historical markers reflect values available by 4:15pm that day — no future data is used. On the live bar, values and markers update until the close; a marker near a threshold can change between 4:00 and 4:15pm, so confirm after 4:15pm or reload the chart
• VX contracts for months 1–8 are selected automatically from the date and roll themselves after each expiration. A manual mode is available. Because contracts are chosen from today's date, back/far month readings (and STATUS on past bars) reflect the current contracts. Markers use only VIX/VIX3M and the chart close and are not affected
• If far-month VX contracts are unavailable on your feed, the far row uses VIX6M instead and is labeled "far (VIX6M)"
• If your data plan lacks a symbol, it shows "n/a" — change the prefix in Inputs (CBOE: / CBOE_DLY: / TVC:)
• Optional background shading (off by default): red while in backwardation, gray in the 0.90–1.00 stress zone, faint blue while a marker is pending, and green while confirmed — on the price pane, the indicator pane, or both
• Marker colors are set in Inputs → Marker colors. Line and level styles are in the Style tab
• Thresholds, table colors, table position, text size and the confirmed/failed display length are adjustable
Alerts: spike over (all three types), confirmed, failed, backwardation, inversion spreading, regime fear. Use "Once Per Bar Close" so alerts match the daily-close logic.
For educational and informational purposes only. Not financial advice.
Clause de non-responsabilité
Les informations et publications ne sont pas destinées à être, et ne constituent pas, des conseils ou recommandations financiers, d'investissement, de trading ou autres fournis ou approuvés par TradingView. Pour en savoir plus, consultez les Conditions d'utilisation.
Clause de non-responsabilité
Les informations et publications ne sont pas destinées à être, et ne constituent pas, des conseils ou recommandations financiers, d'investissement, de trading ou autres fournis ou approuvés par TradingView. Pour en savoir plus, consultez les Conditions d'utilisation.