Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-07-25

SPCX: SPCX first month for public market

SpaceX June 2026 debut as SPCX, receipt by receipt: delayed opening cross, top-of-tape dollar-volume run, spread seasoning, day-three options, and shorts.

SpaceX enta public market for June 12, 2026 with ticker SPCX — four letters wey for April still dey trade as anoda company. Dem price am at $135, di stock open at $150 (11.1% above issue), e reach im highest close of $201.99 for 2026-06-16, e touch $146.88 pre-market low, and e finish at $170.7226.5% above issue, 15.5% below di peak — while e rank number four for di whole US tape by regular-hours dollar volume, ahead of NVDA. Every number here na stored query result; expand any panel for di exact SQL.

QueryDi month for one row: issue to close, plus di extremes and dia receipts
The exact SQL behind every number
WITH
    (
        SELECT toFloat64(final_issue_price)
        FROM global_markets.stocks_ipos
        WHERE ticker = 'SPCX'
        ORDER BY listing_date DESC LIMIT 1
    ) AS issue_px,
    (
        SELECT count() FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX'
          AND window_start >= toDateTime('2026-05-01 00:00:00') AND window_start < toDateTime('2026-06-01 00:00:00')
    ) AS may_bars,
    (
        SELECT count() FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= toDateTime('2026-06-19 00:00:00') AND window_start < toDateTime('2026-06-20 00:00:00')
    ) AS spy_jun19,
    (
        SELECT (toString(argMax(et_date, c)), max(c), argMax(c, et_date))
        FROM (
            SELECT
                toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
                argMax(toFloat64(close), window_start) AS c
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPCX'
              AND window_start >= toDateTime('2026-06-12 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
              AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
            GROUP BY et_date
        )
    ) AS closes,
    (
        SELECT max(toFloat64(high)) FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX'
          AND window_start >= toDateTime('2026-06-12 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
    ) AS hi,
    (
        SELECT min(toFloat64(low)) FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX'
          AND window_start >= toDateTime('2026-06-12 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
    ) AS lo
SELECT
    round(issue_px, 2) AS issue_price_usd,
    round(toFloat64(argMin(open, window_start)), 2) AS opening_cross_price,
    round((toFloat64(argMin(open, window_start)) / issue_px - 1) * 100, 1) AS open_pop_vs_issue_pct,
    closes.1 AS peak_close_date,
    round(closes.2, 2) AS peak_close,
    round(closes.3, 2) AS final_close,
    round((closes.3 / issue_px - 1) * 100, 1) AS final_vs_issue_pct,
    round((1 - closes.3 / closes.2) * 100, 1) AS final_below_peak_pct,
    round(hi, 2) AS month_high,
    formatDateTime(toTimeZone(minIf(window_start, toFloat64(high) >= hi - 0.011), 'America/New_York'), '%Y-%m-%d %H:%i') AS month_high_first_bar_et,
    countIf(toFloat64(high) >= hi - 0.011) AS bars_within_cent_of_high,
    argMinIf(transactions, window_start, toFloat64(high) >= hi - 0.011) AS high_minute_trades,
    round(lo, 2) AS month_low_extended,
    formatDateTime(toTimeZone(argMin(window_start, toFloat64(low)), 'America/New_York'), '%Y-%m-%d %H:%i') AS month_low_bar_et,
    countIf(toFloat64(low) <= lo + 0.011) AS bars_within_cent_of_low,
    argMin(transactions, toFloat64(low)) AS low_minute_trades,
    round(minIf(toFloat64(low), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS month_low_regular_hours,
    round(minIf(toFloat64(low), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - lo, 2) AS rth_minus_extended_low,
    round(toFloat64(sum(volume)) / 1e9, 2) AS month_shares_bn,
    uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
    may_bars AS may_2026_bars,
    spy_jun19 AS spy_bars_june19
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPCX'
  AND window_start >= toDateTime('2026-06-12 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')

One ticker, two companies

SPCX na symbol wey dem reuse, so verification receipts go come first. Until April 2026, di ticker dey trade as one thin fund — 13 minute bars for im final active month, between $21.92 and $23.64. For May 2026, e no print anything at all (0 bars). On June 12, dem reassign am to Space Exploration Technologies Corp.:

QueryDi IPO record: di entity wey dey behind SPCX since June 12, 2026
The exact SQL behind every number
WITH
    (
        SELECT (toString(listing_date), toFloat64(final_issue_price), round(toFloat64(total_offer_size) / 1e9, 1),
                primary_exchange, issuer_name, security_description, toFloat64(max_shares_offered))
        FROM global_markets.stocks_ipos
        WHERE ticker = 'SPCX'
        ORDER BY listing_date DESC LIMIT 1
    ) AS ipo,
    (SELECT count() FROM global_markets.stocks_balance_sheets WHERE cik = '0001181412' OR has(tickers, 'SPCX')) AS bs_rows,
    (SELECT count() FROM global_markets.stocks_cash_flow_statements WHERE cik = '0001181412' OR has(tickers, 'SPCX')) AS cf_rows,
    (SELECT count() FROM global_markets.stocks_income_statements WHERE cik = '0001181412' OR has(tickers, 'SPCX')) AS is_rows
SELECT
    ipo.1 AS listing_date,
    ipo.5 AS issuer,
    round(ipo.2, 2) AS final_issue_price_usd,
    ipo.3 AS offer_size_busd,
    round(ipo.7 / 1e6, 1) AS max_shares_offered_m,
    ipo.4 AS listing_exchange,
    ipo.6 AS security,
    bs_rows + cf_rows + is_rows AS fundamentals_rows
QuerySymbol-reuse receipt: thirteen months of SPCX minute bars — May 2026 no dey at all
The exact SQL behind every number
SELECT
    toStartOfMonth(window_start) AS month,
    count() AS minute_bars,
    round(min(toFloat64(low)), 2) AS low_usd,
    round(max(toFloat64(high)), 2) AS high_usd,
    round(toFloat64(sum(volume)) / 1e6, 2) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPCX'
  AND window_start >= toDateTime('2025-06-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
GROUP BY month
ORDER BY month

One "SPCX history" query wey no get window go join two companies wey no relate together — so every window for here start June 12, 2026. Di news feed show di same sharp drop (0 SPCX-tagged articles for di twelve months wey pass), and short interest too: roughly 11461x jump across di gap.

Na paper trail first show

QuerySpaceX 2026 SEC trail by form type, in filing order (CIK 0001181412, deduped by accession)
The exact SQL behind every number
SELECT
    form_type,
    uniqExact(accession_number) AS filings,
    toString(min(filing_date)) AS first_filed,
    toString(max(filing_date)) AS last_filed
FROM global_markets.stocks_sec_edgar_index
WHERE cik = '0001181412'
  AND filing_date >= toDate('2026-01-01') AND filing_date <= toDate('2026-06-30')
GROUP BY form_type
ORDER BY min(filing_date), form_type

If you read am from top to bottom, di IPO just dey arrange itself: confidential draft amendment (DRS/A) come out for 2026-05-07, di public S-1 land for 2026-05-20, dem file 2 amendments to am for 2, den 7 FWP free-writing prospectuses — na roadshow paper — between 2026-06-04 and 2026-06-11. Exchange registration and certification show face 2026-06-10; di effectiveness notice and di first one out of 10 insider Form 3s drop for 2026-06-11; di final 424B4 prospectus and one S-8 land on listing day sef. After dat one, di rhythm change go 8-Ks:

QueryEvery SpaceX 8-K wey dem file for June 2026, with di opening lines of each
The exact SQL behind every number
SELECT
    toString(filing_date) AS filed,
    form_type,
    replaceAll(substring(items_text, 1, 170), '\n', ' · ') AS opening_lines
FROM global_markets.stocks_8k_text
WHERE cik = '0001181412'
  AND filing_date >= toDate('2026-06-01') AND filing_date <= toDate('2026-06-30')
ORDER BY filing_date

6 of dem show for inside two weeks: unregistered share sales wey happen as di IPO close (Item 3.02); one material agreement with X67 Inc., wey be wholly owned subsidiary (1.01); board and officer changes (5.02); one Regulation FD notice (7.01); and Item 8.01 notices about one senior unsecured notes offering wey start June 22, according to di 8-K wey dem file 2026-06-23. One June 23 headline measure di size: "SpaceX's Fundraising Is Not Over With a $20 Billion New Bond Offering". Di offering window and di stock month lows dey share di same calendar days; dis data no dey talk anytin pass dat one.

Listing day: market no open by 9:30

IPO no dey open with the market. Nasdaq start to publish SPCX quotes by 09:50:01 ET — dem lock am, na indicative bid-equals-ask pairs wey dey waka the book toward clearing price — and for almost two hours, no trade happen at all. The first public print for SpaceX na the opening cross itself: 58.21 million shares at $150, wey dem stamp 11:46:45 ET under condition codes 17, 9 and 41 (market-center opening print, cross, trade-through exempt). The stock run go 176.52, e hold 149.34 low, and e close with 7.85 million-share closing cross at $160.9519.2% over issue. Totals: 513.5 million shares, $84.1 billion, 8.57 million prints, inside regular session wey be just over four hours.

QueryListing day for one row: first quote, opening cross, closing cross, day totals
The exact SQL behind every number
WITH
    (
        SELECT toFloat64(final_issue_price)
        FROM global_markets.stocks_ipos
        WHERE ticker = 'SPCX'
        ORDER BY listing_date DESC LIMIT 1
    ) AS issue_px,
    (
        SELECT (formatDateTime(toTimeZone(min(sip_timestamp), 'America/New_York'), '%H:%i:%S'), round(count() / 1e6, 2))
        FROM global_markets.cache_stocks_quotes
        WHERE ticker = 'SPCX'
          AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-06-13 00:00:00', 9)
    ) AS q,
    (
        SELECT (round(toFloat64(sum(volume)) / 1e6, 1), round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1),
                round(max(toFloat64(high)), 2), round(min(toFloat64(low)), 2))
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX'
          AND window_start >= toDateTime('2026-06-12 00:00:00') AND window_start < toDateTime('2026-06-13 00:00:00')
    ) AS bars
SELECT
    q.1 AS first_quote_et,
    q.2 AS day_quote_updates_m,
    formatDateTime(toTimeZone(minIf(sip_timestamp, has(conditions, 17)), 'America/New_York'), '%H:%i:%S') AS opening_cross_et,
    round(toFloat64(maxIf(size, has(conditions, 17))) / 1e6, 2) AS opening_cross_shares_m,
    round(toFloat64(argMaxIf(price, size, has(conditions, 17))), 2) AS opening_cross_price,
    formatDateTime(toTimeZone(minIf(sip_timestamp, has(conditions, 8)), 'America/New_York'), '%H:%i:%S') AS closing_cross_et,
    round(toFloat64(maxIf(size, has(conditions, 8))) / 1e6, 2) AS closing_cross_shares_m,
    round(toFloat64(argMaxIf(price, size, has(conditions, 8))), 2) AS closing_cross_price,
    round((toFloat64(argMaxIf(price, size, has(conditions, 8))) / issue_px - 1) * 100, 1) AS close_vs_issue_pct,
    round(count() / 1e6, 2) AS day_prints_m,
    bars.1 AS day_shares_m,
    bars.2 AS day_dollar_bn,
    bars.3 AS day_high,
    bars.4 AS day_low
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
  AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-06-13 00:00:00', 9)

The quote stream show the price-discovery half. Before the cross, the only NBBO updates na the locked indicatives (18 inside the 09:30 half hour, spread zero by construction). Then quoting just flood in: 445211 updates for the 11:30 bucket alone, at median bid-ask spread of 30 cents (18.6 bps). By the 13:00 bucket, the median don become 6 cents (3.5 bps) — spread no dey born tight; this one tighten within two hours.

QueryDay one by half hour: quote updates and di median spread wey dey find im level
The exact SQL behind every number
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_bucket,
    count() AS quote_updates,
    round(quantileDeterministicIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price), toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS med_spread_cents,
    round(quantileDeterministicIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, toUInt64(toUnixTimestamp64Micro(sip_timestamp)), bid_price > 0 AND ask_price >= bid_price), 2) AS med_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPCX'
  AND sip_timestamp >= toDateTime64('2026-06-12 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-06-12 20:00:00', 9)
GROUP BY et_bucket
ORDER BY et_bucket

Session by session

QueryDi sessions: regular-hours close, close-over-close change, full-day volume
The exact SQL behind every number
SELECT
    et_date,
    close_usd,
    round(if(prev_close = 0, NULL, (close_usd / prev_close - 1) * 100), 1) AS change_pct,
    shares_m,
    dollar_bn
FROM (
    SELECT et_date, close_usd, shares_m, dollar_bn,
           lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM (
        SELECT
            toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
            round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS close_usd,
            round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m,
            round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_bn
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX'
          AND window_start >= toDateTime('2026-06-12 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
        GROUP BY et_date
    )
)
ORDER BY et_date

Wetin happen: 19.3% for di second session, one $201.99 peak close for 2026-06-16, den three straight drops — di sharpest na -16.4% move for 2026-06-22, di first session afta di June 19 holiday and di day dem start di notes offering. Di slide reach im bottom for $152.74 for 2026-06-26; di last two sessions close 7.4% and 4.1% higher (2026-06-29 get im own daily recap and tick-level deep-dive). Volume fall faster dan price recover: 513.5 million shares for day one, 75.8 million for 2026-06-30.

Both month extremes survive one single-print cross-check — and dem dey inside different market phases. Di $225.64 high print for 2026-06-16 10:02 ET: 2 bars within one cent, 47699 trades for di first peak minute. Di $146.88 low print for 2026-06-23 04:11 ET wit 2 bars within one cent and 14844 trades dat minute. Di regular-hours low na $147.11, $0.23 above am; any "June low" figure suppose tok which one e mean.

Di fourth-biggest ticker for di tape

Arrange everi US-listed symbol by regular-hours dollar volume from June 12 go reach 30 — na full whole-market aggregation, no be candidate list — and di brand-new listing sidon for fourth: $344.6 billion, e only dey behind MU ($585.4 billion), SPY and QQQ, e dey front of NVDA ($253.1 billion), TSLA and AAPL. Everi row get di same 12 sessions to work with.

QueryDi whole US tape ranked by June 12–30 regular-hours dollar volume
The exact SQL behind every number
SELECT
    ticker,
    round(sum(toFloat64(volume) * toFloat64(close)) / 1e9, 1) AS regular_hours_dollar_bn,
    round(100 * sum(toFloat64(volume) * toFloat64(close)) / max(sum(toFloat64(volume) * toFloat64(close))) OVER (), 1) AS pct_of_leader,
    toUInt8(ticker = 'SPCX') AS is_spcx
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-12 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')
  AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker
ORDER BY regular_hours_dollar_bn DESC
LIMIT 12

Wetin dey inside the tape

QueryDi whole SPCX tape for one row: prints, print sizes, and di quote census
The exact SQL behind every number
WITH
    (
        SELECT (round(count() / 1e6, 2),
                round(100.0 * countIf(bid_price > 0 AND ask_price > 0 AND ask_price > bid_price) / count(), 2),
                countIf(bid_price > 0 AND ask_price > 0 AND ask_price = bid_price),
                countIf(bid_price > 0 AND ask_price > 0 AND ask_price < bid_price),
                countIf(bid_price <= 0 OR ask_price <= 0),
                countIf(bid_price > 0 AND ask_price > 0 AND ask_price < bid_price AND sip_timestamp < toDateTime64('2026-06-13 00:00:00', 9)),
                countIf(bid_price > 0 AND ask_price > 0 AND ask_price < bid_price AND sip_timestamp >= toDateTime64('2026-06-30 00:00:00', 9)))
        FROM global_markets.cache_stocks_quotes
        WHERE ticker = 'SPCX'
          AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
    ) AS quote_census
SELECT
    round(count() / 1e6, 2) AS prints_m,
    quantileDeterministic(0.5)(toFloat64(size), toUInt64(abs(sequence_number))) AS median_print_shares,
    round(avg(toFloat64(size)), 1) AS avg_print_shares,
    round(100.0 * countIf(size < 100) / count(), 1) AS odd_lot_pct_of_prints,
    round(100.0 * countIf(toFloat64(size) != round(toFloat64(size))) / count(), 2) AS fractional_pct_of_prints,
    quote_census.1 AS nbbo_updates_m,
    quote_census.2 AS clean_two_sided_pct,
    quote_census.3 AS locked_updates,
    quote_census.4 AS crossed_updates,
    quote_census.5 AS one_sided_or_empty_updates,
    quote_census.6 AS crossed_first_session,
    quote_census.7 AS crossed_final_session
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
  AND sip_timestamp >= toDateTime64('2026-06-12 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)

The texture na small-print and e get plenty quotes: 41.01 million prints for median of 10 shares (average na 64.2 — big crosses dey pull the mean), 81.9% odd lots (under 100 shares), 8.73% fractional — e align with retail apps wey dey slice orders, with market makers for the other side. The quote half: 11.78 million NBBO updates, 99.32% clean two-sided; 46377 momentarily crossed (bid above ask — venues no dey sync), e dey decay from 17730 for day one go 437 for June 30; 34118 locked; 116 one-sided or empty. Spread statistics below no include crossed and one-sided quotes, with drop counts inside the panel.

How di spread take settle

Di main tori of a new listing na im spread finding level — dem measure am per session as both di median across updates and di time-weighted average. Day one start for di 11:46 cross; if you include di locked pre-open indicatives, e go flatter di number.

QueryDi seasoning curve: regular-hours spread by session, per-update and time-weighted
The exact SQL behind every number
SELECT
    session,
    quote_updates,
    invalid_dropped,
    med_spread_cents,
    tw_spread_cents,
    med_spread_bps,
    tw_spread_bps,
    round(100 * (tw_spread_bps / min(tw_spread_bps) OVER () - 1), 0) AS pct_above_tightest_session
FROM (
    SELECT
        session,
        count() AS quote_updates,
        countIf(NOT valid) AS invalid_dropped,
        round(quantileDeterministicIf(0.5)(spread, toUInt64(ts_us), valid) * 100, 1) AS med_spread_cents,
        round(sumIf(spread * dt, valid AND dt > 0) / sumIf(dt, valid AND dt > 0) * 100, 1) AS tw_spread_cents,
        round(quantileDeterministicIf(0.5)(spread / mid * 10000, toUInt64(ts_us), valid), 2) AS med_spread_bps,
        round(sumIf(spread / mid * dt, valid AND dt > 0) / sumIf(dt, valid AND dt > 0) * 10000, 2) AS tw_spread_bps
    FROM (
        SELECT session, spread, mid, valid, ts_us,
               greatest(if(next_us = 0, end_us, least(next_us, end_us)) - ts_us, 0) AS dt
        FROM (
            SELECT
                toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session,
                toFloat64(ask_price) - toFloat64(bid_price) AS spread,
                (toFloat64(ask_price) + toFloat64(bid_price)) / 2 AS mid,
                (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) AS valid,
                toUnixTimestamp64Micro(sip_timestamp) AS ts_us,
                toUnixTimestamp64Micro(toDateTime64(concat(toString(toDate(toTimeZone(sip_timestamp, 'America/New_York'))), ' 20:00:00'), 6, 'UTC')) AS end_us,
                leadInFrame(toUnixTimestamp64Micro(sip_timestamp)) OVER (PARTITION BY toDate(toTimeZone(sip_timestamp, 'America/New_York')) ORDER BY sip_timestamp ASC, sequence_number ASC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS next_us
            FROM global_markets.cache_stocks_quotes
            WHERE ticker = 'SPCX'
              AND sip_timestamp >= toDateTime64('2026-06-12 15:46:00', 9)
              AND sip_timestamp < toDateTime64('2026-07-01 00:00:00', 9)
              AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
        )
    )
    GROUP BY session
)
ORDER BY session

Time-weighted, di spread move from 23.5 cents (7.64 bps) for day one go 7.9 cents (4.7 bps) for 2026-06-30 — e tight by roughly two-thirds for dollar, but far less for relative terms; di dollar and relative series dey diverge for di stretch wey di price travel for $146.88–$225.64 range. Di tightest session na 2026-06-22 for 2 bps, with re-widenings for 2026-06-17 (8.96 bps, di session after di price peak) and 2026-06-24 (7.38 bps), di latter coincide with volume wey drop go 71.7 million shares from 152.3 million. For scale, check three anchors from June 30:

QueryJune 30 anchors: a mega-cap, SPCX, and a thin small-cap, same session, same math
The exact SQL behind every number
SELECT
    ticker,
    count() AS quote_updates,
    countIf(NOT valid) AS invalid_dropped,
    round(quantileDeterministicIf(0.5)(spread, toUInt64(ts_us), valid) * 100, 1) AS med_spread_cents,
    round(quantileDeterministicIf(0.5)(spread / mid * 10000, toUInt64(ts_us), valid), 2) AS med_spread_bps,
    round(sumIf(spread / mid * dt, valid AND dt > 0) / sumIf(dt, valid AND dt > 0) * 10000, 2) AS tw_spread_bps
FROM (
    SELECT ticker, spread, mid, valid, ts_us,
           greatest(if(next_us = 0, end_us, least(next_us, end_us)) - ts_us, 0) AS dt
    FROM (
        SELECT
            ticker,
            toFloat64(ask_price) - toFloat64(bid_price) AS spread,
            (toFloat64(ask_price) + toFloat64(bid_price)) / 2 AS mid,
            (bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) AS valid,
            toUnixTimestamp64Micro(sip_timestamp) AS ts_us,
            toUnixTimestamp64Micro(toDateTime64('2026-06-30 20:00:00', 6, 'UTC')) AS end_us,
            leadInFrame(toUnixTimestamp64Micro(sip_timestamp)) OVER (PARTITION BY ticker ORDER BY sip_timestamp ASC, sequence_number ASC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS next_us
        FROM global_markets.cache_stocks_quotes
        WHERE ticker IN ('SPCX', 'AAPL', 'NATH')
          AND sip_timestamp >= toDateTime64('2026-06-30 13:30:00', 9)
          AND sip_timestamp < toDateTime64('2026-06-30 20:00:00', 9)
    )
)
GROUP BY ticker
ORDER BY ticker

Apple im median quoted spread: 3 cents (1.04 bps). SPCX: 6 cents (3.54 bps). Nathan’s Famous, with 1036 quote updates all session: 30 cents (29.66 bps). Eighteen days in, SpaceX quote few times wider than a mega-cap, plenty times tighter than a thin name.

Options from day three

QuerySpaceX options market for one row: totals, expiry structure, flagship contracts
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)

Options wey dem list for 2026-06-16 09:30:00 ET — na di stock third session. For 10 option sessions: 2.18 million prints, 10.4 million contracts across 3199 listings, $9.15 billion in premium (price times di standard 100-share multiplier) — $0.31 billion more dan wetin AAPL options collect for di ENTIRE month of June ($8.84 billion on 27 million contracts; ten sessions against one full month — na deliberate asymmetry wey di point still stand). 22 expiries trade, from one weekly wey expire Thursday June 18 (di market close dat Friday) go reach 2028-12-15 LEAPS; dat first weekly alone carry 26.7% of month volume. Di busiest contract: na di $175 put, expiry 2026-06-18203765 contracts across 41648 prints for $1.43 average premium. Di premium magnet: na di $225 call, expiry 2026-09-18 — $121.3 million for $40.12.

QueryOptions session by session: contracts, di call/put split, and di put/call ratio
The exact SQL behind every number
SELECT
    toDate(sip_timestamp) AS session,
    count() AS prints,
    toUInt64(sum(size)) AS contracts_traded,
    toUInt64(sumIf(size, substring(ticker, 13, 1) = 'C')) AS call_contracts,
    toUInt64(sumIf(size, substring(ticker, 13, 1) = 'P')) AS put_contracts,
    round(toFloat64(sumIf(size, substring(ticker, 13, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 13, 1) = 'C')), 2) AS put_call_ratio,
    round(100 * toFloat64(sum(size)) / max(toFloat64(sum(size))) OVER (), 1) AS pct_of_busiest_session
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 session
ORDER BY session

Calls out-trade puts for every single session: di daily put/call ratio peak for 0.987 on 2026-06-17, near di price top, and e bottom for 0.46 on 2026-06-29, di session wey di stock close 7.4% higher — put volume peak with di price, no be di trough. Di busiest session na 2026-06-18, di first weekly expiry day: 1844490 contracts.

QueryWhere di contracts land: call and put volume by strike bucket
The exact SQL behind every number
SELECT
    concat('$', toString(toUInt32(bucket))) AS strike_bucket,
    call_contracts,
    put_contracts,
    round(100.0 * put_contracts / (call_contracts + put_contracts), 1) AS put_share_pct,
    round(100 * (call_contracts + put_contracts) / max(call_contracts + put_contracts) OVER (), 1) AS pct_of_biggest_bucket
FROM (
    SELECT
        least(floor(toFloat64(toUInt32OrZero(substring(ticker, 14, 8))) / 1000 / 25) * 25, 450) AS bucket,
        toUInt64(sumIf(size, substring(ticker, 13, 1) = 'C')) AS call_contracts,
        toUInt64(sumIf(size, substring(ticker, 13, 1) = 'P')) AS put_contracts
    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 bucket
)
ORDER BY toUInt32OrZero(substring(strike_bucket, 2))

Di strike map na barbell around di price path. Di $150 bucket carry di most volume, split 55% puts — at-the-money two-way traffic. Below di trading range, puts own di book (92.7% of di $125 bucket); above am, na calls (1.6% puts for $250), with 42228 call contracts for di $450 bucket, roughly double di month high.

QueryWetin e cost to trade di busiest contract: NBBO spread over im three sessions
The exact SQL behind every number
SELECT
    toDate(sip_timestamp) AS session,
    count() AS nbbo_updates,
    countIf(bid_price <= 0 OR ask_price < bid_price) AS dropped_bad_quotes,
    round(avgIf(toFloat64(ask_price) - toFloat64(bid_price), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS avg_spread_cents,
    round(quantileDeterministicIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price), toUInt64(sequence_number), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS med_spread_cents,
    round(100 * avgIf((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2), bid_price > 0 AND ask_price >= bid_price), 2) AS avg_spread_pct_of_mid
FROM global_markets.cache_options_quotes
WHERE ticker = 'O:SPCX260618P00175000'
  AND sip_timestamp >= toDateTime64('2026-06-16 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-06-19 00:00:00', 9)
GROUP BY session
ORDER BY session

Trading cost tight from di first hour: di busiest contract average 10.3-cent NBBO spread for im first session (6.7% of mid; di median na 10 cents), di median tighten to 5 cents by expiry day (5.23% of mid, 93198 quote updates, 37 bad quotes drop and count). Nickel-to-dime spreads for di liquid center of one days-old book — di far wings cost more, and dis panel no dey speak for dem.

Di news switch and di shorts

QueryDi information flow for one row: tagging switches on, feed composition, co-tags
The exact SQL behind every number
WITH
    (
        SELECT count()
        FROM global_markets.stocks_news
        WHERE has(tickers, 'SPCX')
          AND published_utc >= toDateTime('2025-06-01 00:00:00')
          AND published_utc < toDateTime('2026-06-01 00:00:00')
    ) AS prior_12mo,
    (
        SELECT (toString(d), n)
        FROM (
            SELECT toDate(toTimeZone(published_utc, 'America/New_York')) AS d, count() AS n
            FROM global_markets.stocks_news
            WHERE has(tickers, 'SPCX')
              AND published_utc >= toDateTime('2026-06-01 00:00:00')
              AND published_utc < toDateTime('2026-07-01 04:00:00')
            GROUP BY d ORDER BY n DESC, d ASC LIMIT 1
        )
    ) AS peak_day,
    (
        SELECT (JSONExtractString(any(publisher), 'name'), count())
        FROM global_markets.stocks_news
        WHERE has(tickers, 'SPCX')
          AND published_utc >= toDateTime('2026-06-01 00:00:00')
          AND published_utc < toDateTime('2026-07-01 04:00:00')
        GROUP BY JSONExtractString(publisher, 'name') ORDER BY count() DESC LIMIT 1
    ) AS top_pub,
    (
        SELECT n
        FROM (
            SELECT toDate(toTimeZone(published_utc, 'America/New_York')) AS d, count() AS n
            FROM global_markets.stocks_news
            WHERE has(tickers, 'SPCX')
              AND published_utc >= toDateTime('2026-06-01 00:00:00')
              AND published_utc < toDateTime('2026-07-01 04:00:00')
            GROUP BY d ORDER BY d ASC LIMIT 1
        )
    ) AS first_day_n,
    (
        SELECT substring(title, 1, 90)
        FROM global_markets.stocks_news
        WHERE has(tickers, 'SPCX')
          AND published_utc >= toDateTime('2026-06-22 04:00:00')
          AND published_utc < toDateTime('2026-06-24 04:00:00')
          AND title ILIKE '%bond%'
        ORDER BY published_utc ASC LIMIT 1
    ) AS notes_headline
SELECT
    prior_12mo AS prior_12_months_articles,
    toString(min(toDate(toTimeZone(published_utc, 'America/New_York')))) AS first_tagged_day,
    first_day_n AS first_day_articles,
    peak_day.1 AS peak_day_date,
    peak_day.2 AS peak_day_articles,
    count() AS june_articles,
    uniqExact(JSONExtractString(publisher, 'name')) AS publishers,
    top_pub.1 AS top_publisher,
    top_pub.2 AS top_publisher_articles,
    round(100.0 * top_pub.2 / count(), 0) AS top_publisher_pct,
    countIf(has(tickers, 'TSLA')) AS tsla_co_articles,
    countIf(has(tickers, 'NVDA')) AS nvda_co_articles,
    countIf(hasAny(tickers, ['GOOG', 'GOOGL', 'GOOGN', 'GOOGM'])) AS alphabet_co_articles,
    countIf(has(tickers, 'RKLB')) AS rklb_co_articles,
    countIf(has(tickers, 'ASTS')) AS asts_co_articles,
    countIf(has(tickers, 'TSLA')) - countIf(has(tickers, 'RKLB')) AS tsla_minus_rklb,
    notes_headline AS notes_offering_headline
FROM global_markets.stocks_news
WHERE has(tickers, 'SPCX')
  AND published_utc >= toDateTime('2026-06-01 00:00:00')
  AND published_utc < toDateTime('2026-07-01 04:00:00')

News tagging na im own receipt: 0 SPCX-tagged articles for di twelve months before listing, den 14 on 2026-06-11 (pricing day), one 42-article peak on 2026-06-12, 347 for di month. Read dose counts with yeye: 4 publishers, and The Motley Fool alone write 65% — na one feed attention, no be world media own. Co-tags show di framing: TSLA dey inside 83 articles, NVDA dey inside 59, Alphabet (share classes wey dem collapse) dey inside 57, while Rocket Lab (21) and AST SpaceMobile (15) dey far behind: dis feed cover am as mega-cap story, no be space-sector one.

QueryFINRA off-exchange short volume by session: marked-short share and reported volume
The exact SQL behind every number
SELECT
    date,
    round(toFloat64(any(short_volume)) / 1e6, 2) AS short_shares_m,
    round(toFloat64(any(total_volume)) / 1e6, 2) AS offexchange_total_m,
    round(100 * toFloat64(any(short_volume)) / toFloat64(any(total_volume)), 1) AS short_pct_of_offexchange
FROM global_markets.stocks_short_volume
WHERE ticker = 'SPCX' AND date >= toDate('2026-06-01') AND date <= toDate('2026-06-30')
GROUP BY date
ORDER BY date

Di shorts show face from day one — with definition wey dem attach. Off-exchange short volume na di share of FINRA-reported (off-exchange) volume wey dem mark short; plenty of am na market makers dey sell short to fill customer buys — na routine plumbing, and e no be short interest. SPCX im marked-short share start from 33.7% on listing day and climb go 71% by 2026-06-30, while reported off-exchange volume fall from 131.53 million shares go 35.77 million. Di co-movement na wetin dis data fit show; wetin e mean no dey inside dis data.

QueryDi first short-interest print, with di old-entity cliff as im own receipt
The exact SQL behind every number
SELECT
    toString(maxIf(settlement_date, settlement_date >= toDate('2026-06-01'))) AS new_entity_settlement,
    round(toFloat64(maxIf(short_interest, settlement_date >= toDate('2026-06-01'))) / 1e6, 2) AS shares_short_m,
    round(toFloat64(maxIf(avg_daily_volume, settlement_date >= toDate('2026-06-01'))) / 1e6, 2) AS avg_daily_volume_m,
    maxIf(days_to_cover, settlement_date >= toDate('2026-06-01')) AS reported_days_to_cover,
    round(toFloat64(maxIf(short_interest, settlement_date >= toDate('2026-06-01'))) / toFloat64(maxIf(avg_daily_volume, settlement_date >= toDate('2026-06-01'))), 2) AS implied_days_to_cover,
    countIf(settlement_date > toDate('2026-06-15')) AS settlements_published_after_june15,
    toString(argMaxIf(settlement_date, settlement_date, settlement_date < toDate('2026-06-01'))) AS last_old_entity_settlement,
    argMaxIf(short_interest, settlement_date, settlement_date < toDate('2026-06-01')) AS last_old_entity_short_interest,
    round(toFloat64(maxIf(short_interest, settlement_date >= toDate('2026-06-01'))) / toFloat64(argMaxIf(short_interest, settlement_date, settlement_date < toDate('2026-06-01'))), 0) AS jump_multiple_vs_old_entity
FROM global_markets.stocks_short_interest
WHERE ticker = 'SPCX'

Actual short interest — open positions as of one settlement date — print for di first time on 2026-06-30: 111.3 million shares short against one 151.63 million-share average day. Di vendor report days-to-cover as 1 — na floor; di raw ratio na 0.73: shorts fit cover inside under one average day. Di prior entity im final settlement (2026-03-31) show 9711 shares — di symbol-reuse cliff again. Since dis page first edition, 1 later settlement (June 30) don publish, and di source restate di June 15 print substantially upward — di figures wey dey up na di current record, wey dem re-run for every regeneration, and dem hold di page for review anytime dem move outside dia declared ranges. Dat na dis page im revision machinery dey work as e suppose.

Data notes

Full data notes
  • Entity boundary (the basis for verified_tickers). Di stocks_ipos record (Space Exploration Technologies Corp., wey dem list 2026-06-12 for $135 on XNAS), di May-2026 zero-bar gap, and di news-tag switch na im confirm di June 12 reassignment. No row wey dey before June 12 dey go to SpaceX; frontmatter verified_tickers: ["SPCX"] na deliberate editorial assertion for June 12–30, 2026, for these receipts.
  • Raw trade-tape sums dey double-count auction volume (official open/close re-reports); share and dollar totals come from minute aggregates, cross sizes from di cross prints (di June 29 deep-dive derive dat correction).
  • Day one na partial session — quotes from 09:50:01 ET, first print 11:46:45 ET. Day-one high/low na minute-bar extremes; di month extremes carry within-a-cent corroboration counts for di scoreboard.
  • EDGAR counting dedupes by accession_number and select CIK 0001181412; di unrelated "Space Exploration I" Form D filer (CIK 0002130081) dem exclude am by construction.
  • No fundamentals dey to publish: 0 SpaceX rows across di three financial-statement tables.
  • Di June 29 FINRA short-volume file dey truncated market-wide (di source file end mid-alphabet); SPCX sort before di cutoff and im row complete — di June 29 deep-dive carry di short-volume probe receipt.
  • June 19 na market-wide closure, dem observe am no be assumption: 0 SPY bars dat day, so SPCX im June span 12 sessions.

Methodology

  • Dem store timestamps for UTC and filter am with raw UTC bounds; June 2026 na entirely EDT, so regular hours na 13:30–20:00 UTC (9:30 am–4:00 pm ET). toTimeZone dey show only for SELECT lists.
  • Session close na di last regular-hours minute bar; auction prices dey come from di cross prints (day one: $161.29 by bar, $160.95 by cross).
  • Dollar volume na minute close times minute volume, wey dem sum up — na close-weighted proxy for notional.
  • Options expiry, type and strike dem dey re-parse from di OCC ticker (di table expiration_date column no dey reliable); premium notional dey assume di 100-share multiplier.
  • Per-update spread statistics dey weight each NBBO update equally; time-weighted statistics dey weight each quote by how long e stand. Medians dey use deterministic quantiles.
  • Generation na batch-only through di gated read-only path; di public page no dey ever query live. Di warehouse dey keep full tick history with no rolling expiry, so dis analysis fit reproduce from di same tables any time. Warehouse state as of July 3, 2026.

Dis listing dey inside one wider 2026 story — di first half IPO market, as dem measure am dey put am for context. Every panel na one stored object — chart, table and SQL. Carry any query further for di Strasmore terminal.