Resumen de mercado 9 de julio de 2026
Equipos de chips y mega-caps presentaron gaps volátiles antes de un cierre verde. Analizamos el movimiento de NVDA y la amplitud del mercado en este reporte.
El jueves 9 de julio de 2026 presentó una alta volatilidad en un solo minuto, antes de la apertura del mercado. Las acciones de equipos de semiconductores operaban muy por encima del cierre del miércoles en el premarket, mientras que META se situaba un -3.16% por debajo; la apertura de las 9:30 confirmó ambas posiciones. Posteriormente, la tendencia inicial se revirtió parcialmente: los saltos en los semiconductores disminuyeron, META recuperó sus niveles y la sesión cerró un 71.5% en verde, siendo la jornada con mayor amplitud de la semana. NVDA, que se mantuvo en verde tras la caída del martes, cerró en rojo. Cada cifra presentada a continuación proviene de una consulta almacenada.
Qué configuró la apertura
Los gaps no se formaron a las 9:30. Entre las 4:00 am y las 9:29 am ET, la cinta del premarket ya había ajustado los precios de estos valores, y la impresión de apertura se situó en ese nivel.
El SQL exacto detrás de cada cifra
SELECT
ticker,
round(prior_close, 2) AS prior_close,
formatDateTime(first_pm_bar, '%H:%i') AS first_premkt_bar_et,
round(premkt_last, 2) AS premkt_last,
round((premkt_last / prior_close - 1) * 100, 2) AS premkt_pct,
round(premkt_shares / 1e3, 1) AS premkt_shares_k,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_open / premkt_last - 1) * 100, 2) AS open_vs_premkt_pct
FROM (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) AS prior_close,
minIf(toTimeZone(window_start, 'America/New_York'), window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 13:30:00') AS first_pm_bar,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 13:30:00')) AS premkt_last,
sumIf(toFloat64(volume), window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 13:30:00') AS premkt_shares,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS day_open
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'KLAC', 'LRCX', 'META', 'NVDA')
AND ((window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')
OR (window_start >= '2026-07-09 08:00:00' AND window_start < '2026-07-09 20:00:00'))
GROUP BY ticker
)
ORDER BY tickerLa última cotización de KLAC en el premarket se situó +8.49% sobre el cierre del miércoles y abrió +8.14%; LRCX subió +9.64% hacia una apertura de +9.67%; META registró -3.16% y abrió -3.16%. Lea open_vs_premkt_pct: los seis abrieron dentro del uno por ciento de su último precio en el premarket. NVDA es la excepción — 0.16% durante la noche sobre 3741.7k acciones, el mayor volumen de premarket de los seis y el movimiento más pequeño (trading en premarket y after-hours).
¿Hubo un catalizador? Nuestros datos no señalan ninguno
Un resumen debe indicar qué movió a una acción. En este caso, nuestras tablas no muestran nada: el feed de noticias y el índice de presentaciones de la SEC están vacíos para los cuatro nombres con mayores gaps.
El SQL exacto detrás de cada cifra
SELECT
ticker,
toUInt32(sum(overnight_articles)) AS overnight_articles,
toUInt32(sum(session_articles)) AS session_articles,
toUInt32(sum(sec_filings)) AS sec_filings,
toUInt32(sum(filings_8k)) AS filings_8k
FROM (
SELECT
arrayJoin(['AMD', 'KLAC', 'LRCX', 'META', 'MSFT', 'MU', 'NVDA', 'TER', 'WDC']) AS ticker,
toUInt64(0) AS overnight_articles, toUInt64(0) AS session_articles,
toUInt64(0) AS sec_filings, toUInt64(0) AS filings_8k
UNION ALL
SELECT
arrayJoin(tickers) AS ticker,
countIf(published_utc < '2026-07-09 13:30:00') AS overnight_articles,
countIf(published_utc >= '2026-07-09 13:30:00') AS session_articles,
toUInt64(0) AS sec_filings, toUInt64(0) AS filings_8k
FROM global_markets.stocks_news
WHERE published_utc >= '2026-07-08 20:00:00' AND published_utc < '2026-07-09 20:00:00'
GROUP BY ticker
UNION ALL
SELECT
ticker, toUInt64(0), toUInt64(0),
count() AS sec_filings,
countIf(form_type = '8-K') AS filings_8k
FROM global_markets.stocks_sec_edgar_index
WHERE filing_date >= '2026-07-08' AND filing_date <= '2026-07-09'
GROUP BY ticker
)
WHERE ticker IN ('AMD', 'KLAC', 'LRCX', 'META', 'MSFT', 'MU', 'NVDA', 'TER', 'WDC')
GROUP BY ticker
ORDER BY ticker0 artículos nocturnos, 0 intradía, 0 presentaciones de la SEC para KLAC — la misma fila vacía para LRCX, TER y WDC. NVDA, que nunca tuvo gaps, tuvo la mayor cobertura de los nueve (7 nocturnos, 9 intradía) y cerró en rojo. Esto es la atención de un solo feed, no de los medios mundiales, y una fila vacía no es prueba de la ausencia de un evento — pero nada en nuestros datos identifica una causa, y "causa desconocida" es una respuesta completa.
El marcador
Cada cambio compara la última barra de minuto de la sesión regular del 9 de julio con la del miércoles; 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-08 13:30:00' AND window_start < '2026-07-08 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-09 13:30:00' AND window_start < '2026-07-09 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 cerraron en verde. QQQ lideró con +1.67%, tras un gap de +0.99% y una subida de +0.68%; el de pequeña capitalización IWM registró +1.29%, SPY +0.85% hasta $751.64, y DIA quedó al final con +0.29%. El sector de crecimiento lideró, el Dow quedó rezagado.
¿Fue un día inusual?
A nivel de índices, no: el cierre sobre cierre de QQQ con un +1.67% ocupó el puesto 10 de 21 sesiones consecutivas por magnitud; el rango de apertura a cierre de SPY fue del 8 de 22. La volatilidad se concentró entre los grupos del día.
El SQL exacto detrás de cada cifra
SELECT
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-09')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-09'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-09'))) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ' AND isFinite(cc_pct)) AS qqq_sessions_compared,
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-09')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-09'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-09'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT ticker, d,
if(isFinite(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1),
(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100, NULL) 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-08 13:30:00')
AND window_start < toDateTime('2026-07-10 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)Amplitud: la sesión con mayor amplitud de la semana
El SQL exacto detrás de cada cifra
SELECT
countIf(close_9 > close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS advancers,
countIf(close_9 < close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS decliners,
countIf(close_9 = close_8 AND close_8 > 0 AND dv_9 >= 1000000) AS unchanged,
countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000) AS liquid_tickers,
countIf(close_8 > 0 AND close_9 > 0) AS traded_both_sessions,
countIf(close_8 > 0 AND close_9 > 0) - countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(close_9 > close_8 AND close_8 > 0 AND dv_9 >= 1000000) / countIf(close_8 > 0 AND close_9 > 0 AND dv_9 >= 1000000), 1) AS advancer_pct,
round(100.0 * countIf(close_8 > close_7 AND close_7 > 0 AND dv_8 >= 1000000) / countIf(close_8 > 0 AND close_7 > 0 AND dv_8 >= 1000000), 1) AS jul8_advancer_pct
FROM (
SELECT ticker,
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,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS close_9,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS dv_9,
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
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-09 20:00:00'
GROUP BY ticker
)4263 acciones al alza frente a 1631 acciones a la baja — una proporción de acciones al alza de 71.5% tras 29.6% el miércoles, bajo el mismo cálculo y el mismo filtro de $1M de volumen negociado (5385 de 11351 tickers caen por debajo de este nivel). Comparado con el resto de la semana:
El SQL exacto detrás de cada cifra
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-09 20:00:00'
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
),
lagged AS (
SELECT ticker, d, c, dv,
lagInFrame(c) OVER (PARTITION BY ticker ORDER BY d) AS prev_c
FROM per_day
)
SELECT
toString(d) AS date,
round(anyIf((c / prev_c - 1) * 100, ticker = 'SPY'), 2) AS spy_pct,
round(anyIf((c / prev_c - 1) * 100, ticker = 'QQQ'), 2) AS qqq_pct,
round(100.0 * countIf(c > prev_c AND prev_c > 0 AND dv >= 1000000) / countIf(c > 0 AND prev_c > 0 AND dv >= 1000000), 1) AS advancer_pct,
countIf(c > 0 AND prev_c > 0 AND dv >= 1000000) AS liquid_names
FROM lagged
WHERE d >= toDate('2026-07-06')
GROUP BY d
ORDER BY dEl lunes comenzó con 62.4% acciones al alza; el martes y el miércoles cayeron a 33.9% y 29.6%, y el valor de 71.4% del jueves es el más alto de las cuatro sesiones completadas de la semana (el viernes 10 de julio es posterior a este resumen). El QQQ también lo reflejó: -1.82% el martes, 0.25% el miércoles, +1.67% el jueves.
Más allá de los chips: cómo operó el resto del mercado
La amplitud indica que la mayoría de las acciones subieron; sin embargo, no significa que el rally fuera uniforme. A continuación: una cesta con igual ponderación de tres activos líquidos por sector, la misma cesta declarada cada día.
El SQL exacto detrás de cada cifra
SELECT
sector,
count() AS names,
round(avg(pct_chg), 2) AS avg_pct_chg,
round(min(pct_chg), 2) AS worst_name_pct,
round(max(pct_chg), 2) AS best_name_pct,
round(avg(pct_chg) - max(avg(pct_chg)) OVER (), 2) AS gap_to_best_sector_pct
FROM (
SELECT
ticker,
multiIf(ticker IN ('AMD', 'AVGO', 'KLAC'), 'Semiconductors',
ticker IN ('AAPL', 'MSFT', 'GOOGL'), 'Big tech',
ticker IN ('JPM', 'BAC', 'GS'), 'Financials',
ticker IN ('CAT', 'HON', 'GE'), 'Industrials',
ticker IN ('XOM', 'CVX', 'COP'), 'Energy',
ticker IN ('JNJ', 'UNH', 'PFE'), 'Healthcare',
ticker IN ('KO', 'PG', 'WMT'), 'Staples',
'Utilities') AS sector,
(toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
/ toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')) - 1) * 100 AS pct_chg
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'KLAC', 'AAPL', 'MSFT', 'GOOGL', 'JPM', 'BAC', 'GS', 'CAT', 'HON', 'GE',
'XOM', 'CVX', 'COP', 'JNJ', 'UNH', 'PFE', 'KO', 'PG', 'WMT', 'NEE', 'DUK', 'SO')
AND window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-09 20:00:00'
GROUP BY ticker
)
GROUP BY sector
ORDER BY avg_pct_chg DESCSemiconductors lideró con +4.24%, mientras que Energy se quedó atrás con -2.01% — un spread de -6.25 puntos (gap_to_best_sector_pct). El sector financiero fue la cesta no relacionada con chips más fuerte con +1.88%; Consumo básico (-0.91%), Servicios públicos (-0.96%) y Energía cerraron en rojo. Las grandes tecnológicas (AAPL, MSFT y GOOGL) promediaron un moderado +0.17%. La mayor reversión del día (de apertura a cierre), el movimiento de +8.1% de META, queda fuera de las ocho cestas; dentro de esta, la apertura de MSFT en -2.25% hacia un cierre de +0.33% fue el giro más pronunciado.
La apertura de los semiconductores y el retroceso posterior
gap_pct es la apertura frente al cierre del miércoles; intraday_pct es el resto del día. Las filas están en orden alfabético.
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-09 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-09 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-09 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-09 00:00:00') AS day_low,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 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-08 13:30:00' AND window_start < '2026-07-08 20:00:00')
OR (window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_open, 2) AS day_open,
round(day_close, 2) AS day_close,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerKLAC abrió con un +8.14% sobre el cierre del miércoles, luego perdió -3.98%; LRCX abrió con un +9.67% y retrocedió -3.26%; TER (+7.87%) y WDC (+7.89%) siguieron el mismo patrón. MU tuvo un gap de +7.07%, cayó -2.56%, pero cerró con un +4.33% sobre 33.56B — el ticker con mayor volumen del mercado por segundo sesión (resumen del miércoles contiene el primero). AMD y SNDK fueron las excepciones: AMD sumó 1.75% tras una apertura de +3.87% para finalizar con +5.68%, y SNDK, que ya estaba +6.14% en la apertura, sumó otro 1.23% para cerrar con +7.45%. Y NVDA: una apertura de +0.16% —sin gap— hacia un cierre de -0.68%.
El SQL exacto detrás de cada cifra
SELECT
countIf(close_9 > close_8) AS jul9_green,
countIf(close_9 < close_8) AS jul9_red,
countIf(close_8 > close_7) AS jul8_green,
round(anyIf((close_9 / close_8 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul9_pct,
round(anyIf((close_8 / close_7 - 1) * 100, ticker = 'NVDA'), 2) AS nvda_jul8_pct,
count() AS names_counted
FROM (
SELECT ticker,
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,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00')) AS close_9
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-09 20:00:00'
GROUP BY ticker
)12 de los catorce cerraron en verde; los cierres rojos del 2 fueron la excepción estructural en un día alcista, junto con NVDA en -0.68%, un día después de cerrar con +3.66%. El nombre de chips más grande del mercado se mantuvo al margen de la celebración de su propio sector, a pesar de tener la mayor cobertura de noticias.
La otra cara: las mega-caps abrieron a la baja y se recuperaron
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-09 00:00:00')) AS prior_close,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-09 00:00:00')) AS day_open,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-09 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-09 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'AMZN', 'CVX', 'GOOGL', 'JNJ', 'META', 'MSFT', 'TSLA')
AND ((window_start >= '2026-07-08 13:30:00' AND window_start < '2026-07-08 20:00:00')
OR (window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_open, 2) AS day_open,
round(day_close, 2) AS day_close,
round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerSiete de las ocho acciones abrieron por debajo del cierre del miércoles; lo que siguió las diferenció. META abrió -3.16% a la baja y subió un +8.1% hasta un cierre de 4.69% — la reversión más violenta entre apertura y cierre en la página. MSFT abrió -2.25% a la baja y se recuperó hasta +0.33%; AMZN (+1.4%) y AAPL (+0.93%) siguieron la misma tendencia; TSLA no tuvo gap y subió hasta +3.21%. Las acciones que se mantuvieron a la baja no fueron de crecimiento: GOOGL (-0.76%), CVX (-1.06%), JNJ (-1.62%). Por qué las acciones tienen gaps durante la noche explica la mecánica.
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-09 13:30:00' AND window_start < '2026-07-09 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-09 13:30:00' AND window_start < '2026-07-09 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 volvió a liderar el tablero de dólares con 33.56B, superando a SPY (24.37B), NVDA (21.28B) y SNDK (20.59B); el sector de memorias ocupó dos de los cuatro primeros puestos. El tablero de acciones muestra un mercado distinto: SOXS lideró con 558.1M acciones, con un precio implícito de $3.91 (volumen relativo).
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-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
GROUP BY et_time
ORDER BY et_timeUn patrón clásico: el volumen de apertura fue de 1.79B acciones (91.4% de las mayores), el punto más bajo al mediodía fue de 0.64B, y la subasta de cierre de media hora fue la mayor del día con 1.96B. Incluso en un día definido desde la apertura, el volumen terminó concentrado en el cierre.
El tape de las 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) = '260709', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
GROUP BY ticker
ORDER BY vol DESC
LIMIT 3
)
) AS top3,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
) AS spy_regular_close,
(
SELECT round(toFloat64(sum(size)) / 1e6, 2)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'
) AS jul8_contracts_m,
(
SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260708') / sum(size), 1)
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-09 00:00:00'
) AS jul8_pct_0dte
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
jul8_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) = '260709') / sum(size), 1) AS pct_0dte,
jul8_pct_0dte,
spy_regular_close,
top3.1[1] AS top1_und, top3.2[1] AS top1_strike, top3.3[1] AS top1_type,
round(toFloat64(top3.4[1]) / 1e3, 1) AS top1_contracts_k, top3.5[1] AS top1_avg_px, top3.6[1] AS top1_is_0dte,
top3.1[2] AS top2_und, top3.2[2] AS top2_strike, top3.3[2] AS top2_type, top3.6[2] AS top2_is_0dte,
top3.1[3] AS top3_und, top3.2[3] AS top3_strike, top3.3[3] AS top3_type, top3.6[3] AS top3_is_0dte,
round(toFloat64(top3.2[1]) - spy_regular_close, 2) AS top1_moneyness
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'El tape registró 9.99M impresiones y 58.85M contratos —frente a los 63.26M del miércoles—; las calls representaron el 58% del volumen, con la participación de las 0DTE bajando a 28.7% desde el 38.7%. Los tres contratos con mayor actividad fueron calls de SPY para el mismo día: la 751C (846.6K contratos, promedio de $0.526), la 752C y la 750C —una escalera de strikes alrededor del cierre de SPY en $751.64 (opciones 0DTE cubre el producto).
¿Cobertura o apuesta? Una cobertura compra strikes fuera del dinero; una apuesta compra el lado que desea.
El SQL exacto detrás de cada cifra
WITH (
SELECT toFloat64(argMax(close, window_start))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00'
) AS spy_close
SELECT
multiIf(dist < -2, 'Strike >2% below close',
dist < -0.5, 'Strike 0.5-2% below',
dist <= 0.5, 'Strike within 0.5%',
dist <= 2, 'Strike 0.5-2% above',
'Strike >2% above close') AS strike_bucket,
round(toFloat64(sumIf(size, option_type = 'C')) / 1e3, 1) AS call_contracts_k,
round(toFloat64(sumIf(size, option_type = 'P')) / 1e3, 1) AS put_contracts_k,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_share_pct
FROM (
SELECT option_type, size, (toFloat64(strike_price) / spy_close - 1) * 100 AS dist
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
AND underlying_symbol = 'SPY'
AND substring(ticker, length(ticker) - 14, 6) = '260709'
)
GROUP BY strike_bucket
ORDER BY min(dist)El tape de mismo día se situó en el dinero: 3768.9k calls y 2563.3k puts dentro de medio punto porcentual del cierre (59.5% calls). Los wings se dividieron por dirección —por debajo del cierre, 1356.5k puts frente a 255.4k calls (el 1.2% de las calls está más profundo en el dinero); por encima del cierre, las calls tomaron el 91.6% de un bucket mucho más delgado de 29.1k. El volumen de los wings se concentró en strikes a la baja, donde se compra protección: una escalera at-the-money, no una al alza.
La cinta de cotizaciones
El SQL exacto detrás de cada cifra
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09')) / 1e6, 2) AS jul9_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-08')) / 1e6, 2) AS jul8_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-09')) / countIf(toDate(sip_timestamp) = toDate('2026-07-08')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'SPY') / 1e6, 2) AS jul9_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'QQQ') / 1e6, 2) AS jul9_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'NVDA') / 1e6, 2) AS jul9_nvda_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'TSLA') / 1e6, 2) AS jul9_tsla_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-09') AND ticker = 'MU') / 1e6, 2) AS jul9_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-08 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'El dato más discreto del día: 383.44M actualizaciones del NBBO en la cinta de acciones, -27.7% frente al miércoles. La volatilidad se concentró en los niveles de precio, no en el volumen de transacciones. QQQ lideró los tickers con nombre con 4.35M, por encima de los 2.71M de SPY y los 1.83M de NVDA.
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-09 13:30:00' AND sip_timestamp < '2026-07-09 20:00:00'
AND bid_price > 0 AND ask_price > 0 AND ask_price > bid_price
GROUP BY ticker
ORDER BY median_spread_bps ASCEl spread medio cotizado de SPY fue de 0.27 bps, QQQ 0.42 y NVDA 0.99 — cifras normales. El extremo más amplio: MU con 4.23 bps y SNDK con 8.79 bps (el bid-ask spread es el costo que esto mide).
El SQL exacto detrás de cada cifra
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-09')), 3) AS jul9_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-09')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-09'))) + 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
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
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-08 00:00:00')
AND sip_timestamp < toDateTime('2026-07-10 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)El spread medio cotizado de SPY de 2.071 cents se situó en el 10 de las 22 sesiones anteriores, dentro de un rango de 1.809–2.865 cents: no hubo estrés en las cotizaciones, incluso con esa apertura.
El SQL exacto detrás de cada cifra
WITH
(SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00') AS jul9_options_rows,
(SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00') AS jul9_stock_quote_rows
SELECT
round(jul9_options_rows / 1e9, 2) AS jul9_options_bn,
round(jul9_options_rows / jul9_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-09 13:30:00' AND sip_timestamp < '2026-07-09 20:00:00') / 1e6, 0) AS jul9_spy_options_mLa cinta de cotizaciones de opciones registró 6.9 billion actualizaciones del NBBO — 18 veces el volumen de la cinta de acciones; solo el componente de SPY alcanzó los 242M.
Tasas: el reporte del 9 de julio
El SQL exacto detrás de cada cifra
SELECT
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-09') AS jul9_print_rows,
toString(any(date)) AS latest_print_date,
round(toFloat64(any(yield_2_year)), 2) AS latest_2y_pct,
round(toFloat64(any(yield_10_year)), 2) AS latest_10y_pct,
round(toFloat64(any(yield_30_year)), 2) AS latest_30y_pct,
round(toFloat64(any(yield_10_year)) - toFloat64(any(yield_2_year)), 2) AS latest_2s10s_pct
FROM global_markets.treasury_yields
WHERE date = '2026-07-09'El reporte de los bonos del Tesoro del 9 de julio se publicó con el retraso habitual del archivo de rendimientos diarios — la fila 1 ya está registrada. La curva del día (2026-07-09): el rendimiento de 2 años en 4.16%, el de 10 años en 4.54%, el de 30 años en 5.05% y el spread 2s10s en 0.38 puntos — el rendimiento de 2 años bajó respecto al nivel del 8 de julio, mientras que el tramo largo se mantuvo estable.
El calendario detrás de la jornada
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-09'
) 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-09'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-09') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-09') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-09') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-09') AS forward_splits,
(SELECT countIf(form_type = '424B2') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') AS fil_424b2,
(SELECT countIf(form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') AS fil_form4,
(SELECT countIf(form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') AS fil_8k,
(SELECT count() FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-09') 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_next,
if(top_news.1 = 'NVDA', 1, 0) AS top_news_is_nvdaUn calendario rutinario bajo una apertura inusual: registros ex-dividend de 127, 5 splits inversos, 1 splits directos, presentaciones ante la SEC de 2979 (623 Form 4s, 605 424B2s, 149 8-Ks). El feed generó 184 artículos a través de 3 editores; el ticker con más cobertura fue NVDA, con 20 artículos, seguido por 8 frente al siguiente nombre.
En espera
De nuestras propias tablas: datos sobre la próxima sesión, no pronósticos.
El SQL exacto detrás de cada cifra
SELECT
toString(min(d)) AS next_session_date,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-10') AS next_session_holiday_rows,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-10') AS ex_div_records_next,
(SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JNJ', 'KO', 'PG', 'XOM', 'CVX', 'JPM', 'WMT', 'PEP', 'HON', 'CAT'))
FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-10') AS household_ex_div_next,
(SELECT round(toFloat64(sum(size)) / 1e6, 2) FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
AND underlying_symbol = 'SPY' AND substring(ticker, length(ticker) - 14, 6) = '260710') AS spy_next_expiry_contracts_m,
(SELECT round(toFloat64(sum(size)) / 1e6, 2) FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-09 00:00:00' AND sip_timestamp < '2026-07-10 00:00:00'
AND underlying_symbol = 'SPY' AND substring(ticker, length(ticker) - 14, 6) = '260717') AS spy_monthly_expiry_contracts_m,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest) AS latest_short_settlement,
(SELECT count() FROM global_markets.stocks_short_interest WHERE settlement_date = '2026-07-15') AS jul15_short_rows
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-10 00:00:00' AND window_start < '2026-07-14 00:00:00'
)La próxima sesión es el 2026-07-10, con 0 días festivos en contra: un viernes normal. 153 empresas pagan dividendos esa mañana, 0 de nuestra lista de nombres conocidos. El vencimiento del SPY de este viernes es el más pesado que ya se ha negociado — 1.66M contratos el 9 de julio frente a 0.57M frente al mensual de julio. Reloj de interés corto: el último cierre registrado es el 2026-06-30, con 0 filas aún pendientes para mediados de julio — FINRA publica aproximadamente ocho días hábiles después del cierre (por qué el interés corto tiene dos semanas de antigüedad).
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-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-09 13:30:00' AND window_start < '2026-07-09 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-09') AS jul9_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_date,
(SELECT concat(monthName(min(date)), ' ', toString(toDayOfMonth(min(date))), ', ', toString(toYear(min(date))))
FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_label,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-09' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-09 00:00:00' AND window_start < '2026-07-10 00:00:00'Una sesión ordinaria completa: primera barra de SPY 04:00 ET, última 19:59 ET, 390 barras regulares de un minuto, sin fila de feriados. Próximo cierre: Labor Day, September 7, 2026.
Preguntas frecuentes
¿Qué ocurrió en el mercado de acciones el 9 de julio de 2026?
Todos los ETF de índices cerraron al alza — QQQ +1.67%, IWM +1.29%, SPY +0.85%, DIA +0.29%, con un 71.5% de acciones líquidas al alza. Las empresas de equipos para chips tuvieron un gap alcista seguido de una caída; las mega-caps tuvieron un gap bajista y se recuperaron.
¿Por qué subieron las acciones de equipos para chips como KLAC y LRCX el 9 de julio de 2026?
Nuestros datos no indican una razón: no hay artículos ni presentaciones ante la SEC para KLAC, LRCX, TER o WDC desde el cierre del miércoles hasta el jueves. El movimiento ya estaba descontado en el premarket, antes de las 9:30 am ET.
¿Por qué cayó NVDA mientras el sector de chips subía?
NVDA cerró -0.68% mientras que el 12 de catorce nombres de chips cerró en verde. Nunca tuvo un gap (0.16% en la apertura) y fue el ticker con más cobertura con 20 artículos — una co-ocurrencia récord, pero la causa no está en estos datos.
¿Fue el 9 de julio de 2026 un día inusual para el mercado?
No a nivel de índice: el movimiento de QQQ ocupó el puesto 10 de 21 sesiones anteriores por magnitud, y el spread promedio de SPY fue del 10 de 22. La dispersión subyacente fue de: -6.25 puntos entre la mejor y la peor cesta de sectores.
Notas de datos
El horario regular es de 13:30 a 20:00 UTC (9:30 am–4:00 pm ET); el panel de premarket utiliza el horario de 08:00–13:30 UTC. Las ocho canastas sectoriales están seleccionadas y ponderadas de forma igualitaria, con tres activos líquidos cada una, según cada ticker listado en el SQL de dicho panel. Este es un método declarado, no una clasificación de un proveedor: tres activos representan el sector, no la totalidad del mismo. El panel de catalizadores incluye únicamente nuestro feed de noticias y el índice EDGAR.
Notas de datos completas
Los paneles por ticker están ordenados alfabéticamente, por lo que cada referencia en el texto apunta a una fila fija; los leaderboards están ordenados por valor, con cada posición delimitada. La impresión de los bonos del tesoro y la liquidación de posiciones cortas de mediados de julio están limitadas a cero filas; su llegada requerirá una reescritura de este post.
Metodología
- Fuentes: cada panel utiliza tablas SQL específicas: agregados por minuto, cachés de NBBO para acciones y opciones, operaciones de opciones, nuestro feed de noticias, el índice EDGAR, dividendos, interés corto, días feriados y rendimientos del tesoro.
- Convenciones: los literales UTC se usan en las cláusulas WHERE y las etiquetas ET solo en SELECT; gap = apertura de la primera barra regular ÷ cierre de la regular anterior − 1; las cifras de la sesión y semana anterior se calculan en la consulta y no se arrastran de publicaciones previas. Almacén de datos con fecha de corte al 13 de julio de 2026.