STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

Unusual Options Activity: Last Session
Market-wide options volume by session, with monthly expirations labelledseries · 2026-08-25 · 25×5Preview: a 16-point series, ending higher. Calls or puts: the board's call and put contract volume on the same sessiontable · 2026-08-25 · 10×5 What follows a heavy options session: next-session absolute move vs. the same names on an ordinary daytable · 2026-08-25 · 5×6 What the session's contracts were made of: options volume by days to expiryranking · 2026-08-25 · 6×4Preview: 6 ranked values, largest first. Unusual options activity: last completed session vs. each underlying's own 20-session averagetable · 2026-08-25 · 10×8
Equity vs Index Put/Call Ratio: What's High?
The total is a call-volume-weighted blend of the two bucketsranking · 2026-08-22 · 11×4Preview: 11 ranked values, largest first. The same equity ratio, computed with and without ETF optionsseries · 2026-08-22 · 23×4Preview: a 16-point series, ending lower. Single-stock bucket vs ETF bucket, session by sessionseries · 2026-08-22 · 33×6Preview: a 16-point series, roughly flat. Put/call volume ratio by underlying, trailing 60 sessionstable · 2026-08-22 · 12×5
How the Put/Call Ratio Is Calculated
Daily single stock put/call ratio against its 21 session averageseries · 2026-08-06 · 84×4Preview: a 16-point series, ending lower. Where the daily ratio actually sits, twelve months of sessionsranking · 2026-08-06 · 3×4Preview: 3 ranked values, largest first. Monthly median put/call ratio: broad market ETFs against single stocksseries · 2026-08-06 · 12×4Preview: a 12-point series, roughly flat. Daily put/call volume ratio, SPY against AAPL, July 2026series · 2026-08-06 · 22×4Preview: a 16-point series, ending higher. Put and call volume for eight household names, July 2026ranking · 2026-08-06 · 8×4Preview: 8 ranked values, largest first.
Market-wide options volume by session, with monthly expirations labelled

Market-wide options volume by session, with monthly expirations labelled

most recentas of series 25×5read in context →
Market-wide options volume by session, with monthly expirations labelled — 25 rows by 5 columns, computed from US exchange, SIP and OPRA data.
sessioncontracts_msession_typemonthly_expiry_msession_id
Jul 1670.7ordinary76.820260716
Jul 1776.8monthly expiration76.820260717
Jul 2063.5ordinary76.820260720
Jul 2156.8ordinary76.820260721
Jul 2255.4ordinary76.820260722
Jul 2365.4ordinary76.820260723
Jul 2470.7ordinary76.820260724
Jul 2764.3ordinary76.820260727
Jul 2858.7ordinary76.820260728
Jul 2966.3ordinary76.820260729
Jul 3066.3ordinary76.820260730
Jul 3175.5ordinary76.820260731
Aug 372.7ordinary76.820260803
Aug 478.9ordinary76.820260804
Aug 569.5ordinary76.820260805
Aug 663.2ordinary76.820260806
Aug 773.2ordinary76.820260807
Aug 1061.4ordinary76.820260810
Aug 1154.6ordinary76.820260811
Aug 1255.4ordinary76.820260812
Aug 1366.6ordinary76.820260813
Aug 1466ordinary76.820260814
Aug 1760.9ordinary76.820260817
Aug 1856.9ordinary76.820260818
Aug 1967.2ordinary76.820260819
the exact SQL behind every number
WITH tape AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
    GROUP BY d
),
ranked AS (
    SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
    FROM tape
),
cal AS (
    SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
    FROM (
        SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
        FROM ranked
        WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
    )
),
w AS (
    SELECT d, vol,
           toStartOfMonth(d) + toIntervalDay(((5 - toDayOfWeek(toStartOfMonth(d)) + 7) % 7) + 14) AS third_friday
    FROM cal
    WHERE rn <= 25
),
marked AS (
    SELECT d, vol,
           (d = max(if(d <= third_friday, d, toDate('1970-01-01'))) OVER (PARTITION BY toStartOfMonth(d)))
             AND (third_friday <= max(d) OVER ()) AS is_expiry
    FROM w
),
latest AS (
    SELECT d, vol, is_expiry,
           max(if(is_expiry, d, toDate('1970-01-01'))) OVER () AS last_expiry_d
    FROM marked
)
SELECT formatDateTime(d, '%b %e') AS session,
       round(vol / 1e6, 1) AS contracts_m,
       multiIf(is_expiry, 'monthly expiration', 'ordinary') AS session_type,
       round(max(if(d = last_expiry_d, vol, 0)) OVER () / 1e6, 1) AS monthly_expiry_m,
       toYYYYMMDD(d) AS session_id
FROM latest
ORDER BY d ASC
$