Portfolio LabKnowledgeSign inCreate account

Volatility dashboard: methodology

Advanced13 min read · updated 24 October 2026 · 5 sources

The volatility dashboard answers one question: how nervous is the market right now, and how unusual is that? It shows the VIX for maturities from 9 days to 1 year, the VIX futures curve, contango and roll yield, the volatility of the VIX, the SKEW, the volatility premium and the correlation with the stock market. On top of that come signals from the futures curve such as VX30 and Traders-VRP, and Portfolio Lab's own volatility barometer from 0 to 100. This methodology explains each metric as the code calculates it, and how the percentile rank puts it into context.

Indices and the term structure of volatility

The VIX measures the volatility that options on the S&P 500 are pricing in for the next 30 days, annualised and in percentage points. A VIX of 20 means that the market expects volatility of about 20% on an annualised basis. Whaley (2000) called it the “investor fear gauge” because it rises when stocks fall. The basics are covered in the article VIX.

Besides the VIX, the dashboard loads the daily closing values of the same calculation for other maturities, plus two additional indices:

IndexMaturityMeaning
VIX 9 days9 daysreacts faster to events
VIX30 daysbenchmark
VIX 3 months93 daysmedium-term expectation
VIX 6 months186 daysmedium-term expectation
VIX 1 year365 dayslong-term expectation
VVIX–volatility of the VIX itself
SKEW–price of protection against severe market crashes; above 140 is considered high

Plotting the five maturities against the days gives the term structure of volatility. The page shows it for today, a week ago and a month ago (each the last value up to 7 or 30 calendar days earlier). The metric used is the ratio of the VIX to the VIX 3 months: below 1, the curve slopes upwards (contango, the calm normal case). Above 1, short-term fear is higher than medium-term fear (backwardation, typical of stress).

VIX futures curve

You cannot buy the VIX itself, but you can buy futures on it. The dashboard loads the settlement prices of all outstanding monthly contracts on the last trading day (searching back up to seven days) and shows them by days to expiry, together with the curves from a week ago and a month ago. A contract expires on the Wednesday 30 days before the third Friday of the following month; if that day is a holiday, the code tries the preceding days.

For the history of contango and roll yield, the code loads the price series of the contracts over the last three years and uses them to form the first (M1) and second (M2) contract for each trading day. In the last week before expiry (with at most six days to go), the next contract already counts as M1, because investors and products are already rolling by then.

Contango = M2 / M1 − 1
M1, M2
settlement price of the first and second monthly contracts with more than six days to expiry

Roll yield

If the future is above the VIX, a long position loses value when the VIX stays the same: by expiry, the future has to converge on the VIX. The roll yield estimates this effect per month, assuming that the first future approaches today's VIX linearly:

Roll yield per month = (VIX − M1) / M1 · 30 / days to expiry of M1
days to expiry
calendar days until the first contract expires, at least 1

This explains why exchange-traded products on VIX futures have lost so much value over the long run: Whaley (2013) shows that these products delivered heavy losses over the years, mainly through contango and roll losses. The metric is a snapshot; if the VIX changes, so does the result.

Realised volatility and volatility premium

Realised volatility is the actual volatility of the S&P 500: the standard deviation of daily log returns over 21 trading days, annualised with √252 and expressed in percentage points, i.e. on the same scale as the VIX.

RV = standard deviation(ln(P_t / P_t−1), last 21 trading days) · √252 · 100; VRP = VIX − RV
P_t
closing price of the S&P 500
VRP
volatility premium in volatility points

On average, implied volatility is higher than the volatility that subsequently materialises: option sellers are paid for the risk of sudden swings. Carr and Wu (2009) measure this variance risk premium, and Bollerslev et al. (2009) show that it helps predict future stock returns. The dashboard, however, compares the VIX with the volatility of the past 21 days, not of the coming ones. It therefore shows whether options are pricing in more than what has recently occurred. In acute crises the value is often negative, because realised volatility outruns expectations.

Futures signals: VX30, roll yield, slope and Traders-VRP

From the futures history of the last three years, the dashboard derives further metrics. For each trading day, the history contains the monthly contracts M1 to M7 with their days to expiry. For the last day, the code uses today's curve, because it is often one day ahead of the price series of the individual contracts.

VX30: VIX future with a constant maturity

Depending on the day, M1 and M2 have between one week and around two months to expiry, and their prices jump when the contract rolls over. VX30 weights the two linearly by days to expiry so as to create a future with a constant 30 days to expiry, i.e. with the same maturity as the VIX.

VX30 = w × M1 + (1 − w) × M2; w = (T2 − 30) / (T2 − T1), limited to 0 to 1
T1, T2
calendar days until M1 and M2 expire
w
weight of M1; if M1 still has more than 30 days to go, w = 1 and VX30 = M1

The roll yield VX30 : VIX compares this future directly with the VIX. Positive means contango: anyone who buys and rolls VIX futures pays the premium continuously, while sellers earn it as long as the VIX does not jump. Simon and Campasano (2014) find in their sample that the gap between the futures and the VIX hardly predicts the subsequent change in the VIX, but does predict the subsequent returns of the futures. The slope M4–M7 compares the seventh with the fourth contract and describes the medium-term part of the curve that medium-term VIX products refer to.

Roll yield VX30 : VIX = VX30 / VIX − 1; slope M4–M7 = M7 / M4 − 1
M4, M7
settlement price of the fourth and seventh monthly contracts

Traders-VRP and short-term VRP

The volatility premium above compares the VIX with 21 trading days. The Traders-VRP reacts faster: VX30 minus the realised volatility of the last 5 trading days (HV5, the standard deviation of the daily log returns of the S&P 500 × √252), smoothed with a weighted 5-day average in which the most recent day counts five times and the oldest once. Positive means that the futures are pricing in more volatility than is currently occurring. That is the calm normal state. Negative means that the market is moving more than priced in. Because the futures history only covers three years, the dashboard calculates the same metric as short-term VRP using the VIX instead of VX30, but with a long history.

Traders-VRP_t = (5 × x_t + 4 × x_t−1 + 3 × x_t−2 + 2 × x_t−3 + 1 × x_t−4) / 15; x = VX30 − HV5
HV5
realised volatility of the S&P 500 over 5 trading days, annualised, in points
short-term VRP
the same calculation with x = VIX − HV5

Two further tiles belong to the barometer below: the short-term structure VIX 9 days / VIX (above 1, the market expects turbulence in the next few days) and the distance of the S&P 500 from its 52-week high, measured against the highest closing price of the last 252 trading days.

Correlation of the VIX and the stock market

The correlation measures, over 63 trading days, how closely the daily change in the VIX (in points) moves with the daily log return of the S&P 500. Only days on which both values are available are counted; the holidays of the two calendars differ. The value is usually clearly negative: when the market falls, the VIX rises. If the correlation weakens or even turns positive, stocks and the VIX rise together more often, for example when investors buy options despite rising prices.

Percentile rank and classification

Each metric appears as a tile with the current value, the change from the previous day and from the previous week (five trading days) and the percentile rank: the share of days in the selected period on which the value was at most as high as today. Today itself counts too. The periods are 1 year (252 trading days), 3 years (756), 5 years (1,260, the default) and the full history.

Percentile rank = number of days with value ≤ value_today / number of days in the period
period
the last 252, 756 or 1,260 trading days with a value, or all of them

Below 20%, a value counts as low, above 80% as high, and in between as normal; exactly 20% and 80% still count as normal. The rank depends heavily on the period: after a calm year, a VIX of 20 looks high, but compared with the full history including the financial crisis it looks rather normal. The page shows charts with more than 1,600 points weekly (Friday values), otherwise daily.

Volatility barometer

The volatility barometer sums up the situation in a single number from 0 to 100: 0 means as calm as it rarely gets, 100 as turbulent as it rarely gets. It is Portfolio Lab's own, openly documented method, modelled on commercial volatility barometers but not using their formula. It consists of seven components, each oriented so that a higher value means more turbulence:

ComponentRaw valueMore turbulent when …
VIX levelVIXthe VIX is higher
Term structureVIX / VIX 3 monthsthe ratio rises; above 1, backwardation
Short-term structureVIX 9 days / VIXthe 9-day VIX rises above the 30-day VIX
Short-term VRP, invertedVIX − HV5, weighted 5-day averagethe value is lower, especially below zero
Realised volatilityvolatility of the S&P 500 over 21 trading daysit is higher
VVIXvolatility of the VIXit is higher
Decline from 52-week highS&P 500 / highest closing price of the last 252 trading days − 1the decline is deeper

On each day, every component is translated into points: its percentile rank among the values of the last three years up to and including that day, without later values. This means the barometer could also have been calculated at the time. A rank only exists after one year of history, and a component only counts if it has more than 260 values. The barometer is the mean of the points of all components that have a value on that day, provided there are at least four. Futures metrics are not included because of their short history.

Barometer_t = mean of the points; points_i,t = 100 × share of days in (t − 3 years, t] with value_i ≤ value_i,t
value_i
raw value of component i, with the sign reversed for short-term VRP and for the decline
t
trading day

The zones: below 20 very calm, below 40 calm, below 60 normal, below 80 elevated, 80 and above stress. Alongside today's value, the page shows the values a week, a month and a year ago (each the last value up to 7, 30 or 365 calendar days earlier), since when and for how many trading days the barometer has been in today's zone, its history over the selected period (optionally with all components) and how often it stood in each decile over the full history, from 0–10 to 90–100 (the value 100 counts towards the top decile).

In addition, there is the VIX / VIX 3 months crossover: whether the ratio is at or above 1 today (backwardation) or below it (contango), and for how many trading days, i.e. since it last crossed 1.

What came next

The table divides all days into fifths by barometer value (0–20, 20–40, 40–60, 60–80, 80–100) and shows, for each fifth, the mean, the median and the share of positive returns of the S&P 500 over 21, 63 and 252 trading days, calculated from the closing price of the same day and without dividends, plus the same values across all days. Because the periods overlap, it also states the number of approximately independent periods. The statistics describe the past; they are not a forecast.

Data and timeliness

The index histories come as daily closing values from the index provider, or alternatively from general price data (where the history of the VIX 1 year is missing); the S&P 500 comes from the app's price cache. Indices are cached for three hours, today's futures curve for one hour, curves from past days and expired contracts permanently, and outstanding contracts for six hours. If a fetch fails, the page shows the last stored state with a notice. Only if the VIX is missing entirely does it stop with a message.

Limitations

  • US market only: all metrics refer to options and futures on the S&P 500; for European equities they are only an approximation.
  • Implied versus past: the volatility premium compares expectations with the recent past, not with subsequent volatility.
  • Roll yield as an assumption: the linear path of the future towards the VIX is a simplification; in reality the VIX moves too.
  • Percentiles are relative: a “high” value only says that it was rare in the selected period, not that it has to fall.
  • No trading signals: the dashboard describes the situation; it does not tell you whether and how to react to it.
  • Own barometer: the seven components, the three-year ranking window and the simple mean are choices; other choices would produce different values. The components are closely related and usually spike together on stress days.
  • Short futures history: VX30, roll yield VX30 : VIX, slope M4–M7 and Traders-VRP only go back three years; their percentile ranks refer to this period.

Frequently asked questions

What does contango mean for the VIX?

Futures for later months are more expensive than the VIX and the near-term futures, so the curve slopes upwards. That is the normal case in calm markets. For buyers of VIX futures it means ongoing roll losses, because the future converges on the lower VIX by expiry.

Why is the volatility premium sometimes negative?

Because the dashboard compares the VIX with the volatility of the last 21 days. In a sudden crash, realised volatility often rises faster than the VIX. The difference is then negative, even though options are expensive.

Which period makes sense for the percentile rank?

The default is 5 years (1,260 trading days). One year shows what was normal recently; the full history places the value in the context of all crises. Comparing several periods is the most informative approach.

What does the ratio of the VIX to the VIX 3 months show?

Whether short-term fear is above medium-term fear. Values below 1 are normal (contango); values above 1 have occurred mainly in periods of stress (backwardation).

When does the first future switch?

As soon as it has at most six days to expiry. From then on, the dashboard uses the next contract as M1, because most investors and products roll before that point.

How is the volatility barometer calculated?

From seven components such as the VIX, term structure, realised volatility and decline from the high. On each day, each component receives points as its percentile rank over the last three years; the barometer is their mean. From 80 points it signals stress, below 20 very calm markets.

What is VX30?

A synthetic VIX future with a constant 30 days to expiry, weighted from the first and second monthly contracts. It matches the maturity of the VIX and does not jump when the contract rolls over.

What does a negative Traders-VRP mean?

Over the last five days the market has been moving more than the 30-day VIX future is pricing in. This mainly happens in acute periods of stress; the value is usually positive.

Literature

  1. Bollerslev, Tim; Tauchen, George; Zhou, Hao (2009): Expected Stock Returns and Variance Risk Premia. Review of Financial Studies 22 (11), pp. 4463–4492. doi:10.1093/rfs/hhp008
  2. Carr, Peter; Wu, Liuren (2009): Variance Risk Premiums. Review of Financial Studies 22 (3), pp. 1311–1341. doi:10.1093/rfs/hhn038
  3. Simon, David P.; Campasano, Jim (2014): The VIX Futures Basis: Evidence and Trading Strategies. The Journal of Derivatives 21 (3), pp. 54–69. doi:10.3905/jod.2014.21.3.054
  4. Whaley, Robert E. (2000): The Investor Fear Gauge. The Journal of Portfolio Management 26 (3), pp. 12–17. doi:10.3905/jpm.2000.319728
  5. Whaley, Robert E. (2013): Trading Volatility: At What Cost?. The Journal of Portfolio Management 40 (1), pp. 95–108. doi:10.3905/jpm.2013.40.1.095

Full bibliography

This page describes how Portfolio Lab calculates; past results are not a forecast. All terms in the glossary.