Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of September 26, 2026 · refreshed weekly

How VIX Settlement Works: the SOQ

VIX settlement uses the SOQ, a Special Opening Quotation built from SPX opening prices under a zero bid strike rule. How the print is made, and why it gaps.

VIX settlement does not use the VIX index level a screen shows at 9:30 a.m. ET on expiration morning. Expiring VIX options and futures cash settle against the Special Opening Quotation, the SOQ: one number CBOE strikes on settlement morning from the opening prices of a single strip of S&P 500 index (SPX) options. It is the same formula as the VIX index fed different inputs, and the two numbers rarely land in exactly the same place.

What is the Special Opening Quotation (SOQ)?

The SOQ is the final settlement value for expiring VIX options and VIX futures. Two labels describe it. It is cash settled, meaning nothing is delivered and an in the money position pays out the difference in dollars. It is AM settled, meaning the value is struck from the opening of the SPX options market on settlement morning rather than from the close, which is the difference between AM settled and PM settled options. CBOE publishes the finished value under the ticker VRO, and every expiring VIX contract is exercised or abandoned against that one print.

The arithmetic is the variance calculation that produces the VIX index itself, unpacked in what the VIX index actually measures. What changes is the input. The index reads live bid and ask midpoints many times a minute, all session long. The SOQ reads opening prices, once.

When is VIX settlement, and which SPX expiry does it use?

VIX contracts settle on a Wednesday: the Wednesday falling 30 days before the third Friday of the following calendar month. That 30 day offset is the entire point of the schedule. The SPX options expiring on that third Friday have exactly 30 calendar days left to run on settlement morning, which is the horizon the VIX formula is defined over. The dated calendar itself lives in when VIX options expire.

The ladder below applies that rule forward, pairing each settlement date with the SPX expiry it reaches for.

QueryUpcoming VIX settlement dates and the SPX expiry each one uses
settlement_dateweekdaysettlement_labelstrip_expiry_labeldays_away
2026-10-21WedOct 21, 2026Nov 20, 202625
2026-11-18WedNov 18, 2026Dec 18, 202653
2026-12-16WedDec 16, 2026Jan 15, 202781
2027-01-20WedJan 20, 2027Feb 19, 2027116
2027-02-17WedFeb 17, 2027Mar 19, 2027144
2027-03-17WedMar 17, 2027Apr 16, 2027172
2027-04-21WedApr 21, 2027May 21, 2027207
2027-05-19WedMay 19, 2027Jun 18, 2027235
2027-06-16WedJun 16, 2027Jul 16, 2027263
2027-07-21WedJul 21, 2027Aug 20, 2027298
2027-08-18WedAug 18, 2027Sep 17, 2027326
2027-09-15WedSep 15, 2027Oct 15, 2027354
The exact SQL behind every number
SELECT
    toString(settle_date)                     AS settlement_date,
    formatDateTime(settle_date, '%a')         AS weekday,
    formatDateTime(settle_date, '%b %e, %Y')  AS settlement_label,
    formatDateTime(strip_expiry, '%b %e, %Y') AS strip_expiry_label,
    dateDiff('day', today(), settle_date)     AS days_away
FROM
(
    SELECT
        third_friday - 30 AS settle_date,
        third_friday      AS strip_expiry
    FROM
    (
        SELECT
            addMonths(toStartOfMonth(today()), n) AS month_start,
            month_start + (((12 - toInt32(toDayOfWeek(month_start))) % 7) + 14) AS third_friday
        FROM
        (
            SELECT arrayJoin(range(14)) AS n
        )
    )
)
WHERE settle_date >= today()
ORDER BY settle_date
Run this yourself

The next settlement on the ladder is Oct 21, 2026, a Wed, 25 days from today, and it settles against the SPX series expiring Nov 20, 2026. The window holds 12 dated settlements, running through Sep 15, 2027, and every one of them lands on a Wednesday. One adjustment sits outside the arithmetic: when the third Friday of a month is an exchange holiday, as Good Friday is, the SPX expiry moves to the Thursday before and the VIX settlement shifts back a day alongside it. The underlying monthly cycle is the same one described in the third Friday options expiration cycle.

Which options go into the settlement strip?

One expiry, not two. The published index interpolates between a near term strip and a next term strip to hold its 30 day horizon constant, since no listed expiry sits at exactly 30 days most of the time. On settlement morning that problem disappears by construction: one SPX series is exactly 30 days out, and the SOQ uses that series alone, with no interpolation at all.

A liquid underlying lists an expiry on nearly every weekday, so the phrase 'the 30 day expiry' points at one specific row in a crowded ladder. The panel below takes a pinned session, August 14, 2026, and lists the expirations available on SPY, the S&P 500 tracking fund, between three and six weeks out, with the strike count each one carried.

QueryExpirations three to six weeks out on a pinned session (SPY, Aug 14 2026)
expiration_datedays_to_expirylisted_strikestraded_strikes
2026-09-0421184184
2026-09-1128167167
2026-09-1835247247
The exact SQL behind every number
SELECT
    toString(expiration_date)                 AS expiration_date,
    max(dte)                                  AS days_to_expiry,
    countDistinct(strike_price)               AS listed_strikes,
    countDistinctIf(strike_price, volume > 0) AS traded_strikes
FROM
(
    SELECT
        expiration_date,
        days_to_expiry AS dte,
        strike_price,
        volume
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date = '2026-08-14'
      AND days_to_expiry BETWEEN 21 AND 40
)
GROUP BY expiration_date
ORDER BY expiration_date
Run this yourself

That pinned chain carried 3 separate expirations between 21 and 35 days out. The nearest of them listed 184 distinct strikes, of which 184 recorded volume that day. Only one row in a ladder like this qualifies on any given settlement morning, and the date rule picks it. Liquidity does not.

The strike rule: include strikes until the bids run out

Within that single expiry, the SOQ does not use every listed strike. The selection runs as a fixed rule:

  1. Find the at the money strike, the one where the call price and the put price sit closest together.
  2. Work outward in both directions from there, taking out of the money puts below that strike and out of the money calls above it.
  3. Keep a strike while its opening bid is greater than zero.
  4. Stop each wing once two strikes in a row show a zero bid, and drop everything past that point, including any further out strike that does happen to carry a bid.

The prices themselves come from the opening auction. A series that trades in the opening rotation contributes its opening trade price. A series that does not trade contributes the midpoint of its opening quote. The rule is deliberately mechanical: it runs the same way every month, and the strike list it produces is whatever that particular morning's bids support. The list is never fixed in advance, which is why a settlement strip can be wider or narrower than the one a month earlier.

What the rule is working against is the thinning of the wings. The panel below takes the same pinned session and one pinned expiry, then counts listed strikes against strikes that actually traded, grouped by distance from the underlying price.

QueryListed versus traded strikes by moneyness (SPY, Sep 18 2026 expiry, as of Aug 14 2026)
moneyness_bandlisted_strikestraded_strikes
-20% to -16%1212
-16% to -12%2121
-12% to -8%3131
-8% to -4%3131
-4% to 0%3232
0% to 4%3131
4% to 8%2020
8% to 12%55
12% to 16%66
16% to 20%11
The exact SQL behind every number
SELECT
    concat(toString(pct_band), '% to ', toString(pct_band + 4), '%') AS moneyness_band,
    countDistinct(strike_price)                                      AS listed_strikes,
    countDistinctIf(strike_price, volume > 0)                        AS traded_strikes
FROM
(
    SELECT
        strike_price,
        volume,
        toInt32(floor((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 25) * 4) AS pct_band
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date = '2026-08-14'
      AND expiration_date = '2026-09-18'
      AND underlying_close > 0
)
WHERE pct_band BETWEEN -20 AND 16
GROUP BY pct_band
ORDER BY pct_band
Run this yourself

The chain spreads across 10 four point bands of moneyness. Down in the band running -20% to -16% against the underlying price, 12 of 12 listed strikes printed a trade that session. Up in the 16% to 20% band, 1 of 1 did. Quoted bids reach further out than trades do, which is the gap the zero bid run is measuring. These counts illustrate the shape of a chain on one pinned day, on a fund rather than on the index, and no figure in this panel forms part of any official settlement value.

Why the SOQ prints away from the 9:30 VIX level

Four mechanical differences separate the settlement print from the index level on the same morning.

The inputs differ. The index samples bid and ask midpoints from quotes that are live at the moment of calculation. The SOQ samples opening prices, and an opening price is a trade struck against whatever size the auction collected.

The timing differs. SPX series do not all open in the same instant. Each opens in its own rotation, and the prints feeding the SOQ can be spread across the first minutes of the session, making the SOQ a composite of moments rather than a snapshot of one moment.

The strip differs. One 30 day series feeds the SOQ. Two interpolated series feed the index.

The strike list differs. The zero bid test is applied to opening quotes, so the set of strikes admitted at settlement can differ from the set the index was using minutes earlier.

The first two carry the most weight on volatile mornings, when opening spreads sit at their widest. The panel below measures that width on the underlying itself, across the trailing four months of sessions.

QueryAverage high to low range by minute, first half hour (SPY, trailing ~4 months)
30 rows (showing 20)
et_timeavg_range_bpsavg_volume_thousands
09:3010.7523
09:318.5227
09:327.3192
09:336.7154
09:346.3153
09:357.3168
09:366.9157
09:376.1131
09:385.9124
09:395.6141
09:407.3164
09:416119
09:426118
09:435.9120
09:446.1118
09:457.7176
09:466.5139
09:476.1129
09:486.1133
09:496.1155
The exact SQL behind every number
SELECT
    formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i')      AS et_time,
    round(avg((toFloat64(high) - toFloat64(low)) / toFloat64(low) * 10000), 1) AS avg_range_bps,
    round(avg(volume) / 1000, 0)                                              AS avg_volume_thousands
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= today() - 120
  AND low > 0
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
       + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 599
GROUP BY et_time
ORDER BY et_time
Run this yourself

Over the 30 minutes in view, the 09:30 bar averaged 10.7 basis points of high to low travel (a basis point is one hundredth of one percent), against 5.5 basis points in the 09:59 bar. Option prices inherit that width, and the SOQ is drawn from the leftmost end of it. A settlement value sitting away from the index level a reader watched at 9:30 is a property of how the auction prices are collected, not a data error. The related gap, between the index and the futures curve that VIX options are priced off, is covered in why VIX options do not track the VIX.

Data notes

The settlement ladder computes dates from the published rule (30 days before the third Friday of the following month) and does not apply holiday shifts. The two chain panels use one pinned session, August 14, 2026, on SPY rather than on the index, chosen so the numbers stay fixed across regeneration. They illustrate chain structure only. The official settlement value for any given expiration is the SOQ published by CBOE under the ticker VRO on that morning, and it is not reproduced or reconstructed anywhere on this page.

FAQ

What number do VIX options settle against?

The Special Opening Quotation, published by CBOE under the ticker VRO on settlement morning. It is a cash settlement value computed with the VIX formula from the opening prices of the SPX option series that has exactly 30 days left to run.

Is the SOQ the same as the VIX opening level?

No. The index opening level comes from live quote midpoints. The SOQ comes from opening auction prices for one strip of SPX options, selected under the zero bid rule. The two land close together most mornings and match exactly almost never.

What time is the VIX SOQ determined?

Its inputs are the opening prices of the SPX series, so the value is struck at the opening of SPX options trading on the settlement Wednesday and published once every constituent series has opened, generally inside the first hour of the session.

Why do VIX options settle on a Wednesday?

The settlement date is defined as 30 days before the third Friday of the following month, and 30 days before a Friday always falls on a Wednesday. That offset leaves exactly 30 days of life in the SPX strip the SOQ is built from.

What happens to a VIX option after the SOQ prints?

In the money contracts are exercised automatically and settle in cash against the SOQ, with nothing delivered. The last trading day is the Tuesday before, so an expiring position cannot be traded out on settlement morning itself.


Every panel above ships with the exact SQL beneath it. To rebuild the strike ladder for a different expiry, or to check where the next settlement Wednesday lands, ask the question in plain English on the Strasmore terminal.