Resumen de mercado 8 de julio de 2026
Repunte en semiconductores con NVDA al alza, pero el mercado general cerró con una proporción de dos a uno de acciones en rojo frente a los ETF principales.
El miércoles 8 de julio de 2026 hubo un repunte de un día en el sector de semiconductores que apenas afectó a los índices. SNDK cerró +6.8%, AVGO +4.82%, NVDA +3.66% —una reversión pronunciada respecto a la caída de chips del martes— pero los ETF de los índices se mantuvieron estables: SPY -0.31% y QQQ +0.25%. El mercado general registró una proporción de dos-a-uno de acciones en rojo mayor que la del día anterior: 1821 ganadores frente a 4260 perdedores, con una participación de ganadores del 29.6% tras el 33.8% de la sesión anterior. Cada cifra a continuación se lee de una consulta almacenada; expanda cualquier panel para ver el SQL exacto.
El marcador
Cada cambio compara la última barra de un minuto de la sesión regular del 8 de julio con la del martes 7 de julio; sesiones de negociación consecutivas. Las filas están en orden alfabético, por lo que cada ETF mantiene una posición fija.
El SQL exacto detrás de cada cifra
WITH prior AS (
SELECT ticker, argMax(close, window_start) AS prior_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
GROUP BY ticker
),
sess AS (
SELECT ticker,
argMin(open, window_start) AS day_open,
argMax(close, window_start) AS day_close,
max(high) AS day_high,
min(low) AS day_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_open) / toFloat64(p.prior_close) - 1) * 100, 2) AS gap_pct,
round((toFloat64(s.day_close) / toFloat64(s.day_open) - 1) * 100, 2) AS intraday_pct,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m
FROM sess s LEFT JOIN prior p ON s.ticker = p.ticker
ORDER BY tickerLos cuatro ETF abrieron con un gap a la baja y luego tomaron rumbos distintos. DIA inició la sesión con un -0.97% respecto al cierre anterior y continuó cayendo, cerrando en -1.09%. IWM abrió en -0.73% y se mantuvo a la baja, cerrando en -0.92%. SPY abrió en -0.6%, recuperó terreno durante el día, pero aun así cerró en -0.31%; la recuperación desde la apertura fue menor que el gap. QQQ abrió en -0.64% y repuntó hasta +0.25% al cierre, siendo el único de los cuatro en terreno positivo.
¿Fue un día inusual?
El movimiento del SPY de apertura a cierre de 0.29% se posicionó en el rango 16 de 22 sesiones consecutivas; fue un día promedio para el índice, no un extremo. El movimiento del QQQ de cierre a cierre de +0.25% se posicionó en el rango 21 de 22, uno de los movimientos mensuales más pequeños para el QQQ, lo cual es consistente con el resultado moderado del índice.
El SQL exacto detrás de cada cifra
SELECT
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-08')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-08'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-08'))) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ') AS qqq_sessions_compared,
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-08')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-08'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-08'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT ticker, d,
(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct,
oc_pct
FROM (
SELECT ticker, toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close_px,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-06-05 13:30:00')
AND window_start < toDateTime('2026-07-09 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)Amplitud: aún más sesgo negativo de dos a uno que el día anterior
El SQL exacto detrás de cada cifra
SELECT
countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS advancers,
countIf(close_8 < close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS decliners,
countIf(close_8 = close_7 AND close_7 > 0 AND dv_8 >= 1000000) AS unchanged,
countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000) AS liquid_tickers,
countIf(close_7 > 0 AND close_8 > 0) AS traded_both_sessions,
countIf(close_7 > 0 AND close_8 > 0) - countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) / countIf(close_7 > 0 AND close_8 > 0 AND dv_8 >= 1000000), 1) AS advancer_pct,
round(100.0 * countIf(close_7 > close_6 AND close_6 > 0 AND dv_7 >= 1000000) / countIf(close_7 > 0 AND close_6 > 0 AND dv_7 >= 1000000), 1) AS jul7_advancer_pct
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')) AS close_6,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS dv_8,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS dv_7
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY ticker
)La brecha entre los valores que subieron (1821) y los que bajaron (4260) situó la participación de los valores al alza en 29.6%, frente al 33.8% de la sesión anterior —el mismo cálculo aplicado con el mismo filtro de liquidez para ambos días—. De los 11439 nombres con cierre en ambos días, 5284 cayeron por debajo del filtro de un millón de dólares negociados y quedan excluidos del conteo. El rebote liderado por las tecnológicas y el cierre mixto del índice ocultaron un mercado general aún más uniformemente negativo.
El sector de chips repuntó con fuerza y alto volumen
Las filas están en orden alfabético, por lo que cada nombre mantiene una posición fija; la comparación del martes se calcula directamente desde los cierres del 7 de julio y 6 de julio en el bloque de recibos debajo de la tabla.
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-08 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-08 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-08 00:00:00') AS day_low,
argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-08 00:00:00') AS low_bar,
argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-08 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
AND ((window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
OR (window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
round(((day_high - day_low) / prior_close) * 100, 2) AS range_pct,
round(toFloat64(day_low), 2) AS day_low,
round(toFloat64(day_high), 2) AS day_high,
toUInt32(toHour(toTimeZone(low_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(low_bar, 'America/New_York'))) AS low_minute_et,
toUInt32(toHour(toTimeZone(high_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(high_bar, 'America/New_York'))) AS high_minute_et,
day_dollar_bn
FROM per_name
ORDER BY ticker12 de los catorce nombres de chips cerraron al alza, lo opuesto a la sesión del martes, cuando el 12 de los catorce cerró en rojo. SNDK lideró el sector con un +6.8% con 16.82B de dólares negociados, seguida de cerca por AVGO con un +4.82%; el resto de las empresas de almacenamiento también subieron: STX +3.9% y WDC +3.45%. El ETF apalancado 3x SOXL subió un +5.79% y el inverso SOXS un -6.22%, lo cual es consistente con una recuperación de un día en el sector subyacente. MU subió un más modesto +1.11% pero registró 32.02B de dólares, siendo el nombre con mayor volumen de dólares en el panel. NVDA cerró con un +3.66% por segundo día consecutivo de ganancias; fue uno de los pocos 2 nombres en este panel que cerró al alza durante la caída del martes (+0.67% ese día).
El SQL exacto detrás de cada cifra
SELECT
countIf(close_8 > close_7) AS jul8_green,
countIf(close_8 < close_7) AS jul8_red,
countIf(close_7 > close_6) AS jul7_green,
countIf(close_7 < close_6) AS jul7_red,
round(anyIf((close_7 / close_6 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul7_pct,
count() AS names_counted
FROM (
SELECT ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')) AS close_6,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')) AS close_7,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS close_8
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY ticker
)La otra cara: las defensivas y las mega-caps de crecimiento no siguieron la tendencia
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-08 00:00:00')) AS prior_close_raw,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-08 00:00:00')) AS day_open_raw,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 00:00:00')) AS day_close_raw,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-08 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('CRNX', 'CVX', 'JNJ', 'LLY', 'META', 'TSLA', 'UNH', 'XOM')
AND ((window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
OR (window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close_raw, 2) AS prior_close,
round(day_open_raw, 2) AS day_open,
round(day_close_raw, 2) AS day_close,
round((day_open_raw / prior_close_raw - 1) * 100, 2) AS gap_pct,
round((day_close_raw / day_open_raw - 1) * 100, 2) AS intraday_pct,
round((day_close_raw / prior_close_raw - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerLas mega-caps de crecimiento se movieron en dirección opuesta al sector de los chips: TSLA -2.22%, META -2.04%, LLY -1.6%. CVX fue el único cierre positivo del panel, subiendo +1.12% tras un gap temprano, mientras que XOM abrió con una subida de +1.26% y cayó hasta -0.49% al cierre. De este modo, la sesión del miércoles se dividió en dos: las acciones de chips subieron, mientras que las de crecimiento y defensivas bajaron, con los índices manteniéndose estables entre ambos grupos. (Las filas están en orden alfabético: CRNX, CVX, JNJ, LLY, META, TSLA, UNH, XOM.)
Dónde se negoció el dinero
El SQL exacto detrás de cada cifra
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
round(1000 * dollar_volume_bn / shares_m, 2) AS implied_avg_price,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard, pct_of_board_leader DESCMU registró 32.02B de dólares, siendo el activo con mayor volumen y el único por encima de los $30B. SPY (26.49B), NVDA (24.17B) y QQQ (20.9B) le siguieron, con SNDK en 16.82B y TSLA en 11.71B completando la lista de volumen en dólares. El tablero de acciones mostró un panorama distinto: el ETF inverso 3x de semiconductores SOXS negoció 636.5M acciones a un precio promedio implícito de $4.67, debido a la mecánica de un wrapper 3x de bajo precio en un día de fuerte movimiento en el sector de chips.
La forma de la sesión
El SQL exacto detrás de cada cifra
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
GROUP BY et_time
ORDER BY et_timeEl volumen presentó una forma de U clásica: el volumen de apertura fue del 89.9% del volumen máximo del día y disminuyó durante la mañana, alcanzando su punto más bajo de 34.1% en el horario de 1:00–1:30 pm ET. La media hora de cierre (15:30 ET) fue el periodo con mayor volumen del día con 2.2B de acciones, superando los 1.98B de la apertura, el patrón estándar para una sesión regular.
El tape de opciones
El SQL exacto detrás de cada cifra
WITH
(
SELECT (groupArray(und), groupArray(strike), groupArray(typ), groupArray(vol), groupArray(avg_px), groupArray(is_0dte))
FROM (
SELECT any(underlying_symbol) AS und, any(toFloat64(strike_price)) AS strike, any(option_type) AS typ,
sum(size) AS vol, round(avg(toFloat64(price)), 3) AS avg_px,
if(substring(ticker, length(ticker) - 14, 6) = '260708', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'
GROUP BY ticker
ORDER BY vol DESC
LIMIT 2
)
) AS top2,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00'
) AS spy_regular_close,
(
SELECT round(toFloat64(sum(size)) / 1e6, 2)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
) AS jul7_contracts_m,
(
SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260707') / sum(size), 1)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
) AS jul7_pct_0dte
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
jul7_contracts_m,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260708') / sum(size), 1) AS pct_0dte,
jul7_pct_0dte,
spy_regular_close,
top2.1[1] AS top1_und, top2.2[1] AS top1_strike, top2.3[1] AS top1_type, top2.4[1] AS top1_contracts, top2.5[1] AS top1_avg_px, top2.6[1] AS top1_is_0dte,
round(toFloat64(top2.2[1]) - spy_regular_close, 2) AS top1_moneyness
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'El tape consolidado de opciones registró 10.44M operaciones y 63.26M contratos, superando los 61.13M del martes, calculados con el mismo tape durante el periodo del martes. Los calls representaron 55.4% del volumen total, mostrando una ligera inclinación hacia las opciones de compra. Los contratos 0DTE (vencimiento el mismo día, 260708) alcanzaron el 38.7% del volumen de contratos, frente al 31.2% del martes. El contrato individual con mayor actividad fue SPY 745C — 677981 contratos a un precio promedio de $0.875, un vencimiento en el mismo día esencialmente at the money frente al cierre regular de SPY de $745.31.
La cinta de cotizaciones
El SQL exacto detrás de cada cifra
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / 1e6, 2) AS jul8_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / 1e6, 2) AS jul7_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / countIf(toDate(sip_timestamp) = toDate('2026-07-07')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'SPY') / 1e6, 2) AS jul8_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'QQQ') / 1e6, 2) AS jul8_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'NVDA') / 1e6, 2) AS jul8_nvda_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'TSLA') / 1e6, 2) AS jul8_tsla_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08') AND ticker = 'MU') / 1e6, 2) AS jul8_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'La cinta de cotizaciones de acciones registró 530.55M actualizaciones de NBBO el 8 de julio — +7.7% frente a la sesión anterior. Las 6.53M actualizaciones de QQQ lideraron los tickers mencionados, por delante de las 4.93M de SPY. NVDA (1.8M), TSLA (0.72M) y MU (0.6M) completan el recuento de nombres.
El SQL exacto detrás de cada cifra
SELECT
ticker,
round(quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000), 2) AS median_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'NVDA', 'TSLA', 'MU', 'SNDK', 'AVGO')
AND sip_timestamp >= '2026-07-08 13:30:00' AND sip_timestamp < '2026-07-08 20:00:00'
AND bid_price > 0 AND ask_price > 0 AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps ASCEntre los siete tickers mencionados, el spread mediano cotizado de SPY durante el RTH fue de 0.27 bps, el límite inferior de lo normal para el ETF más líquido de EE. UU. QQQ cotizó a 0.71 bps y NVDA a 1.52 bps. El extremo más amplio de la tabla pertenece a los nombres con menor actividad de cotización: MU con 5.66 bps y SNDK con 12.21 bps.
El SQL exacto detrás de cada cifra
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-08')), 3) AS jul8_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-08')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-08'))) + 1 AS tightness_rank,
count() AS sessions_compared,
round(min(avg_spread_cents), 3) AS tightest_session_cents,
round(max(avg_spread_cents), 3) AS widest_session_cents,
toString(min(d)) AS first_session,
sum(dropped_invalid) AS dropped_invalid_quotes
FROM (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
avgIf(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100 AS avg_spread_cents,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-05 00:00:00')
AND sip_timestamp < toDateTime('2026-07-09 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)El spread promedio cotizado de SPY durante el RTH de 2.202 cents se ubicó en el percentil 11 de las 22 sesiones anteriores; un día de rango medio en cuanto a la estrechez del spread. El rango del último mes se movió entre 1.809 cents (el más estrecho) y 2.865 cents (el más amplio). Sin falta de liquidez ni eventos de volatilidad: una sesión ordinaria para el spread cotizado de SPY.
El SQL exacto detrás de cada cifra
WITH
(SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00') AS jul8_options_rows,
(SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00') AS jul8_stock_quote_rows
SELECT
round(jul8_options_rows / 1e9, 2) AS jul8_options_bn,
round(jul8_options_rows / jul8_stock_quote_rows, 1) AS options_to_stock_ratio,
round((SELECT count() FROM global_markets.cache_options_quotes WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27' AND sip_timestamp >= '2026-07-08 13:30:00' AND sip_timestamp < '2026-07-08 20:00:00') / 1e6, 0) AS jul8_spy_options_mLa cinta de opciones registró 9.62 billion actualizaciones de NBBO — 18.1× el recuento de la cinta de cotizaciones de acciones. Solo el segmento de opciones de SPY tuvo 422 million actualizaciones durante el horario regular.
Tasas: la curva apenas se movió
El SQL exacto detrás de cada cifra
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul8_yield_pct,
round((t.2 - t.3) * 100) AS session_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(d.yield_1_month), toFloat64(p.yield_1_month)),
('3 month', toFloat64(d.yield_3_month), toFloat64(p.yield_3_month)),
('1 year', toFloat64(d.yield_1_year), toFloat64(p.yield_1_year)),
('2 year', toFloat64(d.yield_2_year), toFloat64(p.yield_2_year)),
('5 year', toFloat64(d.yield_5_year), toFloat64(p.yield_5_year)),
('10 year', toFloat64(d.yield_10_year), toFloat64(p.yield_10_year)),
('30 year', toFloat64(d.yield_30_year), toFloat64(p.yield_30_year)),
('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-08') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-07') AS p
)El bono a 5 años lideró los movimientos de la sesión con +4 bp; el de 2 años cerró +2 bp arriba, y ninguna otra madurez se movió más de 2 bp en ninguna dirección. Esto dejó el spread 2s10s en 0.35% (-1 bp en la sesión), dentro de su rango reciente. El movimiento moderado de las tasas ocurrió junto con el movimiento moderado del índice.
El calendario del día
El SQL exacto detrás de cada cifra
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-08'
) AS news,
(
SELECT (argMax(t, (n, t)), max(n), max(n) - arraySort(x -> -x, groupArray(n))[2])
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-08'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-08') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-08') AS forward_splits,
(SELECT countIf(form_type = '424B2') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_424b2,
(SELECT countIf(form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_form4,
(SELECT countIf(form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_8k,
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-08') AS fil_total,
news.1 AS news_articles, news.2 AS news_publishers,
top_news.1 AS top_news_ticker, top_news.2 AS top_news_n, top_news.3 AS top_news_lead_over_nextEl calendario tuvo poca actividad: 81 registros de ex-dividend, 1 split de acciones ejecutado y 3722 presentaciones ante la SEC en total (con 775 operaciones de insiders en Form 4, 527 prospectos 424B2 y 163 reportes actuales 8-K). La cobertura de noticias incluyó 192 artículos de 3 editores, con MU entre los tickers más mencionados en 17 artículos. Ninguna acción corporativa de empresas reconocidas destacó en el flujo del día; el tema central del mercado fue el sector de los semiconductores.
La sesión, verificada
El SQL exacto detrás de cada cifra
SELECT
formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
count() AS spy_minute_bars,
countIf(window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-08') AS jul8_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-08' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-08' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-08 00:00:00' AND window_start < '2026-07-09 00:00:00'La sesión tuvo un horario extendido completo —la primera barra de SPY fue a las 04:00 ET y la última a las 19:59 ET— con 390 barras de un minuto en horario regular y 1 de la sesión de trading en el periodo (sin medio día; la tabla de feriados no tiene una fila para esta fecha). El próximo cierre programado es el Labor Day del 2026-09-07.
Notas de datos
Todas las marcas de tiempo se almacenan en UTC; las horas regulares del 8 de julio de 2026 se filtran como sip_timestamp / window_start entre 2026-07-08 13:30:00 y 2026-07-08 20:00:00, lo que corresponde a las 9:30 am–4:00 pm hora de Nueva York. Los precios decimales se convierten a Float64 antes de cualquier división. Los paneles con nombres por ticker (scoreboard, chip complex, rotation) están ordenados alfabéticamente por ticker para que cada referencia en el texto apunte a una fila fija; los leaderboards (volume, quote snapshot) están ordenados por valor, y cada afirmación posicional que realizan está codificada como un límite de validación para esa posición. Cada comparación semanal en esta página —participación de breadth, conteos de chips en verde/rojo, contratos de opciones y participación de 0DTE, conteos de actualización de cotizaciones— se calcula nuevamente desde el 7 de julio (y el 6 de julio cuando se requiere un cierre previo) en el mismo bloque de consulta, nunca se cita de una publicación anterior.
Notas de datos completas
El panel de breadth cuenta nombres con un cierre en horario regular en ambas sesiones y con al menos $1M negociado en el día medido; el conteo de excluidos (5284 de 11439) permite visualizar la cola excluida. Las columnas de tiempo day_low/day_high del chip complex utilizan el patrón argMin/argMaxIf(..., (value, timestamp)) para que los empates se resuelvan de forma determinista. Las etiquetas de los buckets de volume-smile son ET (%H:%i), calculadas con toTimeZone únicamente en la lista SELECT. El panel de options-tape detecta vencimientos en el mismo día mediante la coincidencia de la subcadena del ticker de la OCC (substring(ticker, length(ticker) - 14, 6)) en lugar de options_trades.expiration_date (esa columna presenta errores, según la nota de pre-vuelo estándar). Los símbolos en KNOWN_AMBIGUOUS_TICKERS se excluyen en las consultas SQL de volume-leaders y news-attention para que las menciones de "los más X" se limiten a nombres verificables. El ticker de top-news utiliza un desempate determinista (argMax(t, (n, t))); top_news_lead_over_next = 0 indica un empate, razón por la cual el texto dice "entre los más mencionados". El panel de treasury une dos filas de snapshots diarios; la falta de un snapshot para cualquiera de las fechas resulta en cero filas y el límite row_count mantiene la integridad del post. Los conteos de stocks-quote y options-quote son escaneos de la cinta completa sobre particiones diarias; los conteos de tickers con nombre se reportan en millones para coincidir con las unidades de sus columnas. Las medianas del spread utilizan quantileExact (determinista); el panel de trailing spread es un promedio (avgIf), etiquetado como tal.
Metodología
- Fuente de datos de mercado: cinta consolidada —
delayed_stocks_minute_aggspara precios y volúmenes de índices y activos individuales,cache_options_quotesyoptions_tradespara la cinta de opciones,cache_stocks_quotespara conteos de NBBO y spreads cotizados. - Gestión de zona horaria: todas las marcas de tiempo almacenadas están en UTC; las etiquetas de hora ET se calculan con
toTimeZone(..., 'America/New_York')solo en las listas SELECT; las cláusulas WHERE utilizan literales UTC sin procesar. - Ventana de horario regular: 13:30–20:00 UTC, verificada mediante las barras de un minuto observadas de SPY (el panel de verificación de sesión), no mediante aritmética de calendario.
- Definición de spread:
(ask - bid) / midpoint × 10,000en puntos básicos sobre cotizaciones bilaterales válidas para el snapshot; el panel del mes anterior es un promedio de ancho en centavos, etiquetado como un promedio. - Comparaciones con la sesión anterior: calculadas en la consulta desde el 7 de julio (y el 6 de julio para el día a día del martes); nunca se arrastran de una publicación anterior.
- Agregados deterministas:
quantileExact,argMin/argMaxcon clave de tupla, y un desempate de noticias determinista para regeneraciones estables. - Fecha de corte del almacén: 10 de julio de 2026 (T+2 para el periodo); las cintas de ambas sesiones están totalmente ingeridas en este nivel.
Enlaces cruzados: resumen del 7 de julio de 2026, costos de trading de opciones, conceptos básicos del bid-ask spread, opciones 0DTE y volumen relativo.