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

Resumen bursátil del 6 de julio de 2026

Tras el feriado del Día de la Independencia: gap alcista liderado por crecimiento, brecha sectorial varias veces mayor que el índice, reverse split y spreads más estrechos del mes.

El 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 liderado por los valores de crecimiento y mantuvo esa subida. QQQ cerró en 1.39%, frente al 0.42% de DIA, el reflejo de la rotación del jueves, y la amplitud fue positiva: subieron 3861 valores líquidos, frente a 2242. La mayor parte del movimiento correspondió al gap de reapertura, valorado en la cotización más ajustada del índice durante el último mes. Todas las cifras siguientes se obtienen de una consulta almacenada.

La tabla de posiciones

Los cambios comparan la última vela de un minuto de la sesión regular del 6 de julio con la del jueves 2 de julio, un feriado bursátil anterior.

ConsultaSPY / QQQ / DIA / IWM: 6 de julio vs. cierre del 2 de julio, horario regular
tickercierre previoapertura del díacierre del díagap (%)intradiario (%)cambio (%)máximo del díamínimo del díaacciones negociadas (M)
DIA527.83528.72530.030.170.250.42530.03525.852.8
IWM297.53297.75298.880.070.380.45300.41297.6217.1
QQQ712.74719.93722.631.010.381.39726.08718.4526
SPY744.8748.74751.30.530.340.87752.41747.4142
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
Pruébalo tú mismo

QQQ, con 1.39%, encabezó los cuatro ETFs de índices, mientras que DIA, con 0.42%, quedó rezagado. Fue exactamente lo contrario de el jueves, cuando DIA subió y QQQ cayó. SPY cerró en 0.87% e IWM, en 0.45%. La diferencia entre un gap y una subida gradual define la sesión: QQQ abrió 1.01% por encima del cierre del jueves y solo sumó 0.38% adicionales entre la apertura y el cierre. El gap de 0.53% de SPY explicó la mayor parte de su avance diario de 0.87%. IWM (0.07%) y DIA (0.17%) apenas registraron un gap y subieron gradualmente dentro de la sesión.

¿Fue un día inusual?

ConsultaMovimiento de apertura a cierre de SPY comparado con el mes previo de sesiones (rango 1 = mayor movimiento absoluto)
movimiento del día (%)rango de movimiento abs.sesiones comparadasprimera sesión
0.3413192026-06-08
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
)
Pruébalo tú mismo

A nivel del índice, no: el movimiento de apertura a cierre de SPY, de 0.34%, ocupa el puesto 13 entre las últimas 19 sesiones por magnitud absoluta, en la zona media. La operativa intradía fue normal; la mayor parte del movimiento se produjo en la apertura.

Breadth: green tape, growth back in front

ConsultaAvances vs. descensos entre tickers con al menos $1M negociado el 6 de julio
alzasbajassin cambiotickers líquidostickers negociados en ambas sesionesexcluidos por filtro de liquidezalzas (%)
3861224286618911550536162.4
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
Pruébalo tú mismo

3861 advancers, 2242 decliners, 86 unchanged, 62.4% of the liquid tape rose. Index weighting and equal-count breadth agreed, both green, where Thursday split them. The filter drops 5361 of 11550 dual-session tickers under $1M traded.

Por sector: ¿qué tan amplia fue la dispersión?

Cuatro megacaps no representan a todo el mercado. El panel valora la sesión mediante los once grandes ETFs sectoriales, un fondo por cada segmento del S&P 500, con la misma canasta en cada sesión. Observe el spread entre el mejor y el peor sector: la dispersión del día.

ConsultaLos once ETF sectoriales: 6 de julio vs. cierre del 2 de julio, separados en gap e intradía
tickercambio (%)gap (%)intradiario (%)volumen diario ($ mil millones)puntos detrás del líder
XLK1.711.190.521.430
XLF0.990.420.561.640.72
XLI0.90.430.471.20.81
XLY0.750.350.390.980.96
XLC0.60.430.170.821.11
XLB-0.06-0.130.080.851.77
XLE-0.15-0.320.171.151.86
XLRE-0.920.09-1.010.282.63
XLU-1.03-0.11-0.920.732.74
XLV-1.03-0.35-0.692.352.75
XLP-1.08-0.24-0.851.062.79
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
Pruébalo tú mismo

Tecnología (XLK) lideró la sesión con 1.71%, casi todo explicado por la brecha: 1.19% en la apertura y 0.52% durante las siguientes seis horas y media. Le siguieron los sectores financiero (0.99%) e industrial (0.9%). Después, la tabla cambia: cinco filas en verde dan paso a seis en rojo, encabezadas por los sectores defensivos, con utilities, salud y consumo básico en niveles de hasta -1.08%. Entre el máximo y el mínimo, 2.79 puntos porcentuales separaron al mejor del peor en una jornada en la que el ETF que replica al S&P se movió 0.87%, varias veces el movimiento del índice. Esto muestra por qué no debe interpretarse una jornada positiva como un movimiento uniforme. Real estate y utilities siguieron un patrón opuesto al de tecnología: aperturas casi planas (0.09%, -0.11%) y luego una caída durante toda la sesión (-1.01% y -0.92% de apertura a cierre).

El foco de la sesión: el desplome de las acciones de memoria se revirtió a medias

El complejo de memoria y almacenamiento que se desplomó el miércoles y el jueves rebotó el lunes, pero solo en parte.

ConsultaAcciones de memoria y almacenamiento: cambio vs. cierre del jueves, momento del rango y volumen en dólares
tickercierre previocierre del díacambio (%)máximo del díamáximo del día (ET)mínimo del díamínimo del día (ET)rango (%)volumen diario ($ mil millones)
MU975.77984.310.88101910:45980.8515:593.8930.9
SNDK1743.591743.08-0.031837.7710:441713.213:597.2713.85
STX820.25869.56886.8910:3984813:024.592.56
WDC538.99577.467.1460110:44563.6109:306.633.78
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
Pruébalo tú mismo

Los dos fabricantes de unidades lideraron el rebote: Western Digital 7.14% y Seagate 6%. Ambos alcanzaron su máximo a media mañana (10:44 y 10:39 ET). Las dos acciones con mayor volumen no participaron: MU sumó 0.88% y marcó su mínimo en la vela de cierre (15:59); SanDisk terminó con una subida de -0.03%, dentro de un rango de 7.27%. MU aún negoció $30.9 mil millones en acciones, más que las otras tres combinadas (el análisis detallado de MU cubre sus resultados trimestrales).

La otra mitad de la rotación se concentró en las megacaps:

ConsultaRotación de megacaps: cambio vs. cierre del jueves, momento del rango y volumen en dólares
tickercierre previocierre del díacambio (%)máximo del díamáximo del día (ET)mínimo del díamínimo del día (ET)rango (%)volumen diario ($ mil millones)
AAPL308.22312.811.49314.211:4530709:302.3511.7
MSFT389.62386.88-0.7389.1509:30381.2209:392.089.32
NVDA194.51195.620.57197.5512:14193.9909:301.8415.14
TSLA392.81419.776.8642015:59390.509:377.5519.17
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
Pruébalo tú mismo

TSLA subió de forma sostenida hasta 6.86%. Marcó su mínimo a las 09:37 ET y su máximo en la vela de cierre (15:59), justo lo contrario de su caída del jueves. AAPL sumó 1.49% y NVDA 0.57%. MSFT fue la única megacap en terreno negativo, con una caída de -0.7%. Marcó su máximo en la apertura de las 09:30.

Dónde se concentró el dinero negociado

ConsultaLíderes de volumen de dos formas: top 6 por dólares negociados, top 4 por acciones negociadas (se excluye un listado con símbolo reutilizado, pendiente de verificación de entidad)
clasificacióntickervolumen ($ mil millones)acciones (M)% del líder del tablero
by dollars tradedSPY31.4942100
by dollars tradedMU30.930.998.1
by dollars tradedTSLA19.1746.660.9
by dollars tradedQQQ18.792659.7
by dollars tradedNVDA15.1477.248.1
by dollars tradedAMD14.2625.545.3
by shares tradedSOXS1.86467.1100
by shares tradedBITO3.06358.576.8
by shares tradedSBEV0.07281.960.4
by shares tradedTZA0.62161.634.6
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
Pruébalo tú mismo

SPY lideró el volumen negociado en dólares, con $31.49 mil millones; MU ($30.9 mil millones) quedó un paso atrás y puso fin a la racha de cuatro sesiones de MU en el primer lugar (la recaudación corresponde a lunes a jueves). En el mercado de acciones, SOXS, el ETF de semiconductores inverso 3x, negoció 467.1 millones de acciones y volvió a encabezar el recuento, incluso mientras subían los chips que sigue.

ConsultaAcciones negociadas por bloque de 30 minutos, horario regular (miles de millones)
hora ETacciones (mil millones)% del grupo más grande
09:301.9693.7
10:001.3162.7
10:301.0951.9
11:001.0650.5
11:300.8842
12:000.8440
12:300.7636.3
13:000.7736.5
13:300.8138.7
14:000.6932.8
14:300.6832.5
15:000.8440.3
15:302.1100
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
Pruébalo tú mismo

1.96 mil millones de acciones en la primera media hora, un mínimo de 0.68 mil millones a las 14:30, 2.1 mil millones cerca del 15:30 cierre: la habitual sonrisa intradía, con mayor actividad en ambos extremos.

La cinta de opciones

ConsultaUna fila para toda la sesión de opciones: volumen, participación de calls y vencimiento del mismo día del lunes
operaciones de opciones (M)contratos (M)calls como % del volumenvencimiento el mismo día (%)contratos con vencimiento el mismo día (M)contratos de SPY (M)contratos de QQQ (M)contratos de TSLA (M)activo subyacente del contrato principalstrike del contrato principaltipo de contrato principalel contrato principal es callvencimiento del contrato principalvolumen del contrato principal (M)precio promedio del contrato principalcierre de SPY menos strike
10.5360.9858.438.723.5712.16.884.29SPY751C12026-07-061.080.5640.3
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'
Pruébalo tú mismo

Se negociaron opciones por 60.98 millones de contratos en 10.53 millones de operaciones ejecutadas, de las cuales 58.4% correspondieron a calls. Los vencimientos del mismo día representaron 38.7% de la cinta (23.57 millones de contratos), una proporción habitual de 0DTE para un lunes, por debajo de la cifra de la víspera del festivo, con doble concentración, registrada el jueves. El contrato más negociado fue la call de SPY con strike de $751 y vencimiento ese mismo día: 1.08 millones de contratos a un precio promedio de $0.564. SPY cerró $0.3 por encima del strike, por lo que terminó in the money. Una call encabezó la tabla, mientras que el jueves terminó con una put en primer lugar.

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

Debajo de cada precio aparece el flujo de cotizaciones: la mejor oferta de compra y venta nacional (NBBO), que se actualiza continuamente para cada valor listado. Una apertura con gap es un momento en el que las cotizaciones pueden volverse desfavorables, por lo que la medimos en cada sesión.

ConsultaFlujo completo del NBBO de acciones: 6 de julio vs. la sesión del 2 de julio, y dónde se concentraron las cotizaciones del lunes
actualizaciones del 6 de jul. (M)actualizaciones del 2 de jul. (M)variación diaria (%)primeros 30 min del 6 de jul. (M)30 min del mediodía del 6 de jul. (M)últimos 30 min del 6 de jul. (M)
391.96597.22-34.458.6620.7433.7
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')
Pruébalo tú mismo

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

ConsultaEl touch en la apertura con gap: spread cotizado mediano y tasa de cotización, 9:30–9:42 ET vs. un control de mediodía (12 minutos cada uno)
tickerspread de apertura (pb)spread del mediodía (pb)variación del spread (pb)actualizaciones de apertura (miles)actualizaciones del mediodía (miles)razón de tasas de cotizaciónactualizaciones de la sesión (M)cotizaciones inválidas descartadas
DIA0.760.570.19105.919.65.40.837
IWM0.670.330.34219.198.42.22.5662
MSFT3.881.562.3225.26.63.80.32121
MU8.094.463.6353.515.23.50.69317
QQQ0.830.420.42357.9121.42.93.96239
SNDK21.078.1612.914.94.63.30.1638
SPY0.270.270276.992.833.35883
STX30.9425.625.322.90.83.40.0411
TSLA4.571.682.8940.617.72.30.6553
WDC14.679.285.399.52.14.50.140
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
Pruébalo tú mismo

El spread entre la oferta de compra y la oferta de venta es el costo de cruzar el mercado, expresado en puntos básicos del precio medio. Un punto básico equivale a un centavo por cada acción de $100. Ningún valor analizado cotizó con un spread más estrecho en los primeros doce minutos del gap que al mediodía, y el spread de SPY fue idéntico en ambos momentos (0.27 puntos básicos; cambio de 0 puntos básicos), aunque el ETF actualizó sus cotizaciones 3 veces más rápido durante la apertura. El costo de un spread más amplio se concentró en acciones individuales, no en fondos indexados: SanDisk registró el mayor incremento (+12.9 puntos básicos, de 8.16 a 21.07), seguido de MU con +3.63 y TSLA con +2.89, frente a los 0.42 puntos básicos de QQQ, con un spread de 0.83 puntos básicos. Seagate responde a la pregunta «¿acaso no es todo líquido?»: registró un spread de 30.94 puntos básicos en la apertura, más de cien veces el de SPY.

ConsultaSpread cotizado promedio ponderado por actualizaciones de SPY: 6 de julio comparado con el mes previo (rango 1 = más estrecho)
spread promedio del 6 de jul. (centavos)posición por estrechezsesiones comparadassesión más amplia (centavos)promedio de otras sesiones (centavos)primera sesióncotizaciones inválidas descartadas
1.8151212.8652.337June 4, 202641468
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
)
Pruébalo tú mismo

Durante toda la jornada regular, el 6 de julio fue la sesión más estrecha de SPY en el último mes: el spread cotizado promedio ponderado por actualizaciones fue de 1.815 centavos, con un rango de 1 entre 21 sesiones desde June 4, 2026. El promedio mensual fue de 2.337 centavos y alcanzó 2.865 en su punto más amplio. Aunque el feriado redujo el número de cotizaciones, el comprador del índice obtuvo el spread más barato del mercado.

Tasas: una curva estable durante el fin de semana largo

ConsultaCurva de Treasuries: 6 de julio vs. el cierre del 2 de julio (solo vencimientos con datos)
punto de la curvarendimiento del 6 de jul. (%)cambio durante la sesión (pb)
1 month3.69-1
3 month3.875
1 year3.95-1
2 year4.13-1
5 year4.21-2
10 year4.48-1
30 year4.991
2s10s spread0.350
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
)
Pruébalo tú mismo

La curva apenas se movió durante el fin de semana largo. El bono a 10 años se situó en 4.48% y el spread 2s10s en 0.35 puntos porcentuales; ambos niveles estuvieron a uno o dos puntos básicos del último print del 2 de julio. El plazo a 3 meses fue el único que registró un movimiento relevante, hasta 5 puntos básicos.

El calendario detrás de la sesión

ConsultaCalendario corporativo y flujo de información del 6 de julio, en una fila (incluido el muro de reverse split detrás de una trampa del screener)
registros ex-dividendosplits ejecutadossplits inversossplits directosIPOs listadaspresentaciones ante la SECpresentaciones Form 4 de insiderspresentaciones 8-Kartículos de noticiasmedios de noticiasticker con mayor coberturaartículos con mayor cobertura
119151410316412192012363NVDA25
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
Pruébalo tú mismo

119 registros de dividendos pasaron a cotizar ex-dividendo, se ejecutaron 15 splits, llegaron 0 nuevas cotizaciones y el índice de la SEC registró 3164 presentaciones, 1219 Formularios 4, 201 informes 8-K, un volumen de actividad inferior al del jueves previo al feriado. El flujo de noticias incluyó 236 artículos; el nombre con mayor cobertura fue NVDA, con 25.

El muro de los reverse splits detrás de las pantallas de mayores movimientos

14 de los 15 splits fueron reverse splits, es decir, consolidaciones de acciones, en su mayoría con precios inferiores a un dólar, frente a 1 forward splits. Un reverse split convierte muchas acciones antiguas en una sola a un precio proporcionalmente mayor. Una pantalla que no ajusta los precios lo reporta como una «ganancia» de tres dígitos, aunque no se haya ganado nada. El muro completo:

ConsultaCada split ejecutado el 6 de julio, con su cierre sin ajustar antes y después (se excluyen splits sin tape de sesión regular en ambos lados)
tickeracciones anterioresacciones nuevasacciones anteriores por cada nuevacierre del 2 de juliocierre del 6 de juliocambio porcentual sin ajustar
INLF20012000.026.3131450
NTCL501500.094.625033.3
NIPG301300.248.183308.3
JZ301300.12.992890
HKIT251250.174.132329.4
CRIS201200.355.91585.7
NVVE181180.324.941443.8
ABTC151150.568.471412.5
TXXS101102.3524.34935.7
SLAI7170.453.19608.9
SNAL5150.613.03396.7
NIVF3130.461.5226.1
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
Pruébalo tú mismo

Cada una de las 12 filas es una consolidación que muestra una «ganancia» de tres dígitos o superior en el tape sin ajustar. La lista va desde 31450% en la parte superior, una consolidación 200-por-1 con un cierre sin ajustar de $0.02 a $6.31, hasta 226.1%, con el ratio más pequeño (3-por-1). A mitad de la tabla aparece el caso más claro para entenderlo: un reverse split de 10-por-1 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 hubo un rally de diez veces. Un screener basado en la variación del precio sin ajustar coloca toda esta tabla por encima de cualquier movimiento real. El nuestro excluye los splits. El forward split del jueves de CRWD simuló lo contrario: un desplome.

La sesión, verificada, la primera después del receso

ConsultaRevisión de la sesión: rango observado de barras de un minuto de SPY, el cierre del 3 de julio y el próximo en el calendario
primera barra de SPY (ET)última barra de SPY (ET)barras de 1 minuto de SPYbarras de sesión regularsesiones del díabarras de SPY del 3 de juliofecha del próximo cierrenombre del próximo cierre
04:0019:5991739010September 7, 2026Labor Day
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'
Pruébalo tú mismo

El 6 de julio fue una sesión completa, no un cierre anticipado: las barras de SPY abarcan de 04:00 a 19:59, hora de Nueva York, con exactamente 390 barras dentro del horario regular. El viernes anterior, 3 de julio, registró 0 barras de SPY, debido al cierre total por el Día de la Independencia, que cayó en sábado. Próximo cierre: Labor Day, September 7, 2026. La semana de cuatro sesiones anterior al receso se analiza en el resumen semanal.

Preguntas frecuentes

¿Cómo se comportó el mercado bursátil el 6 de julio de 2026?

Los cuatro grandes ETFs de índices cerraron al alza: QQQ 1.39%, SPY 0.87%, IWM 0.45% y DIA 0.42%. 62.4% de los nombres líquidos avanzaron, en su mayoría debido a un gap alcista de apertura tras la sesión nocturna.

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

Tecnología (XLK) lideró los once ETFs sectoriales con 1.71%. El extremo defensivo llegó a apenas -1.08%. La diferencia entre el mejor y el peor desempeño fue de 2.79 puntos porcentuales, varias veces el movimiento de 0.87% del ETF que sigue al S&P.

¿Estuvo abierto el mercado bursátil 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. Esto queda registrado arriba en las 0 barras de un minuto de SPY que muestran operaciones ejecutadas. El 6 de julio fue la primera sesión de regreso.

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

Se ejecutaron splits inversos de 14. Consolidar muchas acciones antiguas en una sola, a un precio proporcionalmente más alto, hace que una pantalla sin ajustar muestre una “ganancia” de cientos por ciento, aunque el valor de la posición del tenedor no cambie. Los nombres 12 mencionados arriba son todos de ese tipo.

¿Los spreads fueron amplios durante la apertura con gap?

Solo en acciones individuales. El spread cotizado mediano de SPY durante los primeros doce minutos fue de 0.27 puntos básicos, igual que al mediodía. SanDisk cotizó un spread 12.9 puntos básicos más amplio que al mediodía.

Notas sobre los datos

  • El volumen negociado en dólares es un indicador aproximado por minuto: precio de cierre × volumen, sumados en cada barra de un minuto.
  • La cesta sectorial es un método declarado, no un campo del proveedor: los once grandes ETFs sectoriales del S&P (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV y XLY), siempre el mismo conjunto en cada sesión.
  • Los spreads cotizados son las medianas de (ask − bid) ÷ mid entre cotizaciones válidas con ambos lados; se excluyen las cotizaciones de un solo lado, en cero o cruzadas, y se contabilizan en el panel.
  • Una cotización con un símbolo reutilizado queda excluida de las clasificaciones hasta verificar la entidad (comprobantes).

Metodología

  • El periodo corresponde a una sola sesión de trading (1 sesión, verificada a partir de las barras observadas). Las marcas de tiempo se almacenan en UTC y se convierten a la hora de Nueva York dentro de las queries. «Cierre» significa la última barra de un minuto de la sesión regular; los cambios diarios comparan el 6 de julio con el 2 de julio, la sesión anterior al cierre del 3 de julio. La comparación se verificó con las barras y nunca se asumió.
  • Los decimales se convierten a floats de 64 bits antes de realizar las operaciones de ratios. Los paneles se leen una sola vez, al momento de redactar, mediante la ruta de solo lectura con acceso controlado.

Cada panel es el resultado de una query almacenada; el gráfico, la tabla y el SQL forman un solo objeto. Pegue cualquiera de ellos en la terminal de Strasmore y hágalo suyo. Sesión anterior: 2 de julio. Siguiente: 7 de julio.

#recap#daily#spy#qqq#market structure