Strasmore Research
Resúmenes de mercado Matt ConnorPor Matt Connor · Actualizado 2026-07-23

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.

ConsultaSPY / QQQ / DIA / IWM — 8 de julio vs cierre del 7 de julio, RTH
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 ticker

Los 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.

ConsultaMovimiento diario SPY / QQQ en contexto histórico (cierre vs cierre, ~22 sesiones)
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

ConsultaAmplitud de liquidación: participación de ganadores el 8 de julio vs 7 de julio, filtro de $1M transaccionado
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.

ConsultaCatorce nombres del sector: cierre previo, cierre diario, rango diario, volumen en dólares, min/max ET
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 ticker

12 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).

ConsultaResultados: conteo de verdes/rojos el 8 de julio y 7 de julio para los mismos catorce nombres
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

ConsultaChequeo de rotación: ocho nombres — defensivos, mega-caps, biotech
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 ticker

Las 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

ConsultaTop 6 por volumen en dólares, top 4 por volumen en acciones — 8 de julio RTH
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 DESC

MU 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

ConsultaAcciones por bucket de 30 min ET, RTH, con % del bucket más grande del día
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_time

El 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

ConsultaTape de opciones: prints, contratos, % de calls, participación 0DTE vs martes, contrato líder
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 745C677981 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

ConsultaConteo de actualizaciones NBBO: 8 de julio vs 7 de julio, con actualizaciones por ticker (millones)
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.

ConsultaSPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO: spread cotizado mediano en RTH en puntos básicos
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 ASC

Entre 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.

ConsultaSpread cotizado promedio de SPY en RTH en contexto de último mes
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.

ConsultaTape NBBO de opciones: actualizaciones totales vs tape de acciones, más slice 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_m

La 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ó

ConsultaRendimientos de Treasuries: 8 de julio vs 7 de julio — vencimientos + 2s10s
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

ConsultaEx-divs, splits, filings de la SEC, noticias
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_next

El 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

ConsultaVerificación de sesión: primera/última barra SPY ET, conteo de barras RTH, resultados de feriados, próximo cierre
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_aggs para precios y volúmenes de índices y activos individuales, cache_options_quotes y options_trades para la cinta de opciones, cache_stocks_quotes para 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,000 en 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/argMax con 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.