Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-08-02

SPCX: SPCX Week E Go Underwater

For July 6, 2026, SPCX lose index-add flow, close below June first-trade price for three of five sessions, and set new post-listing low on Friday.

SPCX spend the week of July 6, 2026 doing wetin young listings no suppose do: e go underwater. From the previous week $161.86 close, the stock fall -10.2% across five sessions reach $145.4, and e close below the $150 first-trade price for 3 out of 5 sessions. E also print new post-listing closing low on Friday. The week open with the last strong index-add flow, then close with the quietest tape since listing. The first analyst ratings and first quarterly numbers after the company enter public market land in between. Every number below na stored query; expand any panel to see the SQL.

First, make we check the receipts: which SPCX be this

SPCX before belong to another security wey no get connection, so every window for here dey tied to the entity wey list on June 12, 2026, Space Exploration Technologies Corp. (the deep-dive for the first month get the complete verification):

QueryThe symbol trading history by month: the gap and the new entity wey arrive
monthminute barslow usdhigh usdshares m
2025-07-015824.326.40.02
2025-08-01482425.010.02
2025-09-016423.7725.350.02
2025-10-014524.6325.910.02
2025-11-012725.325.730.01
2025-12-0110121.3225.570.04
2026-01-014621.6722.510.02
2026-02-013021.6922.570.01
2026-03-016421.6222.590.04
2026-04-011321.9223.640.01
2026-06-0110960146.88225.642168.65
2026-07-016608145.07176.14485.33
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-07-01 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
GROUP BY month
ORDER BY month
Run am yourself

The gap wey last for months na the old entity comot for the tape; the heavy bars from June 2026 go forward na the new one, and everything wey dey below concern only those prints.

Di week for one row

QuerySPCX, week of July 6, 2026: the slide, wey dem receipt
prior week closeweek closeweek change pctweek highweek lowweek low bar etrth minutes wey dey below 150underwater threshold usdcloses below 150prior closing lownew low margin usdrth dollar bnweek shares msession days wey dem observe
161.86145.4-10.2167.9145.072026-07-10 15:597901503152.747.3441.7327.75
The exact SQL behind every number
WITH
    (
        SELECT argMax(toFloat64(close), window_start) FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX' AND window_start >= toDateTime('2026-07-02 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    ) AS pw_close,
    (
        SELECT min(toFloat64(low)) FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX' AND window_start >= toDateTime('2026-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
    ) AS lo,
    (
        SELECT max(toFloat64(high)) FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPCX' AND window_start >= toDateTime('2026-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
    ) AS hi,
    (
        SELECT min(c) FROM (
            SELECT argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) 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-03 00:00:00')
            GROUP BY toDate(toTimeZone(window_start, 'America/New_York'))
        )
    ) AS prior_low_close,
    (
        SELECT countIf(c < 150) FROM (
            SELECT argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS c
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPCX' AND window_start >= toDateTime('2026-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
            GROUP BY toDate(toTimeZone(window_start, 'America/New_York'))
        )
    ) AS closes_under_150
SELECT
    round(pw_close, 2) AS prior_week_close,
    round(toFloat64(argMaxIf(close, window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)), 2) AS week_close,
    round((toFloat64(argMaxIf(close, window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)) / pw_close - 1) * 100, 1) AS week_change_pct,
    round(hi, 2) AS week_high,
    round(lo, 2) AS week_low,
    formatDateTime(toTimeZone(minIf(window_start, toFloat64(low) <= lo + 0.011), 'America/New_York'), '%Y-%m-%d %H:%i') AS week_low_bar_et,
    countIf(toFloat64(close) < 150 AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS rth_minutes_below_150,
    150 AS underwater_threshold_usd,
    closes_under_150 AS closes_below_150,
    round(prior_low_close, 2) AS prior_closing_low,
    round(prior_low_close - toFloat64(argMaxIf(close, window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)), 2) AS new_low_margin_usd,
    round(sumIf(toFloat64(close) * toFloat64(volume), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / 1e9, 1) AS rth_dollar_bn,
    round(toFloat64(sum(volume)) / 1e6, 1) AS week_shares_m,
    uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS session_days_observed
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPCX'
  AND window_start >= toDateTime('2026-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
Run am yourself

-10.2% for di week, e reach $167.9 high and $145.07 low (e print 2026-07-10 15:59 ET), plus 790 regular-session minutes below di $150 first-trade price. Friday $145.4 close go below di previous post-listing closing low of $152.74.

One important note: "underwater" mean say e dey below di June 12 opening-cross price, na wetin public buyers first pay, as dem record am for di deep-dive for di first month; compared with di lower offering price, di listing still dey above water. Total regular-hours dollars: 41.7B across 5 sessions.

Session by session: flow dey comot

QuerySPCX by session: close, change, shares, dollars
et dateclose usdchange pctshares mdollar bn
2026-07-06160.4-0.9109.817.55
2026-07-07149.58-6.774.111.3
2026-07-08148.33-0.857.78.58
2026-07-09152.122.643.36.53
2026-07-10145.4-4.442.76.31
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-07-02 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
        GROUP BY et_date
    )
)
WHERE et_date >= toDate('2026-07-06')
ORDER BY et_date
Run am yourself

Monday carry 17.55B, as the tail end of the index-add flow show for the index-add deep-dive. Then the flow comot: 11.3B on Tuesday (the -6.7% session wey get the first sub-$150 close, according to the decline-from-peak note), e drop reach 6.31B by Friday, about one-third of Monday tape. Thursday +2.6% bounce no hold; Friday close -4.4% lower at $145.4.

Wetin the news feed really talk

Wetin the feed dey write as the tape dey fall? The titles carry wetin simple count no fit show.

QueryThe week's news flow: counts, plus the three storyline receipts, quoted as dem talk am
week articlespublishersindex add headlinesquiet period headlinequiet period dateresults headlineresults dateborrowing headlineborrowing date
5135Analysts Go All-In on SpaceX as the Quiet Period Ends2026-07-07SpaceX Lost $4.28 Billion on $4.7 Billion in Revenue Last Quarter2026-07-09SpaceX Borrowed $25 Billion and Is Buying Up AI Companies2026-07-07
The exact SQL behind every number
WITH
    (
        SELECT (arrayElement(splitByString('. ', argMin(title, published_utc)), 1), toString(min(toDate(toTimeZone(published_utc, 'America/New_York')))))
        FROM global_markets.stocks_news
        WHERE has(tickers, 'SPCX') AND published_utc >= toDateTime('2026-07-06 04:00:00') AND published_utc < toDateTime('2026-07-11 04:00:00')
          AND title ILIKE '%quiet period%'
    ) AS quiet,
    (
        SELECT (arrayElement(splitByString('. ', argMin(title, published_utc)), 1), toString(min(toDate(toTimeZone(published_utc, 'America/New_York')))))
        FROM global_markets.stocks_news
        WHERE has(tickers, 'SPCX') AND published_utc >= toDateTime('2026-07-06 04:00:00') AND published_utc < toDateTime('2026-07-11 04:00:00')
          AND title ILIKE '%lost%revenue%'
    ) AS results,
    (
        SELECT (arrayElement(splitByString('. ', argMin(title, published_utc)), 1), toString(min(toDate(toTimeZone(published_utc, 'America/New_York')))))
        FROM global_markets.stocks_news
        WHERE has(tickers, 'SPCX') AND published_utc >= toDateTime('2026-07-06 04:00:00') AND published_utc < toDateTime('2026-07-11 04:00:00')
          AND title ILIKE '%borrowed%'
    ) AS borrow
SELECT
    count() AS week_articles,
    uniqExact(JSONExtractString(publisher, 'name')) AS publishers,
    countIf(title ILIKE '%nasdaq-100%') AS index_add_headlines,
    quiet.1 AS quiet_period_headline,
    quiet.2 AS quiet_period_date,
    results.1 AS results_headline,
    results.2 AS results_date,
    borrow.1 AS borrowing_headline,
    borrow.2 AS borrowing_date
FROM global_markets.stocks_news
WHERE has(tickers, 'SPCX')
  AND published_utc >= toDateTime('2026-07-06 04:00:00')
  AND published_utc < toDateTime('2026-07-11 04:00:00')
Run am yourself

51 tagged articles from 3 publishers; three main storylines dey dominate the titles. For 2026-07-07, the feed frame am as "Analysts Go All-In on SpaceX as the Quiet Period Ends": underwriters stop keeping quiet after the IPO, ratings start to come out, and na the same day as the -6.7% session. For 2026-07-09: "SpaceX Lost $4.28 Billion on $4.7 Billion in Revenue Last Quarter", the stock first quarterly figures since e enter public market reach the feed. At the same time, the balance-sheet angle, "SpaceX Borrowed $25 Billion and Is Buying Up AI Companies" (2026-07-07), plus 5 headlines about the Nasdaq-100 add itself. The normal discipline still apply: na one aggregated feed attention this one, no be the whole world media, and the slide plus the storylines only share the same calendar; this table fit only show say dem happen together.

Wetin the entity don show for weekly table so far

QueryEvery week of the new entity's life: open-to-close return and RTH dollars (entity-bounded)
period startweek return pctweek rth dollar bnsessions
2026-06-087.581.21
2026-06-157.7166.54
2026-06-22-13.2745
2026-06-292.945.34
2026-07-06-12.441.75
The exact SQL behind every number
SELECT
    toString(wk) AS period_start,
    round(ret, 1) AS week_return_pct,
    round(dollar_bn, 1) AS week_rth_dollar_bn,
    sessions
FROM (
    SELECT toStartOfWeek(toDate(toTimeZone(window_start, 'America/New_York')), 1) AS wk,
           uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
           (argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / argMinIf(toFloat64(open), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100 AS ret,
           sumIf(toFloat64(close) * toFloat64(volume), (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / 1e9 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-11 00:00:00')
    GROUP BY wk
)
ORDER BY period_start
Run am yourself

Five calendar weeks since e start dey one small table: listing pop, the peak, the fade, and now this one: a -12.4% open-to-close week on 41.7B dollars. The baseline na the entity own previous tape. Dem dey calculate am live, so every new week still dey rewrite one-fifth of the history.

Is dis fade normal? Six oda big debuts, same ruler

Is dis normal post-IPO seasoning, or something worse? The check na to use one measurement: regular-hours first trade reach day-28 regular-hours close, compare am with oda billion-dollar-plus debuts for the past two years.

QueryBig recent debuts, first month on one ruler: first trade to the day-28 close (ET regular hours)
tickerlistedissue pxfirst trade openday28 closeopen to day28 pctissue to day28 pctis spcx
VG2025-01-242524.0515.39-36-38.40
CBRS2026-05-14185350227-35.122.70
KLAR2025-09-10405242.17-18.95.40
SPCX2026-06-12135150145.4-3.17.71
LINE2024-07-25788284.382.98.20
CRWV2025-03-28403941.566.63.90
MDLN2025-12-17293543.3823.949.60
The exact SQL behind every number
SELECT
    b.ticker AS ticker,
    toString(any(i.ld)) AS listed,
    round(any(i.ipx), 2) AS issue_px,
    round(argMinIf(toFloat64(b.open), b.window_start, rth), 2) AS first_trade_open,
    round(argMaxIf(toFloat64(b.close), b.window_start, rth), 2) AS day28_close,
    round((argMaxIf(toFloat64(b.close), b.window_start, rth) / argMinIf(toFloat64(b.open), b.window_start, rth) - 1) * 100, 1) AS open_to_day28_pct,
    round((argMaxIf(toFloat64(b.close), b.window_start, rth) / any(i.ipx) - 1) * 100, 1) AS issue_to_day28_pct,
    toUInt8(b.ticker = 'SPCX') AS is_spcx
FROM global_markets.delayed_stocks_minute_aggs AS b
INNER JOIN (
    SELECT ticker, max(listing_date) AS ld, argMax(toFloat64(final_issue_price), listing_date) AS ipx
    FROM global_markets.stocks_ipos
    WHERE ticker IN ('SPCX', 'CRWV', 'CBRS', 'KLAR', 'VG', 'MDLN', 'LINE')
    GROUP BY ticker
) AS i ON b.ticker = i.ticker
WHERE b.ticker IN ('SPCX', 'CRWV', 'CBRS', 'KLAR', 'VG', 'MDLN', 'LINE')
  AND b.window_start >= toDateTime('2024-07-25 00:00:00')
  AND b.window_start < toDateTime('2026-07-11 00:00:00')
  AND toDate(toTimeZone(b.window_start, 'America/New_York')) >= i.ld
  AND toDate(toTimeZone(b.window_start, 'America/New_York')) <= i.ld + 28
  AND ((toHour(toTimeZone(b.window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(b.window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth
GROUP BY b.ticker
ORDER BY open_to_day28_pct
Run am yourself

For dis ruler, SPCX's -3.1% dey for middle of the table. VG (-36%), CBRS (-35.1%) and KLAR (-18.9%) all fall pass am from dia first public trade; MDLN gain 23.9% for its own first month. If you compare am with the offering price instead, SPCX's +7.7% dey where most names for dis table dey: above issue price but below the opening print. VG na the only debut here wey dey below its own issue price for day 28. Based on dis evidence, when big debut gives back part of the gain from the opening print during the first month, na common pattern, e no be sign of distress.

E still dey heavyweight, but e dey lose strength

QueryThe week's heaviest tickers by regular-hours dollar volume: where the newcomer dey now
tickerregular hours dollar bnpct of leaderis spcx
MU1641000
SPY137.383.70
NVDA107.165.30
QQQ103.463.10
SNDK8853.70
TSLA69.342.20
META58.335.50
AMD5835.40
AAPL50.530.80
INTC47.929.20
SPCX41.725.41
MSFT41.125.10
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-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 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
Run am yourself
QueryRank receipt: the week's dollar volume against every other ticker
spcx rankspcx dollar bnpct of leader
1141.725.4
The exact SQL behind every number
WITH (
    SELECT sum(toFloat64(volume) * toFloat64(close))
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPCX'
      AND window_start >= toDateTime('2026-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
) AS spcx_d
SELECT
    countIf(d > spcx_d AND ticker != 'SPCX') + 1 AS spcx_rank,
    round(spcx_d / 1e9, 1) AS spcx_dollar_bn,
    round(100 * spcx_d / max(d), 1) AS pct_of_leader
FROM (
    SELECT ticker, sum(toFloat64(volume) * toFloat64(close)) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= toDateTime('2026-07-06 00:00:00') AND window_start < toDateTime('2026-07-11 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY ticker
)
Run am yourself

For dollars traded this week, e rank eleventh. E still dey among the biggest names for the tape, with 25.4% of the week leader’s level. June post-listing window put am among the market’s top few names. Basis na every ticker’s regular-hours dollar volume across the five sessions. Dem include the subject with receipt flag, instead of excluding am. This page topic na the verified entity.

Wetin tape dey made of

QueryPrint-size anatomy and quote census: full week
prints mmedian print sharesodd lot pct of printsnbbo updates mclean two sided pct
5.521080.12.299.35
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))
        FROM global_markets.cache_stocks_quotes
        WHERE ticker = 'SPCX'
          AND sip_timestamp >= toDateTime64('2026-07-06 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-11 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(100.0 * countIf(size < 100) / count(), 1) AS odd_lot_pct_of_prints,
    quote_census.1 AS nbbo_updates_m,
    quote_census.2 AS clean_two_sided_pct
FROM global_markets.stocks_trades
WHERE ticker = 'SPCX'
  AND sip_timestamp >= toDateTime64('2026-07-06 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-11 00:00:00', 9)
Run am yourself

5.52 million executed trades, 80.1% of dem odd lots, against 2.2 million NBBO updates (99.35% clean two-sided). One month after listing, the microstructure dey look like the one for any big, active stock.

The spread: seasoning dey continue

QueryMedian quoted spread by session, regular hours (bps of midpoint)
sessionmed spread bpsquote updates
2026-07-063.12417594
2026-07-073.93498486
2026-07-084.07384283
2026-07-093.99341861
2026-07-102.7350334
The exact SQL behind every number
SELECT
    session,
    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,
    count() AS quote_updates
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPCX'
  AND sip_timestamp >= toDateTime64('2026-07-06 13:30:00', 9) AND sip_timestamp < toDateTime64('2026-07-11 00:00:00', 9)
  AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS session
ORDER BY session
Run am yourself

Median regular-hours spreads open for 3.12 bps on Monday, widen reach 4.07 bps by middle of the week, and ease go 2.7 bps by Friday. The young listing spread dey churn for big-name territory even as the price dey fall. Liquidity provision and price direction na two different machines; this week show the difference clearly.

Options: puts wey dey below market, lottery calls wey dey above am

QueryOptions on the new entity, full week: contracts, put-call, busiest contract
contracts traded mweek put call ratiopremium notional busdcontract wey busiest
3.140.81.71$450 call, expiry 2026-07-17
The exact SQL behind every number
WITH
    (
        SELECT concat('$', toString(round(toFloat64(toUInt32OrZero(substring(ticker, 14, 8))) / 1000, 2)),
               if(substring(ticker, 13, 1) = 'P', ' put', ' call'),
               ', expiry 20', substring(ticker, 7, 2), '-', substring(ticker, 9, 2), '-', substring(ticker, 11, 2))
        FROM global_markets.options_trades
        WHERE startsWith(ticker, 'O:SPCX') AND length(ticker) = 21
          AND sip_timestamp >= toDateTime64('2026-07-06 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-11 00:00:00', 9)
        GROUP BY ticker ORDER BY sum(size) DESC LIMIT 1
    ) AS busiest_name
SELECT
    round(sum(size) / 1e6, 2) AS contracts_traded_m,
    round(toFloat64(sumIf(size, substring(ticker, 13, 1) = 'P')) / toFloat64(sumIf(size, substring(ticker, 13, 1) = 'C')), 2) AS week_put_call_ratio,
    round(sum(toFloat64(price) * size) * 100 / 1e9, 2) AS premium_notional_busd,
    busiest_name AS busiest_contract
FROM global_markets.options_trades
WHERE startsWith(ticker, 'O:SPCX') AND length(ticker) = 21
  AND sip_timestamp >= toDateTime64('2026-07-06 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-11 00:00:00', 9)
Run am yourself

The book trade 3.14 million contracts with put-call ratio of 0.8. Calls still pass puts for number, but the book get much more put weight than normal single stock. NVDA same-week book get roughly half of that ratio. Ratio no fit show WHERE the puts dey. Strike map fit:

QueryThe week's contracts by strike bucket ($20 buckets; tails capped at $80 and $240)
strike bucketcall contractsput contractsput share pctwey go expire by jul17 pctpct of biggest bucket
$8039499137895.91.87.8
$100747411833494.19.310.3
$1201429733314995.946.228.5
$14047448674591461.183.2100
$1604616888494615.577.944.8
$18021437869513.170.418.1
$2001047631679513.864.910
$2204657311802.571.73.9
$24041335622290.583.734.1
The exact SQL behind every number
SELECT
    concat('$', toString(toUInt32(bucket))) AS strike_bucket,
    toUInt64(sumIf(size, substring(ticker, 13, 1) = 'C')) AS call_contracts,
    toUInt64(sumIf(size, substring(ticker, 13, 1) = 'P')) AS put_contracts,
    round(100.0 * sumIf(size, substring(ticker, 13, 1) = 'P') / sum(size), 1) AS put_share_pct,
    round(100.0 * sumIf(size, substring(ticker, 7, 6) <= '260717') / sum(size), 1) AS expiring_by_jul17_pct,
    round(100 * sum(size) / max(sum(size)) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.options_trades
WHERE startsWith(ticker, 'O:SPCX') AND length(ticker) = 21
  AND toUInt32OrZero(substring(ticker, 14, 8)) > 0
  AND sip_timestamp >= toDateTime64('2026-07-06 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-11 00:00:00', 9)
GROUP BY least(greatest(floor(toFloat64(toUInt32OrZero(substring(ticker, 14, 8))) / 1000 / 20) * 20, 80), 240) AS bucket
ORDER BY bucket
Run am yourself

The shape be barbell. Below the trading range, the book na almost pure put: 95.9% puts dey for $120 bucket (333149 contracts). Every bucket below am still get above ninety percent puts. The at-the-money $140 bucket carry the highest volume of any bucket: 61.1% puts, with 83.2% of dem expiring by July 17. Above the range, the balance turn around, with 15.5% puts at $160. The far tail nearly na all call: 413356 call contracts dey for the $240-and-up bucket. Na there the week’s busiest single contract dey, the $450 call, expiry 2026-07-17.

Wetin this table fit show: puts stack for and below the market. This na the classic footprint of downside protection, with long-shot calls far above. Wetin e no fit show: whether those puts dey hedge stock or show outright bearish views. Prints no carry identity or intent (the put-call ratio explainer dey explain that boundary).

The shorts, denominator dey here this time

QueryFINRA daily short volume during the week: short shares and their off-exchange share
dshort shares moffexchange total mshort pct of offexchange
2026-07-0623.735.566.8
2026-07-0818.725.373.8
2026-07-0912.118.565.4
2026-07-1012.217.370.5
The exact SQL behind every number
SELECT toString(date) AS d,
       round(toFloat64(any(short_volume)) / 1e6, 1) AS short_shares_m,
       round(toFloat64(any(total_volume)) / 1e6, 1) 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-07-06') AND date <= toDate('2026-07-10')
GROUP BY date
ORDER BY date
Run am yourself

Reported short volume reduce from 23.7M shares for Monday reach 12.2M for Friday, as the total tape too move down. As percentage of off-exchange volume, e hold around 66.8%. Most of am na market-maker plumbing, where dem short to fill customer buys, no be directional bet, as the short-volume explainer dey explain. Two things matter. July 7 market-wide file come truncated (receipted in the weekly market recap), so the week get 4 daily files instead of five. Also, short volume na flow, no be position. The position dey inside the short-interest series:

QueryThe new entity's short-interest prints so far, with implied days-to-cover
settlementshares short maverage daily volume mvendor days to coverimplied days to cover
2026-06-1523.369.210.34
2026-06-30111.3151.610.73
The exact SQL behind every number
SELECT toString(settlement_date) AS settlement,
       round(toFloat64(max(short_interest)) / 1e6, 1) AS shares_short_m,
       round(toFloat64(max(avg_daily_volume)) / 1e6, 1) AS avg_daily_volume_m,
       max(days_to_cover) AS vendor_days_to_cover,
       round(toFloat64(max(short_interest)) / toFloat64(max(avg_daily_volume)), 2) AS implied_days_to_cover
FROM global_markets.stocks_short_interest
WHERE ticker = 'SPCX' AND settlement_date >= toDate('2026-06-01') AND settlement_date <= toDate('2026-06-30')
GROUP BY settlement_date
ORDER BY settlement_date
Run am yourself

Between the 2026-06-15 and 2026-06-30 settlements, shares short increase from 23.3M reach 111.3M. But the denominator matter. Against the vendor's 151.6M-share average day, that imply days-to-cover of only 0.73. The vendor's own field no fit go below 1. That mean the whole short book fit cover within one average session. One disclosure stand out: the source don restate the June 15 print once since the first-month page first publish am. These figures na the source's current record, and dem dey re-run plus bounds-check am every time dem regenerate am.

Wetin to watch from here

Four tori still dey open. The index-add flow na one-time setup: index funds dey buy when dem include am, then dem hold. So Monday's 17.55B tape na ceiling wey that mechanism no go rebuild. The July 17 expiry go remove most of the at-the-money options traffic (83.2% of the biggest strike bucket). Where the put wall rebuild go show whether demand for protection still dey. The next short-interest settlement go publish after FINRA usual lag and go show whether shares short continue to increase as the slide dey happen. And every IPO get standing supply date, wey be the lock-up expiration; the FAQ below cover am.

FAQ

SPCX still dey above im IPO price?

E dey above the offering price, but e dey below the first public trade. SPCX close the week at $145.4, 7.7% above the $135 offering price, but below the $150 opening cross wey public trading start on June 12.

Wetin SPCX put-call ratio really mean?

0.8 puts trade for every call. Calls still pass puts for number, but the tilt for the same week nearly double the one for NVDA options book. Ratio alone no fit show whether na hedging or bearish bets cause am. The strike map show say puts gather for and below the market, na so protection dey take shape.

Why index-add buying disappear?

Index inclusion na one-time rebalance. Tracking funds buy around the effective date, then dem simply hold. The big July 6 closing cross na when that purchase happen. The mechanism no dey buy again.

June first-trade price na support level for SPCX?

That $150 mark na where the June 12 opening cross print, so e be reference point, no be mechanical floor. The tape spend 790 regular-session minutes below am this week and close under am 3 times. So as hard floor, e don already give way.

When SPCX IPO lock-up go expire?

The prospectus set the date. The customary term na 180 days from the offering, so for a June 12, 2026 listing, na early December 2026. Until that time pass, most insider and pre-IPO shares no fit sell. The lock-up expiration na the standard supply date for every IPO calendar.

Data notes

All timestamps na UTC. Regular hours na the 810-1199 UTC-minute band (the EDT session). But the debut-comparison panel dey filter the 9:30-16:00 ET clock, so winter listings go remain for the actual session. The week na July 6-10, with the previous close from Thursday July 2 (July 3 holiday).

This symbol dey the ambiguity guard list. Every SPCX window starts on or after the June 12, 2026 listing of the verified entity. The symbol-history panel dey show the boundary of the old entity.

The “underwater” measure dey count regular-session minutes and closes below the first-trade price. This price na the June 12 opening cross, wey the system emit as a declared column. E no be the offering price.

The debut comparison dey run each listing from its own first regular-hours trade to its own day-28 close. E use the same ruler but different calendars. Issue prices come from the IPO record.

OCC option tickers dey parse by position. The system excludes strikes wey e no fit parse through a strike > 0 filter.

News counts and quoted headlines dey measure ONE aggregated feed. Headline receipts na trims of the first sentence. Short-volume dey inherit the completeness of its source file, wey dem flag above. The short-interest series don undergo restatement before.

Methodology

  • Source: consolidated tape, delayed_stocks_minute_aggs, stocks_trades, cache_stocks_quotes, options_trades, stocks_news, stocks_ipos, FINRA stocks_short_volume and stocks_short_interest.
  • Entity discipline: verified_tickers assertion; windows wey dey bounded to the entity after listing; the reuse receipt dey lead the page.
  • Deterministic aggregates; prior-period and cross-listing comparisons dey calculate live, dem no dey quote am from other posts.
  • Warehouse as-of: July 12, 2026.

Cross-links: di first month, di index add, di fall from peak, and di market recap for di week. Every panel na one stored object, chart, table, SQL, and every query dey run for Strasmore terminal.

#spcx#weekly#deep dive#ipos