SPCX: Primer mes de SpaceX en el mercado público
Análisis del debut de SPCX en junio de dos mil veintiséis: desde el opening cross hasta el volumen de dólares y la actividad en el mercado de opciones.
SpaceX salió a bolsa el 12 de junio de 2026 bajo el ticker SPCX; cuatro letras que en abril todavía cotizaban como una empresa distinta. Con un precio de salida de $135, la acción abrió a $150 (11.1% por encima de la emisión), alcanzó un cierre máximo de $201.99 el 2026-06-16, registró un mínimo de $146.88 en el pre-market y cerró en $170.72 — 26.5% por encima de la emisión y 15.5% por debajo del máximo — posicionándose como la cuarta acción en volumen de dólares durante la sesión regular, superando a NVDA. Cada cifra aquí es el resultado de una consulta almacenada; expanda cualquier panel para ver el SQL exacto.
El SQL exacto detrás de cada cifra
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')Un ticker, dos empresas
SPCX es un símbolo reutilizado, por lo que los recibos de verificación se presentan primero. Hasta abril de 2026, el ticker operó como un fondo con poca liquidez — barras de 13 minutos en su último mes de actividad, entre $21.92 y $23.64. En mayo de 2026 no registró actividad alguna (0 barras). El 12 de junio se le asignó a Space Exploration Technologies Corp.:
El SQL exacto detrás de cada cifra
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_rowsEl SQL exacto detrás de cada cifra
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 monthUna consulta de "historial de SPCX" sin filtrar une a dos empresas no relacionadas; por lo tanto, cada ventana aquí comienza el 12 de junio de 2026. El feed de noticias muestra la misma caída (0 artículos con la etiqueta SPCX en los últimos doce meses), al igual que el interés en corto: un salto de aproximadamente 11461x a través del intervalo.
El rastro documental fue lo primero
El SQL exacto detrás de cada cifra
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_typeLeído de principio a fin, el proceso de la IPO se estructura así: una enmienda confidencial (DRS/A) en 2026-05-07, el S-1 público en 2026-05-20, enmiendas 2 al mismo, y luego 7 FWP prospectos de redacción libre —material de roadshow— entre 2026-06-04 y 2026-06-11. El registro y la certificación de la bolsa se recibieron en 2026-06-10; el aviso de entrada en vigor y el primero de los 10 formularios Form 3 de insiders en 2026-06-11; el prospecto 424B4 final y un S-8 el mismo día de la cotización. Después, el ritmo cambió a los 8-Ks:
El SQL exacto detrás de cada cifra
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_date6 de ellos en menos de dos semanas: ventas de acciones no registradas al cierre de la IPO (Item 3.02); un acuerdo material con X67 Inc., una subsidiaria de propiedad absoluta (1.01); cambios en la junta directiva y ejecutivos (5.02); un aviso de Regulación FD (7.01); y avisos del Item 8.01 sobre una oferta de notas senior no garantizadas que comenzó el 22 de junio, según el 8-K presentado el 2026-06-23. Un titular del 23 de junio lo resumió: "SpaceX's Fundraising Is Not Over With a $20 Billion New Bond Offering". El periodo de la oferta y los mínimos mensuales de la acción coinciden en los mismos días del calendario; estos datos no indican nada más que eso.
Día de listado: una apertura sin las 9:30
Una IPO no abre con el mercado. Nasdaq comenzó a publicar cotizaciones de SPCX a las 09:50:01 ET — con pares indicativos de bid-ask bloqueados que avanzaban el libro hacia un precio de liquidación — y durante casi dos horas no hubo operaciones. La primera impresión pública de SpaceX fue el propio opening cross: 58.21 millones de acciones a $150, registrada a las 11:46:45 ET bajo los códigos de condición 17, 9 y 41 (impresión de apertura de centro de mercado, cross, exento de trade-through). La acción subió hasta 176.52, mantuvo un mínimo de 149.34 y cerró con un closing cross de 7.85 millones de acciones a $160.95 — 19.2% por encima de la emisión. Totales: 513.5 millones de acciones, $84.1 mil millones, 8.57 millones de impresiones, en una sesión regular de poco más de cuatro horas de duración.
El SQL exacto detrás de cada cifra
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)El flujo de cotizaciones muestra la fase de descubrimiento de precios. Antes del cross, las únicas actualizaciones del NBBO son los indicativos bloqueados (18 en la media hora 09:30, con spread cero por construcción). Luego, el flujo de cotizaciones aumentó: 445211 actualizaciones solo en el segmento 11:30, con un bid-ask spread mediano de 30 centavos (18.6 bps). Para el segmento 13:00, la mediana era de 6 centavos (3.5 bps) — un spread no nace estrecho; este se estrechó en dos horas.
El SQL exacto detrás de cada cifra
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_bucketSesión por sesión
El SQL exacto detrás de cada cifra
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_dateLa trayectoria: 19.3% en la segunda sesión, un cierre con pico de $201.99 en 2026-06-16, y luego tres caídas consecutivas —la más pronunciada fue un movimiento del -16.4% en 2026-06-22, la primera sesión tras el feriado del 19 de junio y el día en que comenzó la oferta de notas. El descenso tocó fondo en $152.74 el 2026-06-26; las dos sesiones finales cerraron 7.4% y 4.1% más alto (2026-06-29 tiene su propio resumen diario y análisis detallado a nivel de tick). El volumen decayó más rápido de lo que el precio se recuperó: 513.5 millones de acciones el primer día, 75.8 millones el 2026-06-30.
Ambos extremos mensuales sobreviven a una verificación de datos aislados —y ocurren en fases de mercado distintas. El máximo de $225.64 registrado a las 2026-06-16 10:02 ET: 2 barras con un spread de un centavo, 47699 operaciones en el primer minuto del pico. El mínimo de $146.88 registrado a las 2026-06-23 04:11 ET con 2 barras con un spread de un centavo y 14844 operaciones ese minuto. El mínimo en horario regular es de $147.11, $0.23 por debajo de este; cualquier cifra de "mínimo de junio" debe especificar a cuál se refiere.
El cuarto ticker con mayor volumen
Al clasificar cada símbolo listado en EE. UU. por volumen de dólares en horario regular del 12 al 30 de junio —una agregación total del mercado y no una lista de candidatos—, la nueva cotización ocupa el cuarto lugar: 344.6 billones de dólares, superado únicamente por MU ($585.4 billones), SPY y QQQ, y por delante de NVDA ($253.1 billones), TSLA y AAPL. Cada fila contó con las mismas 12 sesiones.
El SQL exacto detrás de cada cifra
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 12What the tape was made of
El SQL exacto detrás de cada cifra
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 is small-print and quote-dense: 41.01 million prints at a median of 10 shares (average 64.2 — giant crosses drag the mean), 81.9% odd lots (under 100 shares), 8.73% fractional — consistent with retail apps slicing orders, with market makers on the other side. The quote half: 11.78 million NBBO updates, 99.32% clean two-sided; 46377 momentarily crossed (bid above ask — venues out of sync), decaying from 17730 on day one to 437 on June 30; 34118 locked; 116 one-sided or empty. Spread statistics below exclude crossed and one-sided quotes, with drop counts in-panel.
Las temporadas del spread
La característica distintiva de una nueva cotización es cuando su spread alcanza un nivel estable, medido por sesión tanto como la mediana de las actualizaciones como el promedio ponderado por tiempo. El primer día comienza en el cruce de las 11:46; incluir los indicativos bloqueados de la preapertura lo suavizaría.
El SQL exacto detrás de cada cifra
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 sessionPonderado por tiempo, el spread pasó de 23.5 centavos (7.64 bps) el primer día a 7.9 centavos (4.7 bps) en 2026-06-30; esto representa una reducción de aproximadamente dos tercios en dólares, pero mucho menor en términos relativos; las series en dólares y relativa divergen en un periodo en el que el precio se movió en un rango de $146.88–$225.64. La sesión con el spread más ajustado fue 2026-06-22 con 2 bps, con ampliaciones en 2026-06-17 (8.96 bps, la sesión posterior al pico de precio) y 2026-06-24 (7.38 bps), esta última coincidiendo con la caída del volumen a 71.7 millones de acciones desde 152.3 millones. Como referencia, tres puntos de comparación del 30 de junio:
El SQL exacto detrás de cada cifra
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 tickerSpread mediano cotizado de Apple: 3 centavos (1.04 bps). SPCX: 6 centavos (3.54 bps). Nathan's Famous, con 1036 actualizaciones de cotización en toda la sesión: 30 centavos (29.66 bps). Tras dieciocho días, SpaceX cotizó un poco más amplio que una mega-cap, pero varias veces más ajustado que un nombre con baja liquidez.
Opciones del tercer día
El SQL exacto detrás de cada cifra
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)Opciones listadas a las 2026-06-16 09:30:00 ET — la tercera sesión de la acción. En 10 sesiones de opciones: 2.18 millones de operaciones, 10.4 millones de contratos en 3199 listados, $9.15 mil millones en premium (precio multiplicado por el multiplicador estándar de 100 acciones) — $0.31 mil millones más de lo que recolectaron las opciones de AAPL en TODO el mes de junio ($8.84 mil millones en 27 millones de contratos; diez sesiones frente a un mes completo — una asimetría deliberada que no invalida el punto). Se negociaron 22 vencimientos, desde un vencimiento semanal el jueves 18 de junio (el mercado estuvo cerrado ese viernes) hasta 2028-12-15 LEAPS; solo ese primer semanal representó el 26.7% del volumen mensual. El contrato más activo: el $175 put, expiry 2026-06-18 — 203765 contratos en 41648 operaciones con un premium promedio de $1.43. El imán de premium: el $225 call, expiry 2026-09-18 — $121.3 millones a $40.12.
El SQL exacto detrás de cada cifra
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 sessionEl volumen de calls superó al de puts en cada sesión: el ratio put/call diario alcanzó un máximo de 0.987 el 2026-06-17, cerca del máximo de precio, y un mínimo de 0.46 el 2026-06-29, la sesión en la que la acción cerró 7.4% arriba — el volumen de puts alcanzó su pico con el precio, no con el valle. La sesión más activa fue el 2026-06-18, el día de vencimiento del primer semanal: 1844490 contratos.
El SQL exacto detrás de cada cifra
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))El mapa de strikes forma una barra con pesas alrededor de la trayectoria del precio. El bucket $150 recibió el mayor volumen, con una división de 55% puts — tráfico bidireccional at-the-money. Por debajo del rango de negociación, los puts dominan el libro (92.7% del bucket $125); por encima, los calls (1.6% puts a $250), con 42228 contratos de call en el bucket $450, aproximadamente el doble del máximo mensual.
El SQL exacto detrás de cada cifra
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 sessionEl costo de negociación fue bajo desde la primera hora: el contrato más activo promedió un spread NBBO de 10.3 centavos en su primera sesión (6.7% del mid; la mediana fue de 10 centavos), con la mediana reduciéndose a 5 centavos para el día de vencimiento (5.23% del mid, 93198 actualizaciones de cotización, 37 cotizaciones erróneas descartadas y contabilizadas). Spreads de un níquel a un dime en el centro líquido de un libro con días de antigüedad — las alas lejanas (far wings) tienen un costo mayor, y este panel no las representa.
El cambio de noticias y los shorts
El SQL exacto detrás de cada cifra
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')El etiquetado de noticias es una prueba en sí misma: 0 artículos etiquetados como SPCX en los doce meses previos a la salida a bolsa, luego 14 en 2026-06-11 (día de fijación de precio), un pico de 42 artículos en 2026-06-12, y 347 para el mes. Lea estos conteos con escepticismo: 4 editores, y solo The Motley Fool escribieron 65% — es la atención de un solo feed, no de los medios mundiales. Las co-etiquetas muestran el enfoque: TSLA en 83 artículos, NVDA en 59, Alphabet (las clases de acciones colapsaron) en 57, mientras que Rocket Lab (21) y AST SpaceMobile (15) se quedan muy atrás: este feed cubrió la noticia como una historia de mega-caps, no como una del sector espacial.
El SQL exacto detrás de cada cifra
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 dateLos shorts aparecieron desde el primer día, con una definición asociada. El volumen de shorts fuera de bolsa es la proporción del volumen reportado por FINRA (fuera de bolsa) marcada como short; gran parte es de market makers vendiendo en corto para cubrir compras de clientes — es operativa rutinaria, no short interest. La participación de SPCX marcada como short comenzó en 33.7% el día de la salida a bolsa y subió a 71% para el 2026-06-30, mientras que el volumen reportado fuera de bolsa cayó de 131.53 millones de acciones a 35.77 millones. El co-movimiento es lo que estos datos pueden mostrar; lo que significa no está contenido en esta información.
El SQL exacto detrás de cada cifra
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'El short interest real —posiciones abiertas a una fecha de liquidación— se registró por primera vez el 2026-06-30: 111.3 millones de acciones en short frente a un promedio diario de 151.63 millones de acciones. El proveedor reporta días para cubrir (days-to-cover) como 1 — un límite inferior; la proporción bruta es 0.73: los shorts podrían cubrir en menos de un día promedio. La liquidación final de la entidad anterior (2026-03-31) mostró 9711 acciones — nuevamente el abismo por el reuso de ticker. Desde la primera edición de esta página, se ha publicado una liquidación posterior, el 1 (30 de junio), y la fuente aumentó sustancialmente la cifra del 15 de junio; las cifras anteriores son el registro actual, recalculado en cada regeneración, y la página se mantiene en revisión cada vez que los valores se mueven fuera de sus rangos declarados. Así es como funciona el mecanismo de revisión de esta página.
Notas de datos
Notas completas de datos
- Límite de entidad (la base para verified_tickers). El registro stocks_ipos (Space Exploration Technologies Corp., listado 2026-06-12 a $135 el XNAS), el gap de cero barras de mayo de 2026 y el cambio de etiqueta de noticias fijan la reasignación del 12 de junio. Ninguna fila anterior al 12 de junio se atribuye a SpaceX; el frontmatter verified_tickers: ["SPCX"] es una afirmación editorial deliberada para el periodo del 12 al 30 de junio de 2026 en estos recibos.
- Las sumas del tape de transacciones brutas duplican el volumen de subasta (re-reportes oficiales de apertura/cierre); los totales de acciones y dólares provienen de agregados por minuto, y los tamaños de cross provienen de las impresiones de cross (el análisis profundo del 29 de junio deriva esa corrección).
- El primer día es una sesión parcial — cotizaciones desde las 09:50:01 ET, primera impresión 11:46:45 ET. El máximo/mínimo del primer día son extremos de barras de un minuto; los extremos del mes cuentan con corroboración de variaciones de un centavo en el marcador.
- El conteo de EDGAR elimina duplicados por accession_number y selecciona el CIK 0001181412; el emisor del Form D "Space Exploration I" (CIK 0002130081), que no está relacionado, se excluye por diseño.
- No existen fundamentales para publicar: 0 filas de SpaceX en las tres tablas de estados financieros.
- El archivo de volumen de ventas en corto de FINRA del 29 de junio está truncado en todo el mercado (el archivo fuente termina a mitad del alfabeto); SPCX se ordena antes del corte y su fila está completa — el análisis profundo del 29 de junio contiene el recibo de la investigación de volumen de ventas en corto.
- El 19 de junio fue un cierre de mercado observado, no asumido: 0 barras de SPY ese día, por lo que el periodo de junio de SPCX abarca 12 sesiones.
Metodología
- Las marcas de tiempo se almacenan en UTC y se filtran con límites UTC brutos; junio de 2026 es completamente EDT, por lo que el horario regular es de 13:30 a 20:00 UTC (9:30 am a 4:00 pm ET). toTimeZone aparece solo en las listas SELECT.
- El cierre de sesión es la última barra de un minuto del horario regular; los precios de subasta provienen de los prints del cross (día uno: $161.29 por barra, $160.95 por cross).
- El volumen en dólares es el cierre de un minuto multiplicado por el volumen de ese minuto, sumados; es un proxy ponderado por el cierre para el valor nocional.
- El vencimiento, el tipo y el strike de las opciones se re-procesan desde el ticker de la OCC (la columna expiration_date de la tabla no es confiable); el nocional de la prima asume el multiplicador de cien acciones.
- Las estadísticas de spread por actualización ponderan cada actualización del NBBO por igual; las estadísticas ponderadas por tiempo ponderan cada cotización según su duración. Las medianas utilizan cuantiles deterministas.
- La generación es únicamente por lotes a través de la ruta de solo lectura restringida; la página pública nunca consulta datos en vivo. El warehouse conserva el historial completo de ticks sin vencimiento rotativo, por lo que este análisis se puede reproducir desde las mismas tablas en cualquier momento. Estado del warehouse al 3 de julio de 2026.
Este listado forma parte de una historia más amplia de 2026 — el mercado de IPOs del primer semestre, medido le da contexto. Cada panel es un objeto almacenado: gráfico, tabla y SQL. Puede profundizar en cualquier consulta en la terminal Strasmore.