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

Resumen del mercado: 8 de julio de 2026

Rebote de un día en semiconductores que los índices apenas reflejaron: la mayoría terminó al alza, NVDA subió por segundo día y el mercado amplio cerró con más de dos a uno a la baja.

El miércoles 8 de julio de 2026, los semiconductores registraron un rebote de un día que los índices apenas reflejaron. SNDK cerró +6.8%, AVGO +4.82% y NVDA +3.66%, una reversión marcada respecto de la fuerte caída de los semiconductores del martes, pero los ETF de índices se mantuvieron sin cambios: SPY -0.31% y QQQ +0.25%. El mercado amplio registró una amplitud aún más negativa, de más de dos a uno frente al día anterior: 1821 acciones al alza frente a 4260 acciones a la baja, con una proporción de acciones al alza de 29.6%, después de 33.8% en la sesión anterior. Todas las cifras siguientes se obtienen de una consulta almacenada; expanda cualquier panel para consultar el SQL exacto.

El marcador

Cada cambio compara la última vela de un minuto de la sesión regular del 8 de julio con la del martes 7 de julio, en sesiones consecutivas. Las filas están en orden alfabético, por lo que cada ETF conserva una posición fija.

ConsultaSPY / QQQ / DIA / IWM: 8 de julio vs. cierre del 7 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)
DIA528.48523.34522.72-0.97-0.12-1.09524.46520.033.2
IWM296.2294.03293.47-0.73-0.19-0.92295.1290.6820.3
QQQ709.5704.95711.3-0.640.90.25712.26700.9129.5
SPY747.66743.16745.31-0.60.29-0.31746.15739.5135.6
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
Pruébalo tú mismo

Los cuatro ETF abrieron con brecha a la baja y tomaron rumbos diferentes desde ese momento. DIA abrió la sesión en -0.97% frente al cierre anterior y siguió perdiendo terreno, para terminar en -1.09%. IWM abrió en -0.73% y se mantuvo a la baja, con un cierre en -0.92%. SPY abrió en -0.6%, recuperó terreno gradualmente durante la jornada y aun así cerró en -0.31%; la recuperación desde la apertura fue menor que la brecha. QQQ abrió en -0.64% y subió hasta +0.25% al cierre, el único de los cuatro en terreno positivo.

¿Fue inusual la jornada?

El movimiento de apertura a cierre de SPY, de 0.29%, ocupó el puesto 16 entre 22 sesiones anteriores. Fue una jornada intermedia para el índice, no un movimiento extremo. El movimiento de cierre a cierre de QQQ, de +0.25%, ocupó el puesto 21 entre 22. Fue uno de los movimientos mensuales más pequeños de QQQ en el periodo anterior, en línea con el movimiento moderado del índice.

ConsultaMovimiento diario de SPY / QQQ en contexto reciente (cierre contra cierre, ~22 sesiones)
QQQ cierre a cierre (%)rango de movimiento absoluto de QQQsesiones de QQQ comparadasSPY apertura a cierre (%)rango de movimiento absoluto de SPYsesiones de SPY comparadasprimera sesión
0.2521220.2916222026-06-05
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
    )
)
Pruébalo tú mismo

Amplitud: aún más valores a la baja en una proporción de dos a uno frente al día anterior

ConsultaAmplitud del mercado líquido: proporción de acciones al alza el 8 de julio vs. el 7 de julio, filtro de $1M negociados
alzasbajassin cambiotickers líquidosnegociaron en ambas sesionesexcluidos por filtro de liquidezalzas (%)alzas del 7 de julio (%)
1821426074615511439528429.633.8
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
)
Pruébalo tú mismo

La diferencia entre los valores que subieron (1821) y los que bajaron (4260) situó la proporción de valores al alza en 29.6%, frente a 33.8% en la sesión anterior. El cálculo aplicó el mismo filtro de liquidez en ambas sesiones. De las 11439 acciones con cierre en ambos días, 5284 quedaron por debajo del filtro de operaciones por $1 millón y se excluyeron del conteo. El rebote impulsado por los chips y el cierre mixto del índice se produjeron en un mercado amplio todavía más uniformemente negativo.

El complejo de chips rebotó con fuerza y con un volumen elevado

Las filas están ordenadas alfabéticamente, por lo que cada nombre conserva una posición fija; la comparación del martes se calcula nuevamente a partir de los cierres del 7 y 6 de julio en el bloque de recibos debajo de la tabla.

ConsultaCatorce acciones de chips: cierre previo, cierre del día, rango diario, volumen en dólares, mínimo/máximo por minuto ET
tickercierre previocierre del díacambio (%)rango (%)mínimo del díamáximo del díaminuto del mínimo (ET)minuto máximo ETvolumen diario en dólares (miles de millones)
AMD516.57517.260.134.81498.15522.986835878.93
AVGO370.79388.674.824.91376.89395.095707789.39
INTC110.5110.27-0.215.5104.41110.497139579.48
KLAC216.52221.032.084.2214.3223.46859291.79
LRCX326.12332.932.094.53322.72337.55705872.1
MRVL230.81231.660.375.12224.98236.795705934.57
MU938.95949.371.116.24900.4195957060032.02
NVDA196.93204.143.665.13195.06205.1657093724.17
SNDK1619.261729.46.88.9415901734.6957095916.82
SOXL165.27174.845.7910.82158.87176.755708168.12
SOXS4.824.52-6.22114.464.999295702.97
STX827.4859.683.96.18811.27862.415709593.46
TER343.1351.562.475.6335.06354.276865870.77
WDC532.34550.713.456.91526562.765706003.03
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
Pruébalo tú mismo

12 de los catorce nombres de chips cerraron al alza, lo contrario de la sesión del martes, cuando 12 de los catorce cerraron a la baja. SNDK lideró el complejo con +6.8% y 16.82B de dólares negociados, seguido de cerca por AVGO, con +4.82%; los otros nombres de almacenamiento también avanzaron: STX, +3.9%, y WDC, +3.45%. El ETF apalancado 3x SOXL subió +5.79% y el inverso SOXS -6.22%, en línea con una recuperación de un día en el complejo subyacente. MU avanzó un más moderado +1.11%, pero registró 32.02B de dólares, el mayor volumen negociado en dólares del panel. NVDA cerró +3.66% por segundo día consecutivo al alza: fue uno de los únicos 2 nombres de este panel que cerraron al alza durante la caída del martes (+0.67% ese día).

ConsultaResultados: conteo de alzas/bajas del 8 y 7 de julio en las mismas catorce acciones
jul8 al alzajul8 a la bajajul7 al alzajul7 a la bajaNVDA jul7 (%)nombres contabilizados
1222120.6714
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
)
Pruébalo tú mismo

El otro lado: las defensivas y las mega caps de crecimiento no acompañaron

ConsultaRevisión de rotación: ocho acciones, defensivas, mega-caps y biotecnología
tickercierre previoapertura del díacierre del díagap (%)intradiario (%)cambio (%)volumen diario en dólares (miles de millones)
CRNX83.5383.5283.45-0.01-0.08-0.11.38
CVX173.97176.8175.921.63-0.51.121.36
JNJ267.29268.6263.360.49-1.95-1.471.38
LLY1235.641221.11215.87-1.18-0.43-1.62.55
META615.57614.38603.03-0.19-1.85-2.045.86
TSLA402.88399.38393.92-0.87-1.37-2.2211.71
UNH428.18427.14425.56-0.24-0.37-0.611.28
XOM141.65143.44140.961.26-1.73-0.492.08
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
Pruébalo tú mismo

Las mega caps de crecimiento se movieron en la dirección opuesta al complejo de semiconductores: TSLA -2.22%, META -2.04%, LLY -1.6%. CVX fue el único cierre positivo del panel, con un avance de +1.12% tras una apertura con gap, mientras que XOM abrió +1.26% arriba y retrocedió hasta -0.49% al cierre. Así, la sesión del miércoles se dividió en dos: las acciones de semiconductores subieron, las de crecimiento y las defensivas bajaron, y los índices quedaron sin cambios entre ambos grupos. (Las filas están en orden alfabético: CRNX, CVX, JNJ, LLY, META, TSLA, UNH, XOM.)

Dónde se concentró el dinero

ConsultaTop 6 por dólares negociados, top 4 por acciones negociadas: 8 de julio, horario regular
tabla de líderestickervolumen en dólares (miles de millones)acciones (millones)precio promedio implícito% del líder del tablero
by dollars tradedMU32.0234.1939100
by dollars tradedSPY26.4935.6744.182.7
by dollars tradedNVDA24.17120.5200.5875.5
by dollars tradedQQQ20.929.5708.4765.3
by dollars tradedSNDK16.8210.11665.3552.5
by dollars tradedTSLA11.7129.7394.2836.6
by shares tradedSOXS2.97636.54.67100
by shares tradedTZA1.37334.84.0952.6
by shares tradedBITO2.29272.48.4142.8
by shares tradedAAL2.79169.316.4826.6
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
Pruébalo tú mismo

MU negoció 32.02B de dólares, el nombre con mayor actividad en el mercado y el único por encima de la marca de $30B. Le siguieron SPY (26.49B), NVDA (24.17B) y QQQ (20.9B), mientras que SNDK, con 16.82B, y TSLA, con 11.71B, completaron la tabla por monto en dólares. La tabla por número de acciones mostró una historia diferente: el ETF inverso 3x de semiconductores SOXS negoció 636.5M acciones a un precio promedio implícito de $4.67, reflejo de la mecánica de un vehículo 3x de bajo precio durante una jornada de fuerte actividad en acciones de chips.

La forma de la sesión

ConsultaAcciones por bloque de 30 minutos ET, horario regular, con % del bloque más grande del día
hora ETacciones (miles de millones)% del grupo más grande
09:301.9889.9
10:001.3862.9
10:301.3259.9
11:001.1653
11:301.0145.9
12:000.9342.2
12:300.9242
13:000.7534.1
13:300.7634.5
14:000.7734.9
14:300.7534.3
15:000.941.1
15:302.2100
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
Pruébalo tú mismo

El volumen dibujó una forma de U clásica: el bloque de la apertura representó 89.9% del mayor bloque del día y disminuyó durante la mañana, hasta tocar un mínimo de 34.1% en el intervalo de 1:00 a 1:30 p. m., hora del Este (ET). La última media hora (15:30 ET) fue el mayor bloque del día, con 2.2B acciones, por encima de las 1.98B de la apertura, el patrón habitual de una sesión regular.

El flujo de opciones

ConsultaFlujo de opciones: operaciones, contratos, % de calls, participación de 0DTE vs. martes, contrato principal
operaciones de opciones (millones)contratos (millones)contratos jul7 (millones)calls % del volumen% 0DTEjul7 % 0DTEcierre regular de SPYsubyacente top 1precio de ejercicio top 1tipo top 1contratos top 1precio promedio top 1top 1 es 0DTEmoneyness top 1
10.4463.2661.1355.438.731.2745.31SPY745C6779810.8751-0.31
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'
Pruébalo tú mismo

El flujo consolidado de opciones registró 10.44M operaciones ejecutadas y 63.26M contratos, por encima de los 61.13M del martes, calculados a partir del mismo flujo durante la sesión del martes. Las calls representaron 55.4% del volumen total, lo que indica una inclinación moderada hacia las calls. Los contratos 0DTE (vencimiento el mismo día, 260708) concentraron 38.7% del volumen de contratos, frente a 31.2% el martes. El contrato individual con mayor actividad fue SPY 745C, con 677981 contratos a un precio promedio de $0.875. Tuvo vencimiento el mismo día y estaba prácticamente at-the-money frente al cierre regular de SPY en $745.31.

La cinta de cotizaciones

ConsultaConteo de actualizaciones NBBO de acciones: 8 de julio vs. 7 de julio, con actualizaciones de tickers nombrados (millones)
actualizaciones jul8 (millones)Actualizaciones del 7 de jul. (M)Variación diaria (%)Actualizaciones de SPY del 8 de jul. (M)Actualizaciones de QQQ del 8 de jul. (M)Actualizaciones de NVDA del 8 de jul. (M)Actualizaciones de TSLA del 8 de jul. (M)Actualizaciones de MU del 8 de jul. (M)
530.55492.767.74.936.531.80.720.6
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'
Pruébalo tú mismo

La cinta de cotizaciones registró 530.55M actualizaciones de NBBO el 8 de julio, +7.7% frente a la sesión anterior. Las 6.53M actualizaciones de QQQ encabezaron los tickers mencionados, por delante de las 4.93M de SPY. NVDA (1.8M), TSLA (0.72M) y MU (0.6M) completan los conteos de los tickers mencionados.

ConsultaSPY / QQQ / NVDA / TSLA / MU / SNDK / AVGO: spread cotizado mediano en RTH, en puntos básicos
tickerSpread mediano (pb)
SPY0.27
QQQ0.71
NVDA1.52
TSLA2.28
AVGO3.63
MU5.66
SNDK12.21
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
Pruébalo tú mismo

Entre los siete tickers mencionados, el spread cotizado mediano de SPY durante el horario regular fue de 0.27 bps, en el límite inferior de lo normal para el ETF estadounidense con mayor liquidez. QQQ cotizó con un spread de 0.71 bps y NVDA, de 1.52 bps. La parte más amplia de la tabla corresponde a los nombres con cotización menos líquida: MU, con 5.66 bps, y SNDK, con 12.21 bps.

ConsultaSpread cotizado promedio de SPY en RTH en contexto del último mes
Spread promedio de SPY del 8 de jul. (centavos)Ranking de menor spreadSesiones comparadasSesión con menor spread (centavos)Sesión con mayor spread (centavos)primera sesiónCotizaciones inválidas excluidas
2.20211221.8092.8652026-06-0542783
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
)
Pruébalo tú mismo

El spread cotizado promedio de SPY durante el horario regular, de 2.202 centavos, ocupó el 11 lugar de 22 sesiones previas, un día intermedio en términos de estrechez del spread. El rango del último mes fue de 1.809 centavos (el más estrecho) a 2.865 centavos (el más amplio). No hubo un vacío de liquidez ni un evento de liquidez; fue una sesión normal para el spread cotizado de SPY.

ConsultaCinta NBBO de opciones: actualizaciones totales vs. la cinta de acciones, más el segmento del root de SPY
Opciones del 8 de jul. (miles de millones)Ratio opciones/accionesOpciones de SPY del 8 de jul. (M)
9.6218.1422
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
Pruébalo tú mismo

La cinta de opciones registró 9.62 mil millones de actualizaciones de NBBO, 18.1× el conteo de la cinta de cotizaciones accionarias. La sección de opciones de SPY registró por sí sola 422 millones de actualizaciones durante el horario regular.

Tasas: la curva casi no se movió

ConsultaRendimientos de Treasuries: 8 de julio vs. 7 de julio, vencimientos disponibles + 2s10s
Punto de la curvaRendimiento del 8 de jul. (%)Cambio en la sesión (pb)
1 month3.67-2
3 month3.871
1 year4.060
2 year4.212
5 year4.314
10 year4.561
30 year5.061
2s10s spread0.35-1
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
)
Pruébalo tú mismo

El bono a 5 años lideró los movimientos de la sesión con +4 pb; el bono a 2 años terminó +2 pb arriba, y ningún otro plazo se movió más de 2 pb en ninguna dirección. Esto dejó el spread 2s10s en 0.35% (-1 pb en la sesión), dentro de su rango reciente. El movimiento moderado de las tasas coincidió con el movimiento moderado del índice.

El calendario detrás de la jornada

ConsultaEx-dividendos, splits, presentaciones ante la SEC, atención de noticias
Registros exdividendoSplits ejecutadosSplits inversosSplits directosPresentaciones 424B2Presentaciones Form 4Presentaciones 8-KPresentaciones totalesArtículos de noticiasMedios de noticiasTicker de la principal noticiaN.° de noticias principalesVentaja de la noticia principal sobre la siguiente
8110152777516337311923MU170
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
Pruébalo tú mismo

El calendario fue ligero ese día: 81 registros ex-dividendo, 1 split forward ejecutado y 3731 presentaciones ante la SEC en total (con 775 operaciones de insiders en formularios 4, 527 prospectos 424B2 y 163 informes actuales 8-K). La cobertura noticiosa incluyó 192 artículos de 3 medios, y MU estuvo entre los tickers más mencionados, con 17 artículos. No destacó ninguna acción corporativa de una empresa ampliamente reconocida en el flujo del día; la narrativa del mercado fue el propio complejo de chips.

La sesión, verificada

ConsultaVerificación de sesión: primera/última barra de SPY ET, conteo de barras regulares, registros del feriado, próximo cierre
Primera barra de SPY (ET)Última barra de SPY (ET)Barras de un minuto de SPYBarras de la sesión regularSesiones diariasFilas del feriado del 8 de julioFecha del próximo cierreNombre del próximo cierre
04:0019:59919390102026-09-07Labor 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-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'
Pruébalo tú mismo

La sesión cubrió toda la ventana de horario extendido: la primera vela de SPY fue a las 04:00 ET y la última, a las 19:59 ET. La ventana incluyó 390 velas de un minuto del horario regular y 1 sesión de trading. No fue una jornada reducida; la tabla de feriados no tiene una fila para esa fecha. El próximo cierre programado es Labor Day el 2026-09-07.

Notas sobre los datos

Todas las marcas de tiempo se almacenan en UTC. El horario regular del 8 de julio de 2026 se filtra 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 a. m. y las 4:00 p. m., hora de Nueva York. Los precios decimales se convierten a Float64 antes de cualquier división. Los paneles identificados por ticker (tablero de posiciones, complejo de semiconductores y rotación) se ordenan alfabéticamente por ticker, de modo que cada referencia del texto apunta a una fila fija. Las tablas de líderes (volumen y snapshot de cotizaciones) se ordenan por valor, y cada afirmación posicional que contienen se codifica como un límite de validación para esa posición. Todas las comparaciones con el martes en esta página, la proporción de amplitud, los conteos de acciones del complejo de semiconductores en verde y en rojo, los contratos de opciones y la proporción de 0DTE, así como los conteos de actualizaciones de cotizaciones, se calculan nuevamente desde el 7 de julio (y el 6 de julio cuando se necesita un cierre previo) en el mismo bloque de consulta. Nunca se citan de una publicación anterior.

Notas completas sobre los datos

El panel de amplitud cuenta las acciones con un cierre en horario regular en ambas sesiones y con al menos $1M negociado en el día medido. El conteo excluido (5284 de 11439) muestra la parte descartada. Las columnas de horario day_low/day_high del complejo de semiconductores usan el patrón argMin/argMaxIf(..., (value, timestamp)) para resolver los empates de forma determinista. Las etiquetas de los intervalos de la sonrisa de volumen están expresadas en ET (%H:%i) y se calculan usando toTimeZone únicamente en la lista SELECT. El panel de operaciones de opciones detecta el vencimiento en el mismo día mediante la coincidencia de subcadenas del ticker de OCC (substring(ticker, length(ticker) - 14, 6)), en lugar de options_trades.expiration_date (esa columna no funciona, según la nota permanente de prevalidación). Los símbolos de KNOWN_AMBIGUOUS_TICKERS se excluyen del SQL de líderes de volumen y de atención de noticias, de modo que las menciones de “la mayor cantidad de X” se limiten a nombres verificables. El ticker de la noticia principal usa un desempate determinista (argMax(t, (n, t))); top_news_lead_over_next = 0 indica un empate, por lo que el texto dice “entre los más mencionados”. El panel de bonos del Tesoro combina dos filas de snapshots diarios. Si falta el snapshot de cualquiera de las dos fechas, no se generan filas y el límite de row_count mantiene la publicación. Los conteos de cotizaciones de acciones y opciones abarcan todo el tape mediante particiones diarias. Los conteos de tickers específicos se reportan en millones para coincidir con las unidades de sus columnas. Las medianas del spread usan quantileExact (de forma determinista). El panel de spread posterior es un promedio (avgIf), y está etiquetado como tal.

Metodología

  • Fuente de datos de mercado: cinta consolidada, delayed_stocks_minute_aggs para los precios y volúmenes del índice y de cada activo, cache_stocks_quotes para los conteos de NBBO y los spreads cotizados, cache_options_quotes y options_trades para la cinta de opciones.
  • Manejo de la zona horaria: todas las marcas de tiempo almacenadas están en UTC; las etiquetas horarias de ET se calculan con toTimeZone(..., 'America/New_York') únicamente en las listas SELECT; las cláusulas WHERE usan literales UTC sin transformar.
  • Ventana del horario regular: 13:30–20:00 UTC, verificada con las barras observadas de un minuto de SPY (el panel de verificación de la sesión), no mediante cálculos de calendario.
  • Definición del spread: (ask - bid) / midpoint × 10,000 en puntos base sobre cotizaciones válidas de dos puntas para la instantánea; el panel del mes móvil muestra un ancho promedio en centavos y está etiquetado como promedio.
  • Comparaciones con la sesión anterior: se calculan dentro de la consulta a partir del 7 de julio (y del 6 de julio para la comparación diaria del martes), nunca se arrastran desde una publicación anterior.
  • Agregados determinísticos: quantileExact, argMin/argMax con claves de tupla y un desempate determinístico de noticias para regeneraciones estables.
  • Fecha de corte del warehouse: 10 de julio de 2026 (T+2 para el periodo); las cintas de ambas sesiones están completamente incorporadas con esta profundidad.

Enlaces relacionados: resumen del 7 de julio de 2026, costos de operar opciones, conceptos básicos del spread bid-ask, opciones 0DTE y volumen relativo.

#recap#daily#spy#qqq#semiconductors#market structure