STRASMORE/EXPLORE 2,170 QUERIES

SpaceX's options market in one row: totals, expiry structure, flagship contracts

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-07-27, from SPCX: SpaceX's First Month on the Public Market.

as of scalar 1×22read in context →
first print et
2026-06-16 09:30:00
option sessions
10
prints m
2.18
distinct contracts
3,199
contracts traded m
10.4
premium notional busd
9.15
month put call ratio
0.79
max session put call ratio
0.987
expiries traded
22
longest expiry
2028-12-15
jun18 expiry share pct
26.7
busiest contract
$175 put, expiry 2026-06-18
busiest contract volume
203,765
busiest contract prints
41,648
busiest contract avg premium
1.43
busiest contract notional musd
29.2
top premium contract
$225 call, expiry 2026-09-18
top premium avg
40.12
top premium notional musd
121.3
aapl full june notional busd
8.84
aapl full june contracts m
27
spcx minus aapl notional busd
0.31
Rows × columns
1 × 22
Period covered
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 SpaceX's options market in one row: totals, expiry structure, flagship contracts, derived from the stored result.
ColumnTypeRangeNotes
first_print_et date 2026-06-16
option_sessions number every row is 10
prints_m number every row is 2.18
distinct_contracts number every row is 3,199 count
contracts_traded_m number every row is 10.4 count
premium_notional_busd number every row is 9.15 US dollars
month_put_call_ratio number every row is 0.79 ratio or rate
max_session_put_call_ratio number every row is 0.987 ratio or rate
expiries_traded number every row is 22
longest_expiry date 2028-12-15
jun18_expiry_share_pct number every row is 26.7 percent
busiest_contract text 1 distinct value ($175 put, expiry 2026-06-18)
busiest_contract_volume number every row is 203,765 count
busiest_contract_prints number every row is 41,648
busiest_contract_avg_premium number every row is 1.43 US dollars
busiest_contract_notional_musd number every row is 29.2
top_premium_contract text 1 distinct value ($225 call, expiry 2026-09-18)
top_premium_avg number every row is 40.12 US dollars
top_premium_notional_musd number every row is 121.3 US dollars
aapl_full_june_notional_busd number every row is 8.84
aapl_full_june_contracts_m number every row is 27 count
spcx_minus_aapl_notional_busd number every row is 0.31

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.

the exact SQL behind every number
WITH
    (
        SELECT (round(sum(toFloat64(price) * size) * 100 / 1e9, 2), round(sum(size) / 1e6, 1))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:AAPL') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-01 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    ) AS aapl,
    (
        SELECT (
            concat('$', toString(intDiv(toUInt32OrZero(substring(ticker, 14, 8)), 1000)),
                   if(substring(ticker, 13, 1) = 'P', ' put', ' call'),
                   ', expiry 20', substring(ticker, 7, 2), '-', substring(ticker, 9, 2), '-', substring(ticker, 11, 2)),
            toUInt64(sum(size)), toUInt64(count()),
            round(toFloat64(sum(toFloat64(price) * size)) / toFloat64(sum(size)), 2),
            round(sum(toFloat64(price) * size) * 100 / 1e6, 1))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:SPCX') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
        GROUP BY ticker ORDER BY sum(size) DESC LIMIT 1
    ) AS busiest,
    (
        SELECT (
            concat('$', toString(intDiv(toUInt32OrZero(substring(ticker, 14, 8)), 1000)),
                   if(substring(ticker, 13, 1) = 'P', ' put', ' call'),
                   ', expiry 20', substring(ticker, 7, 2), '-', substring(ticker, 9, 2), '-', substring(ticker, 11, 2)),
            round(toFloat64(sum(toFloat64(price) * size)) / toFloat64(sum(size)), 2),
            round(sum(toFloat64(price) * size) * 100 / 1e6, 1))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:SPCX') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
        GROUP BY ticker ORDER BY sum(toFloat64(price) * size) DESC LIMIT 1
    ) AS premium_magnet,
    (
        SELECT max(pc)
        FROM (
            SELECT round(toFloat64(sumIf(size, substring(ticker, 13, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 13, 1) = 'C')), 3) AS pc
            FROM global_markets.options_trades
            WHERE startsWith(ticker, 'O:SPCX') AND length(ticker) = 21
              AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
            GROUP BY toDate(sip_timestamp)
        )
    ) AS max_daily_pc
SELECT
    formatDateTime(toTimeZone(min(sip_timestamp), 'America/New_York'), '%Y-%m-%d %H:%i:%S') AS first_print_et,
    uniqExact(toDate(sip_timestamp)) AS option_sessions,
    round(count() / 1e6, 2) AS prints_m,
    uniqExact(ticker) AS distinct_contracts,
    round(sum(size) / 1e6, 2) AS contracts_traded_m,
    round(sum(toFloat64(price) * size) * 100 / 1e9, 2) AS premium_notional_busd,
    round(toFloat64(sumIf(size, substring(ticker, 13, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 13, 1) = 'C')), 2) AS month_put_call_ratio,
    max_daily_pc AS max_session_put_call_ratio,
    uniqExact(substring(ticker, 7, 6)) AS expiries_traded,
    concat('20', substring(max(substring(ticker, 7, 6)), 1, 2), '-', substring(max(substring(ticker, 7, 6)), 3, 2), '-', substring(max(substring(ticker, 7, 6)), 5, 2)) AS longest_expiry,
    round(100 * toFloat64(sumIf(size, substring(ticker, 7, 6) = '260618')) / toFloat64(sum(size)), 1) AS jun18_expiry_share_pct,
    busiest.1 AS busiest_contract,
    busiest.2 AS busiest_contract_volume,
    busiest.3 AS busiest_contract_prints,
    busiest.4 AS busiest_contract_avg_premium,
    busiest.5 AS busiest_contract_notional_musd,
    premium_magnet.1 AS top_premium_contract,
    premium_magnet.2 AS top_premium_avg,
    premium_magnet.3 AS top_premium_notional_musd,
    aapl.1 AS aapl_full_june_notional_busd,
    aapl.2 AS aapl_full_june_contracts_m,
    round(round(sum(toFloat64(price) * size) * 100 / 1e9, 2) - aapl.1, 2) AS spcx_minus_aapl_notional_busd
FROM global_markets.options_trades
WHERE startsWith(ticker, 'O:SPCX') AND length(ticker) = 21
  AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisSPCX: SpaceX's First Month on the Public Market
The whole SPCX tape in one row: prints, print sizes, and the quote census scalar 1×12 The first short-interest print, with the old-entity cliff as its own receipt scalar 1×9 The information flow in one row: tagging switches on, feed composition, co-tags scalar 1×17 The month on one row: issue to close, with the extremes and their receipts scalar 1×22 Listing day on one row: first quote, opening cross, closing cross, day totals scalar 1×14 The IPO record: the entity behind SPCX since June 12, 2026 scalar 1×8 See all 2,170 queries →