Strasmore Research
Learn Matt ConnorBy Matt Connor

What Is the CME CVOL Index? CVOL vs VIX

The CME CVOL index measures 30-day implied volatility in futures options using simple variance and equal strike weights. Here is how it differs from VIX.

The CME CVOL index (the CME Group Volatility Index) is a family of 30-day implied volatility benchmarks built from options on futures: Treasuries, currencies, crude oil, natural gas, metals, grains, livestock, and the E-mini S&P 500. Each index takes every out-of-the-money option on a futures contract, weights every strike equally, and reads off one number: the size of move option prices imply for that future over the next 30 days. The formula is called simple variance, and it is the main thing that separates CVOL from the VIX.

What is the CME CVOL index?

CME Group began publishing CVOL on November 17, 2020, with eight indexes covering 10-Year Treasury Note futures and the G5 currency pairs, and extended the family across energy, metals, agriculture, and the rest of the Treasury curve during 2021. Every member answers the same question for a different market: over the next 30 days, how large a move are option prices pricing in?

Implied volatility is the volatility figure that, entered into an option pricing model, reproduces the price an option actually trades at: a forward-looking estimate of movement, quoted as an annualized percentage. One option yields one implied volatility. An implied volatility index blends many options at many strikes into one figure for the whole market, and the blending recipe is where indexes differ. CVOL's recipe has four fixed parts:

  • Only out-of-the-money (OTM) options: puts struck below the futures price and calls struck above it.
  • Equal weight on every strike, from the deepest put to the highest call.
  • Two listed expiries that bracket 30 days, interpolated to a constant 30-day horizon.
  • A simple-variance formula, which measures movement in price units rather than in percentage returns.

How is CVOL calculated?

Variance is the square of the standard deviation. Simple variance, also called Gaussian or normal variance, is the textbook version: the average squared distance of an outcome from its expected value, in the same units as the price (dollars per barrel squared for crude oil, price points squared for a Treasury future). A portfolio of OTM options, each held in the same amount per unit of strike spacing, pays off exactly that squared move at expiry, so the portfolio's cost is the market's price for simple variance. CVOL prices that portfolio from the option chain, takes the square root to return to a standard deviation, and reports the result as an annualized volatility on the same footing as a quoted implied volatility, so a gold reading and a euro reading sit on one scale. For Treasuries, CME publishes a yield-volatility version as well.

The 30-day horizon is a constant-maturity target, not a real expiry. Listed options expire on fixed dates, so on most days no contract is exactly 30 days out. CVOL prices the strip for the listed expiries on either side of 30 days and interpolates between them. The panel below shows why that step matters, using SPY options (the ETF on the same S&P 500 the E-mini future tracks) from our stored options data for June 2026. At-the-money implied volatility differs by tenor, the option market's word for time to expiry.

QuerySPY at-the-money implied volatility by days to expiry, June 2026
tenoratm_iv_pct
1-7 days17.2
8-14 days14.8
15-21 days15.8
22-30 days15.2
31-45 days15.4
46-60 days15.7
61-90 days16
The exact SQL behind every number
SELECT
    tenor_label                              AS tenor,
    round(100 * avg(implied_volatility), 1)  AS atm_iv_pct
FROM
(
    SELECT
        implied_volatility,
        multiIf(days_to_expiry <= 7,  '1-7 days',
                days_to_expiry <= 14, '8-14 days',
                days_to_expiry <= 21, '15-21 days',
                days_to_expiry <= 30, '22-30 days',
                days_to_expiry <= 45, '31-45 days',
                days_to_expiry <= 60, '46-60 days',
                                      '61-90 days') AS tenor_label,
        multiIf(days_to_expiry <= 7,  1,
                days_to_expiry <= 14, 2,
                days_to_expiry <= 21, 3,
                days_to_expiry <= 30, 4,
                days_to_expiry <= 45, 5,
                days_to_expiry <= 60, 6,
                                      7) AS tenor_order
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= '2026-06-01'
      AND date <  '2026-07-01'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 1 AND 90
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.02
)
GROUP BY tenor_label, tenor_order
ORDER BY tenor_order
Run this yourself

Across June 2026, SPY at-the-money implied volatility averaged 15.2% for options 22 to 30 days out and 15.4% for options 31 to 45 days out. A constant-maturity index lands between the bracketing expiries and reports a value that stays at 30 days instead of aging a day per session. The implied volatility calculation behind each per-contract figure is the same model inversion, applied one option at a time.

CVOL vs VIX: what is the difference?

Both indexes report a 30-day, forward-looking volatility figure from a strip of OTM options bracketing 30 days. The similarities end there.

The VIX is published by Cboe from S&P 500 index (SPX) options with 23 to 37 days to expiry. It prices a log contract, a payoff based on the logarithm of the price ratio, and replicating that payoff takes a strip of options weighted by 1/K², where K is the strike. Each strike's contribution is divided by the strike squared, so lower strikes (the puts) carry more weight than higher strikes (the calls). The output is log variance, the natural fit for a stock index whose returns are modeled as percentages.

CVOL is published by CME Group from options on futures. It prices a squared-move contract, whose replication takes a strip weighted only by strike spacing. Every strike counts the same. The output is simple variance, measured in price units.

The weight difference is easy to draw. The panel below takes SPY's 30-day OTM strip over June 2026, groups strikes into 2%-wide moneyness buckets (strike divided by the underlying price, minus one), and shows the average implied volatility in each bucket beside the relative weight each method assigns, with the at-the-money bucket set to 100.

QuerySPY 30-day OTM strip, June 2026: implied volatility and relative strike weight under each method
moneynessiv_pctvix_style_weight_pctcvol_style_weight_pct
-10%24.9123.5100
-8%22.8118.1100
-6%20.5113.2100
-4%18.8108.5100
-2%16.9104.1100
0%15100100
+2%13.296.1100
+4%12.192.5100
+6%11.789100
+8%12.285.7100
+10%13.482.6100
The exact SQL behind every number
SELECT
    concat(if(bucket_pct > 0, '+', ''), toString(bucket_pct), '%') AS moneyness,
    round(100 * avg(implied_volatility), 1)                        AS iv_pct,
    round(100 / pow(1 + bucket_pct / 100, 2), 1)                    AS vix_style_weight_pct,
    100                                                             AS cvol_style_weight_pct
FROM
(
    SELECT
        implied_volatility,
        toInt32(2 * round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 50)) AS bucket_pct
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= '2026-06-01'
      AND date <  '2026-07-01'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 23 AND 37
      AND ((lower(toString(option_type)) IN ('put', 'p')
                AND toFloat64(strike_price) < toFloat64(underlying_close))
        OR (lower(toString(option_type)) IN ('call', 'c')
                AND toFloat64(strike_price) > toFloat64(underlying_close)))
)
WHERE bucket_pct BETWEEN -10 AND 10
GROUP BY bucket_pct
ORDER BY bucket_pct
Run this yourself

Under 1/K² weighting the bucket 10% below spot gets a relative weight of 123.5 and the bucket 10% above spot gets 82.6; under equal weighting both get 100. In the same window, implied volatility in those buckets read 24.9% on the put side and 13.4% on the call side, against 15% at the money. The VIX method leans toward the side of the curve that, for equity indexes, usually carries the higher implied volatility; CVOL reads the whole curve at one weight. Neither is wrong. They price different contracts. The VIX is also one index on one market, with a listed futures and options complex of its own, while CVOL is a family of published benchmarks with one construction applied everywhere, which is what makes a gold CVOL and a euro CVOL comparable.

Why does a normal-variance measure suit futures?

A lognormal model, the assumption behind Black-Scholes and the VIX's log contract, treats moves as percentages of the current price and never allows a price below zero. That fits a stock. It strains on two of the largest futures markets.

Interest rates can sit near zero or below it. A percentage move in a yield of 0.20% means something very different from the same percentage move at 5%, and a lognormal model cannot price a rate that crosses zero at all. Rate option desks quote normal volatility instead, in basis points of yield (hundredths of a percentage point). Commodities have their own edge case: in April 2020 the front-month WTI crude future settled below zero, and that same month CME moved its energy option pricing to the Bachelier model, the normal-distribution model that handles negative prices.

Simple variance measures movement in price units, so it is indifferent to where zero sits and to whether the price is 2 or 200. Equal strike weighting removes the built-in tilt toward low strikes, which matters in markets such as natural gas where the larger risk can sit on the upside. Both choices let one construction serve every asset class, the family's stated purpose.

What are UpVar, DnVar, Skew, and Convexity?

Running the same simple-variance strip on half of the curve at a time produces CVOL's auxiliary series, published alongside each index:

  • UpVar (up variance) uses OTM calls only, then doubles the result so the figure is comparable with the two-sided index.
  • DnVar (down variance) uses OTM puts only, mirrored the same way.
  • Skew is UpVar minus DnVar. A negative value means the puts collectively carry more implied volatility than the calls.
  • Skew Ratio is UpVar divided by DnVar. A ratio below 1.0 says the same thing as a negative Skew.
  • Convexity is the index value divided by ATM volatility. A reading above 1.0 means the wings of the curve, far from the money, price more volatility than the center.
  • ATM is the 30-day at-the-money implied volatility on its own.

For the general idea of a lopsided curve, see volatility skew explained. A strip that reads higher on the put side than on the call side, as equity index strips usually do, prints a negative Skew and a Skew Ratio under 1.0.

Which markets have a CVOL index?

As of September 2026 the family covers these single-product indexes, each built on the CME Group futures contract named:

  • Treasuries: 2-Year, 5-Year, 10-Year, and 30-Year, as price volatility and as yield volatility.
  • Currencies: EUR/USD, GBP/USD, JPY/USD, AUD/USD, CAD/USD, MXN/USD, and CHF/USD.
  • Energy: WTI crude oil, Henry Hub natural gas, RBOB gasoline, and NY Harbor ULSD.
  • Metals: gold, silver, and copper.
  • Agriculture: corn, soybeans, Chicago wheat, soybean oil, soybean meal, lean hogs, live cattle, and Class III milk.
  • Equity index: the E-mini S&P 500.

Aggregate indexes pool the members of a group: Treasury Curve, G5 FX, Energy, Metals, Agriculture, and a Commodities CVOL across all 13 commodity members.

When is CVOL published, and where?

CVOL values are calculated daily and updated at the end of every trading session. CME's CVOL page hosts an Index Visualizer, powered by QuikStrike, with charts of each index and its auxiliary series. End-of-day history for every index is available to registered users through CME DataMine, and CME documents a live streaming calculation for real-time market data subscribers. The family is administered under the IOSCO Principles for Financial Benchmarks.

One transparency note: the data behind this post holds per-contract implied volatility for listed equity options, which is what the two SPY panels use, and no CVOL series. Rather than retype index values that no stored query could audit, this post reports none and points you to CME's page for current readings.

FAQ

What is the CME CVOL index in simple terms?

It is CME Group's 30-day implied volatility gauge for a futures market, built from every out-of-the-money option on that future with each strike weighted equally. One index exists per product, from 10-Year Treasuries to gold to the E-mini S&P 500, all on the same simple-variance construction.

Is CVOL the same as the VIX?

No. Both report 30-day implied volatility from a strip of OTM options, but the VIX uses SPX options and a log-variance formula that weights each strike by 1/K², while CVOL uses options on futures and a simple-variance formula that weights every strike equally. The VIX is one index on one market; CVOL is a family across asset classes.

What does a CVOL Skew Ratio below 1 mean?

Skew Ratio is UpVar divided by DnVar, the variance priced by OTM calls over the variance priced by OTM puts. A value under 1.0 means the puts collectively carry more implied volatility than the calls; above 1.0, the calls carry more.

Where can I find CVOL values?

CME Group publishes end-of-day CVOL values after each session on its CVOL index page, with an Index Visualizer for charts of each index and its UpVar, DnVar, Skew, and Convexity series. Historical files are available to registered users through CME DataMine.


Both SPY panels ship with the SQL that produced them; expand either one to see the filters. To pull the same strip for another ticker or month, ask for it in plain English on the Strasmore terminal.

#cvol#implied volatility#cme#futures options#vix#volatility index