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.
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
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
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 →