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.
- 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.
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 (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)
Работайте с этими данными в своём ИИ-ассистенте
Открывается готовым к запросам, с данными этой страницы. Бесплатно, без аккаунта.