STRASMORE/EXPLORE 2,500 QUERIES

quarterly_expiry

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-09-23, from dax-futures-fdax-fdxm-fdxs.

as of series 14×5read in context →
quarterly_expiry — 14 rows by 5 columns, computed from US exchange, SIP and OPRA data.
expiry_dateexpiry_volume_millionstrailing_20d_volume_millionsexpiry_ratioexpiry_label
2023-03-173.092.761.12Mar 17, 2023
2023-06-162.062.140.96Jun 16, 2023
2023-09-151.492.110.71Sep 15, 2023
2023-12-152.051.411.45Dec 15, 2023
2024-03-151.171.480.79Mar 15, 2024
2024-06-211.221.141.07Jun 21, 2024
2024-09-200.40.470.84Sep 20, 2024
2024-12-200.480.880.54Dec 20, 2024
2025-03-213.293.670.9Mar 21, 2025
2025-06-202.333.290.71Jun 20, 2025
2025-09-192.932.491.17Sep 19, 2025
2025-12-191.751.980.89Dec 19, 2025
2026-03-204.932.691.83Mar 20, 2026
2026-09-181.840.971.89Sep 18, 2026
Rows × columns
14 × 5
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 quarterly_expiry, derived from the stored result.
ColumnTypeRangeNotes
expiry_date date 2023-03-17 to 2026-09-18
expiry_volume_millions number 0.4 to 4.93 count
trailing_20d_volume_millions number 0.47 to 3.67 count
expiry_ratio number 0.54 to 1.89 ratio or rate
expiry_label text 14 distinct values (Dec 15, 2023, Dec 19, 2025, Dec 20, 2024…)

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 daily AS
(
    SELECT
        date,
        max(toFloat64(volume)) AS vol
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'EWG'
      AND date >= '2023-01-01'
      AND date <  '2026-09-19'
    GROUP BY date
),
with_avg AS
(
    SELECT
        date,
        vol,
        avg(vol) OVER (ORDER BY date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS trailing_avg
    FROM daily
)
SELECT
    toString(date)                       AS expiry_date,
    round(vol / 1e6, 2)                  AS expiry_volume_millions,
    round(trailing_avg / 1e6, 2)         AS trailing_20d_volume_millions,
    round(vol / trailing_avg, 2)         AS expiry_ratio,
    formatDateTime(date, '%b %e, %Y')    AS expiry_label
FROM with_avg
WHERE toMonth(date) IN (3, 6, 9, 12)
  AND toDayOfWeek(date) = 5
  AND toDayOfMonth(date) BETWEEN 15 AND 21
ORDER BY date
⌘/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 analysisdax-futures-fdax-fdxm-fdxs
monthly_after_close series 12×3 et_clock_volume ranking 8×3 The 2s10s spread by month, full history series 604×5 One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 3m10y and 2s10s spreads, monthly averages over twenty years series 241×4 2s10s spread, monthly average: last 20 years series 240×2 See all 2,500 queries →