STRASMORE/EXPLORE 2,707 QUERIES

liquidity_by_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-27, from which-stocks-have-leaps.

as of ranking 25×4read in context →
liquidity_by_expiry — 25 rows by 4 columns, computed from US exchange, SIP and OPRA data.
expirydtecontractsvolume_per_contract
25/09/202611085193.2
28/09/2026457864.7
30/09/2026656327.8
02/10/2026876533.4
05/10/2026114379
07/10/2026133023.5
09/10/20261564316.6
16/10/20262295464.8
23/10/20262959151.9
30/10/2026364792.3
06/11/2026434219.1
20/11/20265778208.7
18/12/20268598147.9
15/01/202711310195.8
19/02/20271484535.1
19/03/20271766399.7
16/04/20272045133.3
17/06/20272666950.6
17/09/20273586148.6
17/12/20274495921
21/01/20284845832.2
17/03/20285402724.9
16/06/2028631168.9
15/12/20288135921.2
19/01/20298484331
Rows × columns
25 × 4
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 liquidity_by_expiry, derived from the stored result.
ColumnTypeRangeNotes
expiry text 25 distinct values (02/10/2026, 05/10/2026, 06/11/2026…)
dte number 1 to 848
contracts number 16 to 108 count
volume_per_contract number 8.9 to 5,193.2 count

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 (SELECT max(date) FROM global_markets.options_greeks) AS asof
SELECT
    formatDateTime(expiration_date, '%d/%m/%Y') AS expiry,
    dateDiff('day', asof, expiration_date)      AS dte,
    count()                                     AS contracts,
    round(sum(volume) / count(), 1)             AS volume_per_contract
FROM global_markets.options_greeks
WHERE date = asof
  AND underlying_symbol = 'AAPL'
  AND volume > 0
GROUP BY expiration_date
ORDER BY expiration_date
⌘/Ctrl + Enter

Work with this data in your AI assistant

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