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

What Is Max Pain in Options? The Real Math
SPY contracts traded by strike, July 17 2026 expiryranking · 2026-07-31 · 22×3Preview: 16 ranked values, smallest first. Minimising strike vs settlement close: SPY monthly expirations, Feb to Jul 2026table · 2026-07-31 · 6×5 The six lowest-payout candidate strikes, SPY July 17 2026 expiryranking · 2026-07-31 · 6×2Preview: 6 ranked values, smallest first. Total payout to option holders at each candidate settlement price, SPY July 17 2026table · 2026-07-31 · 36×2
SPY contracts traded by strike, July 17 2026 expiry

SPY contracts traded by strike, July 17 2026 expiry

most recentas of ranking 22×3read in context →
SPY contracts traded by strike, July 17 2026 expiry — 22 rows by 3 columns, computed from US exchange, SIP and OPRA data.
strikecall_contracts_kput_contracts_k
7368113.2
7378.3168.9
7389.5222.8
73910.8235.1
74099.8843.7
74145.6430.9
742114.8606.3
743235.4728.4
744401.6762.7
745649.6800.4
746549.4488.7
747626.6263.8
748467.1238.5
749323.4162.1
750598493.5
751305.7151.3
752331.9154.6
753257131.5
754210.886.2
755361.894.4
756148.213.3
757131.78.1
the exact SQL behind every number
SELECT toString(strike_usd) AS strike,
       round(sumIf(contracts, opt_type = 'C') / 1e3, 1) AS call_contracts_k,
       round(sumIf(contracts, opt_type = 'P') / 1e3, 1) AS put_contracts_k
FROM (
    SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike_usd,
           substring(ticker, length(ticker) - 8, 1)                              AS opt_type,
           sum(toFloat64(volume))                                                AS contracts
    FROM global_markets.options_minute_aggs
    WHERE window_start >= toDateTime('2026-06-18 08:00:00')
      AND window_start <  toDateTime('2026-07-18 04:00:00')
      AND startsWith(ticker, 'O:SPY260717')
      AND intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) BETWEEN 736 AND 757
    GROUP BY strike_usd, opt_type
)
GROUP BY strike_usd, strike
ORDER BY strike_usd
$