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

SPCX: The Week It Went Underwater

SPCX's week of July 6, 2026: the index-add flow left, four of five closes printed under the June first-trade price, and Friday set a new post-listing low.

SPCX spent the week of July 6, 2026 doing what freshly listed stocks are never supposed to do in their second month: it went underwater. From the prior week's $161.86 close, the stock fell -10.2% across five sessions to $145.4 — spending the week's back half below the $150 price where its first public trade crossed in June, and printing a new post-listing closing low on Friday. The week opened with the last surge of index-add flow and closed with the quietest tape the symbol has seen since listing. Every number below is a stored query — expand any panel for the SQL.

First, the receipts: which SPCX this is

The SPCX symbol previously belonged to a different, unrelated security — so every window on this page is bound to the entity that listed on June 12, 2026: Space Exploration Technologies Corp. (the first-month deep-dive carries the full verification). The trading-history receipt makes the boundary visible:

QueryThe symbol's trading history by month — the gap and the new entity's arrival
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

The months-long gap in the middle of that table is the old entity leaving the tape; the heavy bars from June 2026 onward are the new one. Everything below concerns only the new entity's prints.

The week on one row

QuerySPCX, week of July 6, 2026 — the slide, receipted
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
    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,
    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')

-10.2% on the week, a $167.9 high to a $145.07 low (printed 2026-07-10 15:59 ET), and 790 regular-session minutes below the $150 first-trade price — the underwater fact, counted minute by minute.

One anchor note, worth being precise about: "underwater" here means under the June 12 opening-cross price — the first price public buyers paid on the tape, receipted in the first-month deep-dive. Measured against the lower offering price the deal's allocated buyers paid (also receipted there), the listing remains above water. Both statements are true at once; which one matters depends entirely on when you got in. That distinction — offering price versus first trade — is the same one that decides who is happy after every large debut. Total regular-hours dollars: 41.7B across 5 sessions.

Session by session: the flow leaves

QuerySPCX by session — close, change, shares, dollars
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

Monday carried 17.55B of dollars — the tail of the Nasdaq-100 index-add flow whose giant closing cross is receipted in the index-add deep-dive. Then the flow left: 11.3B Tuesday (the -6.7% session that produced the first sub-$150 close, documented in the decline-from-peak note), fading to 6.31B by Friday — roughly a third of Monday's tape. Thursday's +2.6% bounce did not hold; Friday closed -4.4% lower at $145.4, the newest post-listing closing low.

The entity's whole weekly table so far

QueryEvery week of the new entity's life — open-to-close return and RTH dollars (entity-bounded)
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

Five calendar weeks of existence, all of them on one small table — the listing pop, the peak week, the fade, and now this: a -12.4% open-to-close week on 41.7B of dollars. The baseline is the entity's own prior tape, computed live; with a listing this young, every new week rewrites a fifth of the history.

Still a heavyweight — but a fading one

QueryThe week's heaviest tickers by regular-hours dollar volume — where the newcomer now sits
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
QueryRank receipt: the week's dollar volume against every other ticker
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
)

Rank eleventh by dollars for the week — still among the tape's heaviest names a month after listing, at 25.4% of the week's leader. In June's post-listing window this symbol ranked among the top handful of the entire market; the leaderboard above shows where the fade has taken it. The basis: every ticker's regular-hours dollars over the five sessions; the subject appears in its own comparison set with a receipt flag rather than an exclusion, since this page's entire topic is the verified entity behind it.

What the tape was made of

QueryPrint-size anatomy and quote census — full week
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)

5.52 million prints, 80.1% of them odd lots, against 2.2 million NBBO updates (99.35% clean two-sided). A month past listing, the symbol's microstructure now reads like any large active stock's.

The spread: seasoning continues

QueryMedian quoted spread by session, regular hours (bps of midpoint)
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

Median regular-hours spreads held between 3.12 and 2.7 bps across the sessions — a young listing's spread converging toward big-name territory even while its price fell. Liquidity provision and price direction are different machines; this week separated them cleanly. For scale, the listing-day tape in the first-month deep-dive carried spreads several times wider in its opening hour than anything this week printed — five weeks of seasoning, visible in basis points.

News kept coming; the options book leaned defensive

QueryNews-feed attention during the week
The exact SQL behind every number
SELECT
    count() AS week_articles,
    uniqExact(JSONExtractString(publisher, 'name')) AS publishers
FROM global_markets.stocks_news
WHERE has(tickers, 'SPCX')
  AND published_utc >= toDateTime('2026-07-06 00:00:00')
  AND published_utc < toDateTime('2026-07-11 04:00:00')
QueryOptions on the new entity, full week: contracts, put-call, busiest contract
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)

52 tagged articles from 3 publishers kept the name in the feed all week. The options book traded 3.14 million contracts at a put-call ratio of 0.8 — markedly more put-weighted than a typical single stock (NVDA's same-week book ran roughly half that ratio, in its own weekly deep-dive). Busiest contract: $450 call, expiry 2026-07-17.

The shorts

QueryFINRA daily short volume during the week — with the market-wide Tuesday caveat
The exact SQL behind every number
SELECT toString(date) AS d,
       round(sum(short_volume) / 1e6, 1) AS short_shares_m
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

Reported short volume ran 23.7M shares Monday, easing with the total tape through the week. The standing caveat: July 7's market-wide short-volume file arrived truncated (receipted in the weekly market recap), so Tuesday's figure is provisional. The freshest exchange-reported short-interest settlement (June 30) published after this entity's first-month page first went out — that page's revision machinery carries the current print.

Data notes

All timestamps are UTC; regular hours are the 810-1199 ET-minute band; the week runs July 6-10 with the prior close from Thursday July 2 (July 3 holiday). This symbol is on the ambiguity guard list: every window here starts at or after the June 12, 2026 listing of the verified entity, and the symbol-history panel makes the old entity's boundary visible rather than assumed. The "underwater" measure counts regular-session minutes with prints below the first-trade price (the June 12 opening-cross price receipted in the first-month deep-dive, emitted as a declared column of the measurement) — not below the offering price, which differs. OCC tickers parsed positionally (root O:SPCX, expiry offset 7, type 13, strike 14). News counts measure one aggregated feed. Short-volume inherits its source file's completeness, flagged above.

Methodology

  • Source: consolidated tape — delayed_stocks_minute_aggs, stocks_trades, cache_stocks_quotes, options_trades, FINRA stocks_short_volume.
  • Entity discipline: verified_tickers assertion + windows bounded to the post-listing entity; the reuse receipt leads the page.
  • Deterministic aggregates throughout; prior-period comparisons computed live, never quoted from other posts.
  • Warehouse as-of: July 12, 2026 (T+2 for the week's final session).

Cross-links: the first month, the index add, the decline from peak, and the week's market recap.