STRASMORE/EXPLORE 2,882 QUERIES

tuesday_settlements

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-01, from when-do-vix-futures-expire.

as of table 5×4read in context →
tuesday_settlements — 5 rows by 4 columns, computed from US exchange, SIP and OPRA data.
settlement_datesettlement_weekdayvix_contractclosed_day_in_the_way
2019-03-19TuesdayVX Mar 2019Fri Apr 19, 2019
2022-03-15TuesdayVX Mar 2022Fri Apr 15, 2022
2024-06-18TuesdayVX Jun 2024Wed Jun 19, 2024
2025-03-18TuesdayVX Mar 2025Fri Apr 18, 2025
2026-05-19TuesdayVX May 2026Fri Jun 19, 2026
Rows × columns
5 × 4
Period covered
to
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for tuesday_settlements, derived from the stored result.
ColumnTypeRangeNotes
settlement_date date 2019-03-19 to 2026-05-19
settlement_weekday text 1 distinct value (Tuesday)
vix_contract text 5 distinct values (VX Jun 2024, VX Mar 2019, VX Mar 2022…)
closed_day_in_the_way text 5 distinct values

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH
    traded AS
    (
        SELECT groupArray(session_day) AS session_days
        FROM
        (
            SELECT date AS session_day
            FROM global_markets.stocks_daily_aggs
            WHERE ticker = 'SPY'
              AND date >= toDate('2014-11-01')
            GROUP BY session_day
        )
    ),
    closures_ahead AS
    (
        SELECT groupArray(date) AS closed_days
        FROM global_markets.stocks_market_holidays
        WHERE status = 'closed'
    )
SELECT
    toString(settlement)                                    AS settlement_date,
    formatDateTime(settlement, '%W')                        AS settlement_weekday,
    concat('VX ', formatDateTime(contract_month, '%b %Y'))  AS vix_contract,
    formatDateTime(if(friday_closed, ref_friday, wednesday_target), '%a %b %e, %Y') AS closed_day_in_the_way
FROM
(
    SELECT
        a.contract_month AS contract_month,
        a.ref_friday     AS ref_friday,
        ((a.ref_friday <= toDate(arrayMax(t.session_days))) AND (NOT has(t.session_days, a.ref_friday)))
            OR has(h.closed_days, a.ref_friday)             AS friday_closed,
        if(friday_closed, addDays(a.ref_friday, -1), a.ref_friday) AS spx_anchor,
        addDays(spx_anchor, -30)                            AS wednesday_target,
        ((wednesday_target <= toDate(arrayMax(t.session_days))) AND (NOT has(t.session_days, wednesday_target)))
            OR has(h.closed_days, wednesday_target)         AS target_closed,
        if(target_closed, addDays(wednesday_target, -1), wednesday_target) AS settlement
    FROM
    (
        SELECT
            contract_month,
            addMonths(contract_month, 1)                                             AS ref_month,
            addDays(ref_month, ((5 - toInt32(toDayOfWeek(ref_month)) + 7) % 7) + 14) AS ref_friday
        FROM
        (
            SELECT addMonths(toDate('2015-01-01'), toInt32(arrayJoin(range(144)))) AS contract_month
        )
    ) AS a
    CROSS JOIN traded AS t
    CROSS JOIN closures_ahead AS h
)
WHERE toDayOfWeek(settlement) <> 3
ORDER BY settlement ASC
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysiswhen-do-vix-futures-expire
walk_back table 4×7 → roll_cycle series 12×3 → calendar_2026 series 12×5 → The 2s10s spread, every print of the half table 124×2 → The 2s10s spread, every print of the half table 124×2 → Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print table 100×7 → See all 2,882 queries →