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

Resumen de mercado 6 de julio de 2026

Análisis de la sesión tras el feriado con un gap alcista por crecimiento, rotación de sectores y el cierre del QQQ con el spread más ajustado del mes.

Lunes, 6 de julio de 2026 — la primera sesión tras el fin de semana del Día de la Independencia — abrió con un gap alcista impulsado por el crecimiento y mantuvo esa tendencia. QQQ cerró en 1.39% frente al 0.42% de DIA, reflejando la rotación del jueves, y la amplitud fue positiva: 3861 valores líquidos subieron frente al 2242. La mayor parte del movimiento fue el gap de reapertura, con una cotización de índice la más ajustada del último mes. Cada cifra a continuación proviene de una consulta almacenada.

El marcador

Los cambios comparan el último minuto de la sesión regular del 6 de julio con el jueves 2 de julio, un día festivo de mercado atrás.

ConsultaSPY / QQQ / DIA / IWM — 6 de julio vs cierre del 2 de julio, horario regular
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-02 13:30:00' AND window_start < '2026-07-02 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-06 13:30:00' AND window_start < '2026-07-06 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 AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.ticker

El 1.39% de QQQ lideró a los cuatro ETF de índices y el 0.42% de DIA quedó al final; el inverso exacto de el jueves, cuando DIA subió y QQQ cayó. SPY cerró 0.87% e IWM 0.45%. El gap frente al avance gradual define la forma real del día: QQQ abrió 1.01% por encima del cierre del jueves y solo sumó 0.38% más de apertura a cierre; el gap del 0.53% de SPY representó la mayor parte de su 0.87% diario. IWM (0.07%) y DIA (0.17%) apenas tuvieron gaps y, en su lugar, avanzaron gradualmente durante la sesión.

¿Fue un día inusual?

ConsultaMovimiento de apertura a cierre de SPY comparado con el mes anterior (rank 1 = mayor movimiento absoluto)
El SQL exacto detrás de cada cifra
SELECT round(anyIf(oc_pct, d = toDate('2026-07-06')), 2) AS day_move_pct,
       arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-06'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-06'))) + 1 AS abs_move_rank,
       count() AS sessions_compared,
       toString(min(d)) AS first_session
FROM (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-06-06 00:00:00')
      AND window_start < toDateTime('2026-07-07 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY d
)

A nivel de índice, no: el movimiento de apertura a cierre de SPY de 0.34% ocupa el puesto 13 de 19 sesiones consecutivas por tamaño absoluto, situándose en la media. La actividad intradía fue ordinaria; el movimiento ocurrió en el gap.

Amplitud: tendencia alcista, el crecimiento vuelve al frente

ConsultaAvances vs declives entre tickers con al menos $1M negociado el 6 de julio
El SQL exacto detrás de cada cifra
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') AS day_dollar_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
       OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
    GROUP BY ticker
)
SELECT
    countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
    countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
    countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
    countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
    count() AS tickers_traded_both_sessions,
    count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
        / countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct
FROM per_ticker
WHERE prior_close > 0 AND day_close > 0

3861 avances, 2242 bajas, 86 sin cambios — el 62.4% de la cinta líquida subió. La amplitud por ponderación de índice y por conteo igual coincidieron en terreno positivo, mientras que el jueves se dividieron. El filtro descarta el 5361 de los 11550 tickers con doble sesión con un volumen inferior a un millón de dólares.

Por sector: ¿qué tan amplia fue la brecha?

Cuatro megacaps no conforman un mercado. El panel evalúa el día a través de los once grandes ETF de sectores —un fondo por cada segmento del S&P 500, la misma canasta cada sesión—. Observe el spread entre el mejor y el peor sector: la dispersión del día.

ConsultaLos once ETFs de sectores: 6 de julio vs cierre del 2 de julio, desglosado en gap e intradía
El SQL exacto detrás de cada cifra
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
        toFloat64(argMinIf(open, window_start, window_start >= '2026-07-06 00:00:00')) AS day_open,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
      AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
        OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'))
    GROUP BY ticker
)
SELECT
    ticker,
    round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
    round((day_open / prior_close - 1) * 100, 2) AS gap_pct,
    round((day_close / day_open - 1) * 100, 2) AS intraday_pct,
    day_dollar_bn,
    round(max((day_close / prior_close - 1) * 100) OVER () - (day_close / prior_close - 1) * 100, 2) AS points_behind_leader
FROM per_name
ORDER BY pct_chg DESC, ticker ASC

Tecnología (XLK) lideró la jornada con un 1.71%, casi todo debido a la brecha: 1.19% al inicio, 0.52% durante las siguientes seis horas y media. El sector financiero (0.99%) e industriales (0.9%) le siguieron. Luego la tendencia cambia: cinco filas en verde dan paso a seis en rojo, en el extremo defensivo —servicios públicos, salud, consumo básico— con caídas de hasta el -1.08%. De arriba hacia abajo, 2.79 puntos porcentuales separaron al mejor del peor en un día donde el índice S&P se movió un 0.87% —varias veces el movimiento del índice—, lo que refuerza el argumento de no interpretar un día en verde como un fenómeno uniforme. Bienes raíces y servicios públicos mostraron la tendencia opuesta a tecnología: aperturas casi planas (0.09%, -0.11%), seguidas de una caída durante toda la sesión (-1.01% y -0.92% de apertura a cierre).

El hecho destacado del día: la caída de memoria, recuperada a medias

El complejo de memoria y almacenamiento que colapsó entre el miércoles y el jueves repuntó el lunes, pero solo a la mitad.

ConsultaNombres de memoria y almacenamiento: cambio vs cierre del jueves, timing de rango y volumen en dólares
El SQL exacto detrás de cada cifra
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-06 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-06 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-06 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-06 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
      AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
        OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

Los dos fabricantes de unidades lideraron el rebote: Western Digital 7.14% y Seagate 6%, ambos alcanzando su máximo a media mañana (10:44 y 10:39 ET). Los dos con mayores caídas no participaron: MU sumó un 0.88%, registrando su mínimo en la barra de cierre (15:59); SanDisk terminó con un -0.03% en un rango de 7.27%. MU todavía movió $30.9 mil millones en acciones, más que las otras tres combinadas (el análisis profundo de MU cubre su trimestre).

La otra mitad de la rotación se mantuvo dentro de las megacaps:

ConsultaRotación de megacaps: cambio vs cierre del jueves, timing de rango y volumen en dólares
El SQL exacto detrás de cada cifra
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-06 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-06 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-06 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-06 00:00:00') AS day_low,
        argMinIf(window_start, toFloat64(low), window_start >= '2026-07-06 00:00:00') AS low_bar,
        argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-06 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-06 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
      AND ((window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00')
        OR (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 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, 2) AS day_high,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    round(day_low, 2) AS day_low,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    round((day_high / day_low - 1) * 100, 2) AS range_pct,
    day_dollar_bn
FROM per_name
ORDER BY ticker

TSLA tuvo una subida constante hasta el 6.86% —mínimo en 09:37 ET, máximo en la barra de cierre (15:59)— reflejando su caída del jueves. AAPL sumó un 1.49% y NVDA un 0.57%; MSFT fue la única megacap en rojo con un -0.7%, alcanzando su máximo en la apertura de las 09:30.

Dónde se negoció el dinero

ConsultaLíderes de volumen de dos formas: top 6 por dólares negociados, top 4 por acciones negociadas (se excluye un símbolo duplicado pendiente de verificación)
El SQL exacto detrás de cada cifra
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
    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-06 13:30:00' AND window_start < '2026-07-06 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-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY shares_m DESC
    LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESC

SPY lideró el volumen del dólar con $31.49 mil millones, seguido por MU ($30.9 mil millones) — terminando con la racha de cuatro sesiones de MU en la cima (lunes hasta jueves muestran los datos). En la tabla de acciones, SOXS —el ETF inverso 3x de semiconductores— negoció 467.1 millones de acciones, liderando el conteo nuevamente a pesar de la subida de los chips que rastrea.

ConsultaAcciones negociadas por bucket de 30 minutos, horario regular (billions)
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-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
GROUP BY et_time
ORDER BY et_time

1.96 mil millones de acciones en la primera media hora, un mínimo de 0.68 mil millones a las 14:30, y 2.1 mil millones al cierre de la 15:30 — la curva intradía habitual, con mayor volumen en ambos extremos.

El tape de opciones

ConsultaUna fila para el día de opciones: volumen, call share y el expiry del mismo lunes
El SQL exacto detrás de cada cifra
WITH
    (
        SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
                any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
                sum(size), count(), round(avg(toFloat64(price)), 3))
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'
        GROUP BY ticker
        ORDER BY sum(size) DESC
        LIMIT 1
    ) AS top_contract,
    (
        SELECT round(toFloat64(argMax(close, window_start)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
    ) AS spy_regular_close
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS 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) = '260706') / sum(size), 1) AS same_day_expiry_pct,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260706')) / 1e6, 2) AS same_day_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
    round(toFloat64(sumIf(size, underlying_symbol = 'TSLA')) / 1e6, 2) AS tsla_contracts_m,
    top_contract.1 AS top_contract_underlying,
    top_contract.2 AS top_contract_strike,
    top_contract.3 AS top_contract_type,
    if(top_contract.3 = 'C', 1, 0) AS top_contract_is_call,
    top_contract.4 AS top_contract_expiry,
    round(toFloat64(top_contract.5) / 1e6, 2) AS top_contract_volume_m,
    round(top_contract.7, 3) AS top_contract_avg_price,
    round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00'

Se negociaron 60.98 millones de contratos de opciones en 10.53 millones de operaciones, de las cuales 58.4% fueron calls. Los vencimientos del mismo día representaron el 38.7% del tape (23.57 millones de contratos), un volumen rutinario de 0DTE para un lunes, por debajo de la cifra de la víspera de feriado de el jueves con doble carga. El contrato más activo fue el call de SPY $751 con vencimiento el mismo día, con 1.08 millones de contratos a un precio promedio de $0.564, con el SPY cerrando $0.3 por encima del strike — in the money. Un call encabezó la lista, mientras que el jueves cerró con un put.

La cinta de cotizaciones: ¿se operó el gap con spreads amplios?

Bajo cada precio se encuentra el flujo de cotizaciones: el National Best Bid and Offer (NBBO), que se actualiza continuamente para cada valor listado. Un gap de apertura es un momento donde las cotizaciones pueden volverse hostiles, por lo que lo medimos en cada sesión.

ConsultaFlujo NBBO de todo el equity: 6 de julio vs sesión del 2 de julio, y dónde se concentraron las quotes del lunes
El SQL exacto detrás de cada cifra
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / 1e6, 2) AS jul6_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / countIf(toDate(sip_timestamp) = toDate('2026-07-02')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 14:00:00') / 1e6, 2) AS jul6_open_half_hour_m,
    round(countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 18:00:00') / 1e6, 2) AS jul6_midday_half_hour_m,
    round(countIf(sip_timestamp >= '2026-07-06 19:30:00' AND sip_timestamp < '2026-07-06 20:00:00') / 1e6, 2) AS jul6_close_half_hour_m
FROM global_markets.cache_stocks_quotes
WHERE (sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00')
   OR (sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-07 00:00:00')

La cinta registró 391.96 millones de actualizaciones de NBBO el lunes frente a 597.22 millones el jueves — -34.4%, un tercio menos de mensajes que la sesión previa al feriado — y se acumularon hacia la apertura: 58.66 millones en la primera media hora frente a 20.74 millones a la 1:30pm y 33.7 millones hacia el cierre. Hubo menos cotizaciones que el jueves, pero no más amplias:

ConsultaEl touch en la apertura del gap: spread y tasa de quote mediana, 9:30–9:42 ET vs control de mediodía (12 minutos cada uno)
El SQL exacto detrás de cada cifra
SELECT
    ticker,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00'), 2) AS open_spread_bps,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS midday_spread_bps,
    round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00')
        - quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 2) AS spread_delta_bps,
    round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / 1e3, 1) AS open_updates_k,
    round(countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00') / 1e3, 1) AS midday_updates_k,
    round(countIf(sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 13:42:00') / countIf(sip_timestamp >= '2026-07-06 17:30:00' AND sip_timestamp < '2026-07-06 17:42:00'), 1) AS quote_rate_ratio,
    round(count() / 1e6, 2) AS session_updates_m,
    countIf(bid_price <= 0 OR ask_price <= 0 OR bid_price > ask_price) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('DIA', 'IWM', 'MSFT', 'MU', 'QQQ', 'SNDK', 'SPY', 'STX', 'TSLA', 'WDC')
  AND sip_timestamp >= '2026-07-06 13:30:00' AND sip_timestamp < '2026-07-06 20:00:00'
GROUP BY ticker
ORDER BY ticker

El bid-ask spread es el costo de ejecutar una orden, medido en puntos base del precio medio — 1 bp es un centavo en una acción de $100. Ningún valor verificado cotizó con un spread más estrecho en los primeros doce minutos del gap que al mediodía, y el touch de SPY fue idéntico en ambos casos (0.27 bps, 0 bps de cambio) incluso cuando se re-cotizó 3x más rápido hacia la apertura. La penalización por amplitud afectó a acciones individuales, no a fondos indexados: SanDisk fue la más afectada (+12.9 bps, 8.16 a 21.07), MU +3.63, TSLA +2.89, frente a los 0.42 bps de QQQ con un touch de 0.83 bps. Seagate responde a la duda de si "todo es líquido?": 30.94 bps de ancho en la apertura, más de cien veces el touch de SPY.

ConsultaQuoted spread promedio ponderado de SPY: 6 de julio comparado con el mes anterior (rank 1 = más ajustado)
El SQL exacto detrás de cada cifra
SELECT
    round(anyIf(avg_spread_cents, d = toDate('2026-07-06')), 3) AS jul6_avg_spread_cents,
    arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-06')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-06'))) + 1 AS tightness_rank,
    count() AS sessions_compared,
    round(max(avg_spread_cents), 3) AS widest_session_cents,
    round(avgIf(avg_spread_cents, d != toDate('2026-07-06')), 3) AS other_sessions_avg_cents,
    replaceAll(formatDateTime(min(d), '%M %e, %Y'), '  ', ' ') 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-04 00:00:00')
      AND sip_timestamp < toDateTime('2026-07-07 00:00:00')
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
    GROUP BY d
)

Durante toda la jornada regular, el 6 de julio fue la sesión con el spread más estrecho de SPY en el último mes: un promedio de spread ponderado por actualizaciones de 1.815 centavos, ocupando el puesto 1 de 21 sesiones desde June 4, 2026, frente a un promedio mensual de 2.337 centavos que alcanzó los 2.865 en su punto más ancho. Un volumen de cotizaciones reducido por el feriado permitió que el comprador del índice obtuviera el touch más barato del mercado.

Tasas: una curva estable durante el fin de semana largo

ConsultaCurva de los treasuries: 6 de julio vs print del 2 de julio (solo vencimientos con datos)
El SQL exacto detrás de cada cifra
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jul6_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-06') AS d,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS p
)

La curva apenas tuvo movimiento durante el fin de semana largo. El bono a 10 años se mantuvo en 4.48% y el spread 2s10s en 0.35 puntos porcentuales; ambos valores se mantuvieron a uno o dos puntos básicos del cierre de julio. El único movimiento relevante fue el de la tasa a 3 meses, que se situó en 5 puntos básicos.

El calendario detrás de la jornada

ConsultaCalendario corporativo y flujo de información del 6 de julio en una fila (incluye el muro de reverse-split tras un screener trap)
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-06'
    ) AS news,
    (
        SELECT (argMax(t, n), max(n))
        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-06'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS ex_dividend_records,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_executed,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-06') AS ipos_listed,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS sec_filings,
    (SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS insider_form4_filings,
    (SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-06') AS filings_8k,
    news.1 AS news_articles,
    news.2 AS news_publishers,
    top_news.1 AS most_covered_ticker,
    top_news.2 AS most_covered_articles

118 registros de dividendos pasaron a ex-dividend, se ejecutaron 15 splits, llegaron 0 nuevas cotizaciones y el índice de la SEC registró 3161 presentaciones — 1219 Form 4s, 201 8-Ks — un volumen menor al del jueves previo al feriado. El feed de noticias presentó 236 artículos, siendo el nombre más cubierto NVDA con 25.

El muro de los reverse-splits detrás de los buscadores de momentum

El 14 de los splits del 15 fueron reverse splits —consolidaciones de acciones, la mayoría con precios inferiores a un dólar— frente al 1 de forward splits. Un reverse split convierte muchas acciones antiguas en una sola a un precio proporcionalmente mayor, lo cual un buscador no ajustado reporta como una "ganancia" de tres dígitos sin que se haya ganado nada. El muro completo:

ConsultaCada split ejecutado el 6 de julio, con su cierre sin ajustar antes y después (se omiten splits sin tape de sesión regular en ambos lados)
El SQL exacto detrás de cada cifra
SELECT
    s.ticker AS ticker,
    toFloat64(s.split_from) AS old_shares,
    toFloat64(s.split_to) AS new_shares,
    round(toFloat64(s.split_from) / toFloat64(s.split_to), 0) AS old_shares_per_new,
    p.prev_close AS jul2_close,
    d.day_close AS jul6_close,
    round((d.day_close / p.prev_close - 1) * 100, 1) AS unadjusted_pct_chg
FROM (
    SELECT ticker, any(split_from) AS split_from, any(split_to) AS split_to
    FROM global_markets.stocks_splits
    WHERE execution_date = '2026-07-06'
    GROUP BY ticker
) s
INNER JOIN (
    SELECT ticker, round(toFloat64(argMax(close, window_start)), 2) AS prev_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
      AND ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06')
    GROUP BY ticker
    HAVING prev_close > 0
) p ON s.ticker = p.ticker
INNER JOIN (
    SELECT ticker, round(toFloat64(argMax(close, window_start)), 2) AS day_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
      AND ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06')
    GROUP BY ticker
    HAVING day_close > 0
) d ON s.ticker = d.ticker
ORDER BY unadjusted_pct_chg DESC, ticker ASC

Cada una de las 12 filas es una consolidación que muestra una "ganancia" de tres dígitos o superior en la cinta sin ajustar —desde 31450% en la parte superior (una consolidación de 200-por-uno, con el cierre sin ajustar de $0.02 a $6.31) hasta 226.1% en la proporción más pequeña (3-por-uno). A mitad de la tabla se encuentra el caso de estudio más claro: un reverse split de 10-por-uno llevó el cierre sin ajustar de TXXS de $2.35 el jueves a $24.34 el lunes; diez acciones antiguas se convirtieron en una, no fue un rally de diez veces. Un buscador de cambios de precio bruto coloca toda esta tabla por encima de cualquier movimiento real; el nuestro excluye los splits. El forward split de CRWD del jueves simuló lo contrario: una caída.

La sesión, verificada — el primer regreso tras el receso

ConsultaCheck de sesión: span de minute-bars observado de SPY, cierre del 3 de julio y el siguiente en el calendario
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-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.delayed_stocks_minute_aggs
     WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars,
    (SELECT replaceAll(formatDateTime(min(date), '%M %e, %Y'), '  ', ' ') FROM global_markets.stocks_market_holidays WHERE date > '2026-07-06' AND status = 'closed') AS next_closure_date,
    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-06' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-06 00:00:00' AND window_start < '2026-07-07 00:00:00'

El 6 de julio fue una sesión completa, no un cierre temprano: las barras de SPY se extendieron desde las 04:00 hasta las 19:59 hora de Nueva York con exactamente 390 barras de horario regular. El viernes anterior, 3 de julio, se registraron 0 barras de SPY, un cierre completo debido a que el Día de la Independencia, 4 de julio, cayó en sábado. Próximo cierre: Labor Day, September 7, 2026. La semana de cuatro sesiones previa al receso se detalla en el resumen semanal.

Preguntas frecuentes

¿Cómo le fue al mercado de acciones el 6 de julio de 2026?

Los cuatro grandes ETFs de índices cerraron al alza — QQQ 1.39%, SPY 0.87%, IWM 0.45%, DIA 0.42% — con un 62.4% de valores líquidos con ganancias, la mayoría debido a un gap nocturno.

¿Qué sector lideró el 6 de julio de 2026?

Tecnología (XLK) lideró los once ETFs de sectores con un 1.71%, mientras que el sector defensivo alcanzó un mínimo de -1.08% — un spread de mejor a peor de 2.79 puntos porcentuales, varias veces el movimiento del 0.87% del índice S&P.

¿Estuvo abierto el mercado de acciones el Día de la Independencia de 2026?

No. El 4 de julio cayó en sábado, y las bolsas observaron el Día de la Independencia el viernes 3 de julio — un cierre registrado por las barras de un minuto de 0 SPY que se generaron. El 6 de julio fue la primera sesión de regreso.

¿Por qué algunas acciones mostraron ganancias masivas de un día en el 6 de julio?

Se ejecutaron reverse splits 14. Consolidar muchas acciones antiguas en una a un precio proporcionalmente más alto hace que una pantalla sin ajustar reporte una "ganancia" de cientos por ciento, cuando el valor de la posición del tenedor no cambia — los nombres 12 mencionados arriba son todos de ese tipo.

¿Estaban amplios los spreads en la apertura por gap?

Solo en acciones individuales. El spread mediano cotizado de SPY en los primeros doce minutos fue de 0.27 puntos base, idéntico a su nivel al mediodía; SanDisk cotizó 12.9 bps más ancho que al mediodía.

Notas de datos

  • El volumen en dólares es un proxy por minuto — precio de cierre × volumen sumados por barra de un minuto.
  • La canasta del sector es un método declarado, no un campo de proveedor: los once grandes ETFs de sectores del S&P (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY), el mismo conjunto cada sesión.
  • Los spreads cotizados son las medianas de (ask − bid) ÷ mid sobre cotizaciones bilaterales válidas; las cotizaciones unilaterales, en cero o cruzadas se descartan y se contabilizan en el panel.
  • Una lista con símbolo reutilizado queda excluida de las tablas de clasificación mientras se verifica la entidad (recibos).

Metodología

  • El periodo consiste en una única sesión de negociación (sesión 1, verificada mediante barras observadas). Las marcas de tiempo se almacenan en UTC y se convierten a la hora de Nueva York dentro de las consultas. "Close" se refiere a la última barra de minuto de la sesión regular; los cambios de día comparan el 6 de julio con el 2 de julio — la sesión anterior al cierre del 3 de julio, verificada mediante barras, nunca asumida.
  • Los decimales se convierten a floats de 64 bits antes de realizar aritmética de ratios. Los paneles se leen una sola vez, al momento de la autoría, a través de la ruta de solo lectura restringida.

Cada panel es el resultado de una consulta almacenada: el gráfico, la tabla y el SQL son un mismo objeto. Pegue cualquiera de ellos en la terminal Strasmore para personalizarlos. Sesión anterior: 2 de julio. Siguiente: 7 de julio.