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

Resumen de mercado: 7 de julio de 2026

Ruptura en semiconductores que el índice apenas sintió: chips a la baja, NVDA en verde, mayoría de descensos y el spread más estrecho de SPY en un mes.

El martes 7 de julio de 2026, QQQ devolvió la mitad del avance del repunte de reapertura del lunes y algo más: cerró en -1.82%, con lo que más que borró la ganancia del lunes, frente a -0.29% de DIA. En el conjunto del mercado, los descensos dominaron por two-to-one: 4034 valores en descenso frente a 2091 valores en alza. La verdadera historia de la jornada fue una ruptura en semiconductores varias veces mayor que la del índice, mientras uno de los gigantes del sector quedó al margen. Todas las cifras siguientes provienen de una consulta almacenada; expanda cualquier panel para ver el SQL exacto.

El marcador

Cada variación compara la última barra de un minuto de la sesión regular del 7 de julio con la del lunes 6 de julio, en sesiones consecutivas.

ConsultaSPY / QQQ / DIA / IWM: 7 de julio vs. cierre del 6 de julio, horario regular
tickercierre previoapertura del díacierre del díabrecha (%)intradía (%)cambio (%)máximo del díamínimo del díaacciones negociadas (millones)
DIA530.03532.5528.480.47-0.76-0.29532.54527.114.1
IWM298.88299.17296.20.1-0.99-0.9299.97295.1816.4
QQQ722.63714.17709.5-1.17-0.65-1.82716.35704.937.4
SPY751.3750.22747.66-0.14-0.34-0.48750.96745.2138.4
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-06 13:30:00' AND window_start < '2026-07-06 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-07 13:30:00' AND window_start < '2026-07-07 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

El -1.82% de QQQ encabezó la caída de los cuatro ETFs de índices; SPY cerró -0.48%, IWM -0.9% y el -0.29% de DIA fue el movimiento menos pronunciado. La división entre gap y movimiento intradía muestra que los dos extremos del mercado discreparon en la apertura: el gap nocturno de QQQ fue de -1.17% y su movimiento de apertura a cierre fue de -0.65%; el gap explicó la mayor parte del daño. DIA abrió con un gap al alza de 0.47% y aun así terminó en rojo; su variación de apertura a cierre fue de -0.76%. El liderazgo ha cambiado en cada sesión desde el jueves: DIA lideró el jueves, QQQ lideró el lunes y DIA volvió a liderar el martes.

¿Fue un día inusual?

ConsultaQQQ y SPY: 7 de julio comparado con el último mes de sesiones (rango 1 = mayor movimiento absoluto)
QQQ cierre a cierre (%)rango de movimiento absoluto de QQQsesiones comparadas de QQQSPY apertura a cierre (%)rango de movimiento absoluto de SPYsesiones comparadas de SPYprimera sesión
-1.82921-0.3415212026-06-05
El SQL exacto detrás de cada cifra
SELECT
    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-07')), 2) AS qqq_close_over_close_pct,
    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-07'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-07'))) + 1 AS qqq_abs_move_rank,
    countIf(ticker = 'QQQ') AS qqq_sessions_compared,
    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-07')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-07'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-07'))) + 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-04 00:00:00')
          AND window_start < toDateTime('2026-07-08 00:00:00')
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY ticker, d
    )
)
WHERE isFinite(cc_pct)
Pruébalo tú mismo

A nivel de los índices, no especialmente. El movimiento de cierre a cierre de QQQ, de -1.82%, ocupa el puesto 9 de 21 sesiones anteriores por magnitud absoluta, mientras que el movimiento de apertura a cierre de SPY, de -0.34%, ocupa el puesto 15 de 21. El mes anterior, que incluye las oscilaciones del complejo de memoria de finales de junio, establece un umbral elevado. La dispersión subyacente es lo que hizo destacar al 7 de julio.

Amplitud de mercado: dos valores bajan por cada uno que sube

ConsultaAlzas vs. bajas entre tickers con al menos $1M negociado el 7 de julio
alzasbajassin cambiostickers líquidostickers negociados en ambas sesionesexcluidos por filtro de liquidezalzas (%)
2091403459618411460527633.8
El SQL exacto detrás de cada cifra
WITH per_ticker AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close,
        sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 00:00:00') AS day_dollar_volume
    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')
       OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 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

2091 valores en alza, 4034 valores en baja, 59 sin cambios y 33.8% de los valores líquidos subieron; el avance del lunes se revirtió. El filtro excluye 5276 de 11460 tickers con dos sesiones y menos de un millón de dólares negociados, contabilizados aquí.

El complejo de chips se desplomó, salvo sus mayores integrantes

Las ventas se concentraron en semiconductores: los fabricantes de chips, las empresas de equipos que les suministran tecnología, el complejo de almacenamiento asociado y los ETFs apalancados que se construyen sobre ellos. A continuación se reportan la evolución conjunta y la magnitud; los datos no indican las causas.

ConsultaEl complejo de chips el 7 de julio: cambio vs. cierre del lunes, horario del rango y volumen en dólares
tickercierre previocierre del díacambio (%)máximo del día (ET)mínimo del día (ET)minuto del máximo (ET)minuto del mínimo (ET)rango (%)volumen diario en dólares (miles de millones)
AMD551.95516.57-6.4112:2910:467496464.3412.48
AVGO373.9370.79-0.8313:4210:448226443.026.09
INTC122.22110.5-9.5909:3015:185709187.5413.82
KLAC233.39216.52-7.2309:3010:435706436.132.91
LRCX349.92326.12-6.809:3010:415706415.643.97
MRVL249.29230.81-7.4109:3010:425706426.56.42
MU984.31938.95-4.6115:5910:419596415.6541.6
NVDA195.62196.930.6713:0710:357876353.819.95
SNDK1743.081619.26-7.109:3010:4257064210.3619.73
SOXL194.77165.27-15.1509:3010:4457064414.5310.8
SOXS4.164.8215.8710:4209:3064257010.32.78
STX869.5827.4-4.8409:4510:445856446.583.1
TER379.66343.1-9.6309:3010:415706419.981.59
WDC577.46532.34-7.8109:3011:005706607.763.73
El SQL exacto detrás de cada cifra
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close,
        maxIf(toFloat64(high), window_start >= '2026-07-07 00:00:00') AS day_high,
        minIf(toFloat64(low), window_start >= '2026-07-07 00:00:00') AS day_low,
        argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-07 00:00:00') AS low_bar,
        argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-07 00:00:00') AS high_bar,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 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-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
        OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 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,
    formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
    formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
    toHour(toTimeZone(high_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(high_bar, 'America/New_York')) AS high_minute_et,
    toHour(toTimeZone(low_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(low_bar, 'America/New_York')) AS low_minute_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

Teradyne (-9.63%) e Intel (-9.59%) perdieron casi una décima parte de su valor. Marvell (-7.41%), KLA (-7.23%), Lam Research (-6.8%) y AMD (-6.41%) quedaron cerca. Las acciones de memoria y almacenamiento que rebotaron parcialmente el lunes volvieron a caer: SanDisk -7.1% dentro de un rango máximo-mínimo de 10.36%, Western Digital -7.81%, Seagate -4.84% y MU -4.61%. MU negoció $41.6 mil millones en acciones, más que las otras tres empresas de almacenamiento juntas (el análisis detallado de MU explica los antecedentes).

Los dos gigantes del sector no participaron en la caída: NVDA cerró al alza en 0.67% y Broadcom terminó prácticamente sin cambios en -0.83%. Fue una jornada negativa para todo el sector, salvo sus mayores integrantes (el análisis detallado de NVDA en junio).

El movimiento fue sincronizado, con un solo vacío de liquidez matutino: TER, LRCX y MU marcaron sus mínimos de la sesión a las 10:41, 10:41 y 10:41 ET, respectivamente. SanDisk, Marvell, KLA, AVGO y SOXL lo hicieron dentro de los mismos minutos; el panel muestra cada marca temporal. SOXS, el ETF inverso de semiconductores 3x, marcó su máximo de la sesión a las 10:42: fue el mismo movimiento, pero en sentido contrario. Intel siguió cayendo mucho después de que el resto se estabilizara y marcó su mínimo a las 15:18. Los ETFs apalancados reflejan la magnitud: SOXL -15.15% frente a SOXS +15.87%.

El otro lado del mercado

Incluso con una proporción de dos a uno de acciones a la baja, una tercera parte terminó al alza. Esto fue lo que subió mientras caían las acciones de semiconductores:

ConsultaQué subió mientras los chips bajaron: y la operación individual más destacada del día
tickercierre previoapertura del díacierre del díabrecha (%)intradía (%)cambio (%)volumen diario en dólares (miles de millones)
CRNX42.0283.5883.5398.91-0.0698.794.19
CVX168.13170.14173.971.22.253.471.21
JNJ259.33264.89267.292.140.913.071.92
LLY1202.561232.881235.642.520.222.752.87
META600.43607.59615.571.191.312.529.73
TSLA419.77416.96402.88-0.67-3.38-4.0213.36
UNH418.1423.95428.181.412.411.61
XOM136.49138.56141.651.522.233.781.63
El SQL exacto detrás de cada cifra
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close_raw,
        toFloat64(argMinIf(open, window_start, window_start >= '2026-07-07 00:00:00')) AS day_open_raw,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close_raw,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 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-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
        OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 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

Energía y salud sostuvieron la columna de avances: Exxon +3.78%, Chevron +3.47%, Johnson & Johnson +3.07%, Eli Lilly +2.75% y UnitedHealth +2.41%. Las dos megacaps de este panel tomaron direcciones opuestas: META subió +2.52%, mientras TSLA devolvió la mayor parte de la subida unidireccional del lunes en -4.02%. Y la operación individual más destacada del mercado fue la de Crinetics Pharmaceuticals (CRNX), que cerró +98.79% con $4.19 mil millones negociados, casi el doble. Todo el movimiento se produjo como un gap al alza durante la noche (98.91% en la apertura; la sesión regular lo movió apenas -0.06%), el tipo de reajuste de valoración entre sesiones que ocurre donde se negocia antes de la apertura. Los datos no indican por qué.

Dónde se concentró el flujo de dinero

ConsultaLíderes por volumen de dos formas: top 6 por dólares negociados, top 4 por acciones negociadas (se excluye una lista con símbolo reutilizado pendiente de verificación de entidad)
clasificacióntickervolumen en dólares (bn)acciones (m)% del líder del tablero
by dollars tradedMU41.645.3100
by dollars tradedSPY28.6838.468.9
by dollars tradedQQQ26.5437.463.8
by dollars tradedNVDA19.95102.448
by dollars tradedSNDK19.7312.547.4
by dollars tradedINTC13.82124.833.2
by shares tradedSOXS2.78566.3100
by shares tradedBITO3.47402.271
by shares tradedTZA1.1278.849.2
by shares tradedCPOP0.02161.328.5
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-07 13:30:00' AND window_start < '2026-07-07 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-07 13:30:00' AND window_start < '2026-07-07 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

MU encabezó el volumen negociado en dólares, con $41.6 mil millones. Una sesión después de ceder el primer lugar, lo recuperó. SPY ($28.68 mil millones) y QQQ ($26.54 mil millones) quedaron detrás, mientras que otros tres nombres de semiconductores, NVDA ($19.95 mil millones), SNDK ($19.73 mil millones) y INTC ($13.82 mil millones), completaron los seis primeros puestos. La concentración del volumen negociado en acciones individuales es lo que señala el volumen relativo.

En el tablero por número de acciones, SOXS negoció 566.3 millones de acciones. El ETF inverso 3x de semiconductores encabezó el recuento por tercera sesión consecutiva (lunes y jueves registraron los prints anteriores), esta vez el mismo día en que su sector efectivamente rompió a la baja. CPOP ofrece la lección contraria: se negociaron 161.3 millones de acciones por apenas $0.02 mil millones, porque el recuento de acciones da más peso a los valores baratos. Base: horario regular del 7 de julio; se excluye una cotización con símbolo reutilizado mientras se verifica la entidad, según sus comprobantes.

La forma de la sesión

ConsultaAcciones negociadas por bloque de 30 minutos, horario regular; operaciones de la subasta de cierre en el último bloque (miles de millones)
hora del Esteacciones (bn)% del grupo más grande
09:30261.6
10:001.5848.8
10:301.3441.3
11:001.0933.6
11:300.9930.4
12:000.9128.1
12:300.7623.3
13:000.7222.1
13:300.6419.6
14:000.7121.8
14:300.9128.1
15:001.1435.1
15:303.25100
El SQL exacto detrás de cada cifra
SELECT
    et_time,
    round(sum(shares) / 1e9, 2) AS shares_bn,
    round(100 * sum(shares) / max(sum(shares)) OVER (), 1) AS pct_of_biggest_bucket
FROM
(
    SELECT
        formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
        toFloat64(volume) AS shares
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
    UNION ALL
    SELECT
        '15:30' AS et_time,
        toFloat64(size) AS shares
    FROM global_markets.stocks_trades
    WHERE sip_timestamp >= '2026-07-07 20:00:00' AND sip_timestamp < '2026-07-07 20:15:00'
      AND has(conditions, 8)
)
GROUP BY et_time
ORDER BY et_time
Pruébalo tú mismo

2 mil millones de acciones en la primera media hora, un mínimo de 0.64 mil millones a las 13:30 y 3.25 mil millones hacia el 15:30 cierre: la sonrisa habitual, con el mayor volumen al cierre.

El flujo de opciones

ConsultaUna fila para toda la jornada de opciones: volumen, proporción de calls, 0DTE y los dos contratos que rodearon el cierre de SPY
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 INTC (m)subyacente del contrato principalstrike del contrato principaltipo del contrato principalel contrato principal es callvolumen del contrato principalprecio promedio del contrato principalstrike principal menos cierre de SPYsubyacente del segundo contratostrike del segundo contratotipo del segundo contratoel segundo contrato es putvolumen del segundo contratoprecio promedio del segundo contratocierre de SPY menos segundo strikeambos contratos principales vencen el mismo díacierre de SPY
10.661.1355.631.219.0812.488.360.69SPY749C18734380.6471.34SPY747P17858340.880.662747.66
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) = '260707', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 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-07 13:30:00' AND window_start < '2026-07-07 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) = '260707') / sum(size), 1) AS same_day_expiry_pct,
    round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260707')) / 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 = 'INTC')) / 1e6, 2) AS intc_contracts_m,
    top2.1[1] AS top_contract_underlying,
    top2.2[1] AS top_contract_strike,
    top2.3[1] AS top_contract_type,
    if(top2.3[1] = 'C', 1, 0) AS top_contract_is_call,
    top2.4[1] AS top_contract_volume,
    top2.5[1] AS top_contract_avg_price,
    round(top2.2[1] - spy_regular_close, 2) AS top_strike_minus_spy_close,
    top2.1[2] AS second_contract_underlying,
    top2.2[2] AS second_contract_strike,
    top2.3[2] AS second_contract_type,
    if(top2.3[2] = 'P', 1, 0) AS second_contract_is_put,
    top2.4[2] AS second_contract_volume,
    top2.5[2] AS second_contract_avg_price,
    round(spy_regular_close - top2.2[2], 2) AS spy_close_minus_second_strike,
    top2.6[1] + top2.6[2] AS both_top_contracts_same_day,
    spy_regular_close AS spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
Pruébalo tú mismo

Se negociaron opciones por 61.13 millones de contratos en 10.6 millones de operaciones ejecutadas, un flujo del tamaño del de el lunes, y las calls todavía representaron 55.6% del volumen pese a que fue una jornada bajista. Los vencimientos del mismo día representaron 31.2% del flujo (19.08 millones de contratos), la proporción de 0DTE de un martes normal. Los dos contratos más negociados del día quedaron a ambos lados del cierre; ambos eran strikes SPY con vencimiento el mismo día: la call de $749 (873438 contratos a un precio promedio de $0.647) terminó $1.34 fuera de dinero, y la put de $747 (785834 contratos a $0.88) terminó $0.66 fuera de dinero en el lado opuesto. El cierre de SPY en 747.66 quedó entre las dos mayores apuestas del día, y ambas vencieron sin valor.

La cinta de cotizaciones

Debajo de cada precio de esta página está el flujo de cotizaciones: el National Best Bid and Offer, recotizado continuamente para cada valor listado. Es el conjunto de datos más difícil de obtener en este repositorio. Aquí se mide en cada sesión, sea normal o no.

ConsultaFlujo NBBO completo de acciones: conteo de actualizaciones del 7 de julio vs. el 6 de julio
actualizaciones del 7 de julio (M)actualizaciones del 6 de julio (M)variación diaria (%)minuto de la última cotización del 7 de julio (ET)actualizaciones en la hora de cierre del 7 de julio (M)
492.76391.9625.7119977.13
El SQL exacto detrás de cada cifra
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / 1e6, 2) AS jul7_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / 1e6, 2) AS jul6_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / countIf(toDate(sip_timestamp) = toDate('2026-07-06')) - 1) * 100, 1) AS day_over_day_pct,
    toHour(toTimeZone(maxIf(sip_timestamp, toDate(sip_timestamp) = toDate('2026-07-07')), 'America/New_York')) * 60
        + toMinute(toTimeZone(maxIf(sip_timestamp, toDate(sip_timestamp) = toDate('2026-07-07')), 'America/New_York')) AS jul7_last_quote_et_minute,
    round(countIf(sip_timestamp >= '2026-07-07 19:00:00' AND sip_timestamp < '2026-07-07 20:00:00') / 1e6, 2) AS jul7_close_hour_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
Pruébalo tú mismo

La cinta de acciones registró 492.76 millones de actualizaciones del NBBO el 7 de julio, 25.7% más que los 391.96 millones del lunes. Hubo más recotizaciones, no cotizaciones más amplias:

ConsultaEl spread a través del vacío: spread cotizado mediano y tasa de cotizaciones, 10:36–10:48 ET vs. control de media sesión (12 minutos cada uno)
tickerspread de Pocket (pb)spread de mediodía (pb)variación del spread (pb)actualizaciones de Pocket (K)actualizaciones de mediodía (K)ratio de frecuencia de cotizacionesactualizaciones de la sesión (M)cotizaciones no válidas descartadas
AMD9.116.512.613.22.94.60.27101
INTC2.751.80.9590.638.42.42.183498
MU5.024.810.2151.815.23.40.96430
NVDA1.041.010.03122442.82.41266
QQQ0.420.280.14281.3143.325.54391
SNDK8.658.89-0.2419.14.64.10.391
SOXL9.8912.48-2.5941.116.92.41.11339
SOXS19.5921.07-1.4950.113.43.80.950
SPY0.270.270237.970.63.44.23803
WDC10.7712.01-1.256.32.32.70.1322
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-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00'), 2) AS pocket_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-07 17:30:00' AND sip_timestamp < '2026-07-07 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-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48: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-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 2) AS spread_delta_bps,
    round(countIf(sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / 1e3, 1) AS pocket_updates_k,
    round(countIf(sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00') / 1e3, 1) AS midday_updates_k,
    round(countIf(sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / countIf(sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 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 ('AMD', 'INTC', 'MU', 'NVDA', 'QQQ', 'SNDK', 'SOXL', 'SOXS', 'SPY', 'WDC')
  AND sip_timestamp >= '2026-07-07 13:30:00' AND sip_timestamp < '2026-07-07 20:00:00'
GROUP BY ticker
ORDER BY ticker
Pruébalo tú mismo

En los mínimos de la mañana, los valores revisados se recotizaron a múltiplos de su ritmo del mediodía: MU, 3.4x; SanDisk, 4.1x; AMD, 4.6x. El spread entre bid y ask apenas se movió: el ancho mediano de MU fue de 5.02 bps en el tramo frente a 4.81 bps al mediodía; el de NVDA, 1.04 frente a 1.01; y el de SPY no cambió en absoluto (variación de 0 bps sobre un touch de 0.27 bps). Los dos valores que pagaron una penalización real por amplitud fueron AMD (+2.6 bps) e Intel (+0.95). Intel fue el único que siguió cayendo después del tramo, mientras que el par apalancado en realidad se estrechó en el mínimo (SOXL, -2.59 bps; SOXS, -1.49). Un vacío de liquidez se manifiesta con cotizaciones amplias y silencio. Esto fue lo contrario: una tormenta de cotizaciones con el touch prácticamente fijo. Aun así, los costos de cruzar el spread siguieron dependiendo del valor: SOXS cotizó con un ancho de 19.59 bps en el mínimo, frente a 1.04 bps de NVDA.

ConsultaSpread cotizado promedio ponderado por actualizaciones de SPY: 7 de julio comparado con el último mes (rango 1 = más estrecho)
spread promedio del 7 de julio (centavos)rango de menor spreadsesiones comparadassesión con menor spread (centavos)sesión con mayor spread (centavos)primera sesióncotizaciones no válidas descartadas
1.8091211.8092.8652026-06-0541883
El SQL exacto detrás de cada cifra
SELECT
    round(anyIf(avg_spread_cents, d = toDate('2026-07-07')), 3) AS jul7_avg_spread_cents,
    arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-07')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-07'))) + 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-08 00:00:00')
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
    GROUP BY d
)
Pruébalo tú mismo

Y está la comprobación habitual que esta sección ejecuta en cada sesión: según el spread cotizado promedio ponderado por actualizaciones, el 7 de julio fue la sesión más estrecha de SPY en el último mes, con 1.809 centavos, en el puesto 1 de 21, frente a un mes que alcanzó 2.865 centavos en su punto más amplio. Una cinta roja de dos a uno, con precio en el touch del índice más estrecho del mes, es un hecho que solo puede confirmar el flujo de cotizaciones.

ConsultaFlujo NBBO de opciones: 7 de julio vs. 6 de julio y vs. las cotizaciones de acciones de la misma sesión
filas de cotizaciones de opciones del 7 de julioactualizaciones de cotizaciones de opciones del 7 de julio (B)actualizaciones de cotizaciones de opciones del 6 de julio (B)variación diaria (%)actualizaciones de cotizaciones de acciones del 7 de julio (M)ratio de opciones a acciones del 7 de julio
86946141478.696.4934492.7617.6
El SQL exacto detrás de cada cifra
WITH
    (
        SELECT count()
        FROM global_markets.cache_options_quotes
        WHERE toYYYYMMDD(sip_timestamp) = 20260707
    ) AS jul7_option_rows,
    (
        SELECT count()
        FROM global_markets.cache_options_quotes
        WHERE toYYYYMMDD(sip_timestamp) = 20260706
    ) AS jul6_option_rows,
    (
        SELECT count()
        FROM global_markets.cache_stocks_quotes
        WHERE toYYYYMMDD(sip_timestamp) = 20260707
    ) AS jul7_stock_quote_rows
SELECT
    jul7_option_rows AS jul7_option_quote_rows,
    round(jul7_option_rows / 1e9, 2) AS jul7_option_quote_updates_bn,
    round(jul6_option_rows / 1e9, 2) AS jul6_option_quote_updates_bn,
    round((jul7_option_rows / jul6_option_rows - 1) * 100, 1) AS day_over_day_pct,
    round(jul7_stock_quote_rows / 1e6, 2) AS jul7_stock_quote_updates_m,
    round(jul7_option_rows / jul7_stock_quote_rows, 1) AS jul7_option_to_stock_ratio
Pruébalo tú mismo

El flujo de cotizaciones de opciones es aún mayor y constituye el conjunto de datos más grande de este repositorio. El 7 de julio registró 8.69 mil millones de actualizaciones del NBBO de opciones, 17.6 veces el tamaño de toda la cinta de cotizaciones de acciones de esa misma sesión (492.76 millones de actualizaciones). La cinta de opciones del lunes registró 6.49 mil millones, de modo que el flujo de opciones aumentó 34% de una sesión a otra, junto con el aumento de 25.7% del flujo de acciones.

ConsultaCotizaciones de opciones de SPY el 7 de julio: todo el root y el touch at-the-money del mismo día a través del vacío frente a un control de media sesión
actualizaciones de opciones de SPY (M)% del flujo total de cotizaciones de accionescontratos de SPY cotizadosactualizaciones del mismo día (M)precio de SPY en Pocketprecio de SPY al mediodíaspread ATM en Pocket ($)spread ATM de mediodía ($)variación del spread ATM ($)actualizaciones ATM acumuladas (miles)actualizaciones ATM del mediodía (miles)proporción de cotizaciones ATMcotizaciones intradía no válidas descartadas
327.5566.5911613.61746749.080.010.010191.164342872
El SQL exacto detrás de cada cifra
WITH
    (
        SELECT count()
        FROM global_markets.cache_stocks_quotes
        WHERE toYYYYMMDD(sip_timestamp) = 20260707
    ) AS jul7_stock_quote_rows,
    (
        SELECT round(toFloat64(avg(close)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= '2026-07-07 14:36:00' AND window_start < '2026-07-07 14:48:00'
    ) AS spy_pocket_price,
    (
        SELECT round(toFloat64(avg(close)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= '2026-07-07 17:30:00' AND window_start < '2026-07-07 17:42:00'
    ) AS spy_midday_price
SELECT
    round(count() / 1e6, 2) AS spy_option_updates_m,
    round(100.0 * count() / jul7_stock_quote_rows, 1) AS pct_of_whole_equity_quote_tape,
    uniqExact(ticker) AS spy_contracts_quoted,
    round(countIf(substring(ticker, -15, 6) = '260707') / 1e6, 2) AS same_day_updates_m,
    spy_pocket_price AS spy_price_in_pocket,
    spy_midday_price AS spy_price_midday,
    round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price),
        bid_price > 0 AND ask_price >= bid_price
        AND substring(ticker, -15, 6) = '260707'
        AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_pocket_price) <= 2
        AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00'), 3) AS pocket_atm_spread_dollars,
    round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price),
        bid_price > 0 AND ask_price >= bid_price
        AND substring(ticker, -15, 6) = '260707'
        AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_midday_price) <= 2
        AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 3) AS midday_atm_spread_dollars,
    round(pocket_atm_spread_dollars - midday_atm_spread_dollars, 3) AS atm_spread_delta_dollars,
    round(countIf(substring(ticker, -15, 6) = '260707'
        AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_pocket_price) <= 2
        AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / 1e3, 1) AS pocket_atm_updates_k,
    round(countIf(substring(ticker, -15, 6) = '260707'
        AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_midday_price) <= 2
        AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00') / 1e3, 1) AS midday_atm_updates_k,
    round(pocket_atm_updates_k / midday_atm_updates_k, 1) AS atm_quote_rate_ratio,
    countIf(NOT (bid_price > 0 AND ask_price >= bid_price)
        AND substring(ticker, -15, 6) = '260707') AS dropped_invalid_same_day_quotes
FROM global_markets.cache_options_quotes
WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27'
  AND sip_timestamp >= '2026-07-07 13:30:00' AND sip_timestamp < '2026-07-07 20:00:00'
HAVING pocket_atm_updates_k > 0 AND midday_atm_updates_k > 0
Pruébalo tú mismo

Por sí solos, los contratos de SPY con vencimiento en 2026 generaron 327.55 millones de esas actualizaciones durante el horario regular, distribuidas entre 9116 contratos listados. Eso representa 66.5% de todo lo que cotizó el mercado accionario en esa misma sesión, desde un solo activo subyacente. Los vencimientos del mismo día que componen la cinta de 0DTE representan 13.61 millones de ellas.

Durante los doce minutos del bache de liquidez matutino, los contratos del mismo día cercanos al precio de ejercicio cotizaron con un ancho mediano de $0.01, exactamente el mismo ancho que registraron en el control del mediodía ($0.01, una diferencia de 0). El ritmo de cotización en ese mismo par fue de 3x: 191.1 mil actualizaciones en los mínimos, frente a 64 mil al mediodía. El touch de las opciones hizo lo mismo que el touch de las acciones: mantuvo su ancho mientras la maquinaria de cotización operaba a máxima intensidad. «Cercano al precio de ejercicio» significa un strike situado dentro de $2 del precio promedio de SPY en esa misma ventana. El panel muestra ambos precios (746 en el tramo y 749.08 al mediodía).

Tasas: la curva se vendió junto con los activos de crecimiento

ConsultaCurva del Tesoro: 7 de julio vs. el dato del 6 de julio (solo vencimientos con datos)
punto de la curvarendimiento del 7 de julio (%)cambio de la sesión (pb)
1 month3.690
3 month3.86-1
1 year4.0611
2 year4.196
5 year4.276
10 year4.557
30 year5.056
2s10s spread0.361
El SQL exacto detrás de cada cifra
SELECT
    t.1 AS curve_point,
    round(t.2, 2) AS jul7_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-07') AS d,
         (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-06') AS p
)
Pruébalo tú mismo

Los Treasuries se vendieron junto con los activos de crecimiento. El rendimiento del bono a un año subió 11 puntos básicos hasta 4.06%; el del bono a 10 años, 7 hasta 4.55%; y el del bono a 30 años, 6 hasta 5.05%, por encima del nivel del cinco por ciento. El spread 2s10s se mantuvo en 0.36 puntos porcentuales (1 punto básico de variación): un movimiento mayormente paralelo, no un cambio en la forma de la curva.

El calendario detrás de la jornada

ConsultaCalendario corporativo y flujo de información del 7 de julio, en una fila
registros exdividendosplits ejecutadossplits inversossplits directosOPI listadaspresentaciones ante la SECpresentaciones Form 4 de insiderspresentaciones 8-Kartículos de noticiasmedios de noticiasticker más cubiertoel más cubierto es NVDAartículos sobre el más cubiertoventaja del más cubierto sobre el siguienteartículos sobre CRNX
80752124384631732153NVDA11740
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-07'
    ) AS news,
    (
        SELECT (argMax(t, n), 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-07'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-07') AS ex_dividend_records,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS splits_executed,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-07') AS ipos_listed,
    (SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS sec_filings,
    (SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS insider_form4_filings,
    (SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS filings_8k,
    news.1 AS news_articles,
    news.2 AS news_publishers,
    top_news.1 AS most_covered_ticker,
    if(top_news.1 = 'NVDA', 1, 0) AS most_covered_is_nvda,
    top_news.2 AS most_covered_articles,
    top_news.3 AS most_covered_lead_over_next,
    (SELECT countIf(has(tickers, 'CRNX')) FROM global_markets.stocks_news
     WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-07') AS crnx_articles
Pruébalo tú mismo

80 registros de dividendos pasaron a cotizar ex-dividendo, se ejecutaron 7 splits, 5 de ellos fueron reverse splits, las consolidaciones por debajo de un dólar que simulan “ganancias” de tres dígitos en una cinta no ajustada, frente a 2 splits forward, y se produjo 1 nueva admisión a cotización. El índice de la SEC registró 2438 presentaciones: 463 Form 4s y 173 formularios 8-K. Nuestro feed de noticias publicó 215 artículos de 3 medios; el nombre más cubierto fue NVDA, con 17 artículos, 4 por encima del siguiente nombre: la misma NVDA que cerró al alza durante una jornada bajista para su sector. El feed publicó 0 artículos sobre CRNX, la mayor ganadora de la cinta; fue la atención de un feed, no la de todos los medios.

La sesión, verificado

ConsultaVerificación de sesión: intervalo observado de barras de un minuto de SPY, tabla de feriados y próximo cierre del calendario
primera barra de SPY (ET)última barra de SPY (ET)barras de SPY por minutobarras de la sesión regularsesiones del díafilas del feriado del 7 de juliofecha del próximo cierrenombre del próximo cierre
04:0019:59902390102026-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-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-07') AS jul7_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-07' AND status = 'closed') AS next_closure_date,
    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-07' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-07 00:00:00' AND window_start < '2026-07-08 00:00:00'
Pruébalo tú mismo

El 7 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. La tabla de feriados registra 0 filas para esa fecha. El próximo cierre programado es Labor Day, 2026-09-07.

Notas sobre los datos

  • El volumen en dólares es un indicador por minuto: cierre × volumen, sumado en cada barra de un minuto durante el horario regular.
  • La última media hora del panel de volumen incluye las operaciones de la subasta de cierre. Las barras de un minuto excluyen todas las operaciones de subasta. Por eso, el panel de media hora suma en su último intervalo cada operación con la condición de venta de cierre, registrada entre las 4:00 y las 4:15 p. m., hora del Este, en la cinta consolidada.
  • La separación entre gap y movimiento gradual se mide desde la primera barra de cada acción en la sesión regular —la apertura— frente al último cierre regular de la sesión anterior. El resto corresponde al movimiento entre la apertura y el cierre dentro del 7 de julio.
  • Los mínimos matutinos sincronizados se contrastaron con las barras adyacentes al momento de redactar el artículo. Cada mínimo está respaldado por sus minutos vecinos y no por una operación aislada. Ninguno justificó un comprobante de anomalía. Cuando un extremo se registró durante más de un minuto, el panel muestra la primera barra en la que apareció, como criterio determinista para resolver empates.
  • Una cotización con ticker reutilizado queda excluida de las clasificaciones de líderes por volumen y de la mención en las noticias mientras se verifica la entidad; su propia publicación incluye los comprobantes.
  • Las estadísticas de spread cotizado excluyen las cotizaciones inválidas —registros NBBO unilaterales o cruzados—, y cada panel de spreads contabiliza en una columna propia lo que descarta. El «spread promedio ponderado por actualizaciones» promedia el ancho cotizado en cada actualización NBBO válida; los momentos de mayor actividad tienen más peso. Es una estadística de cotización, no un costo por operación.
  • Las cotizaciones de opciones del 7 de julio llegaron después de la primera publicación de este artículo. cache_options_quotes registra el mayor retraso de ingestión del almacén de datos, por lo que la primera edición incluyó un comprobante acotado de cero filas en el lugar que ahora ocupan los paneles de cotizaciones de opciones. Las filas llegaron, el límite de cero filas falló al regenerar los datos y esta revisión muestra las 8.69 actualizaciones de la sesión, por un total de miles de millones. La cinta de cotizaciones de acciones estaba completa desde el inicio: su última actualización del 7 de julio se registró en el minuto ET 1199, con 77.13 millones de actualizaciones durante la última hora regular. Las columnas de comprobantes aparecen en el panel de la cinta de cotizaciones.
  • Los anchos cotizados de las opciones se miden cerca del precio at-the-money. La mediana por actualización de todos los contratos cotizados del mismo día es una estadística de composición: los contratos deep in-the-money cotizan con spreads de varios dólares, los contratos far out-of-the-money con spreads de centavos y los contratos que vuelven a cotizar cambian durante la sesión. La comparación entre el inicio y el periodo de mediodía se limita a los strikes situados dentro de $2 del precio promedio de SPY en cada ventana; ambos precios aparecen como columnas en el panel. Las cotizaciones de opciones inválidas —unilaterales o cruzadas— se contabilizan en ese panel y no se eliminan de forma silenciosa.
  • La operación de tesorería del 7 de julio se incorporó con un día de retraso de sesión. La primera edición incluyó un comprobante con el retraso declarado. Su alerta se activó el 8 de julio, cuando llegó la operación, y esta revisión muestra la curva efectiva.

Metodología

  • El periodo es una sola sesión bursátil (1 sesión, verificada a partir de las barras observadas y del calendario de feriados; nunca se supone). Las marcas de tiempo se almacenan en UTC y se convierten a la hora de Nueva York dentro de las consultas. “Cierre” significa la última barra de un minuto de la sesión regular; los cambios diarios comparan el 7 de julio con el 6 de julio, que son sesiones bursátiles consecutivas.
  • Las columnas decimales se convierten a floats de 64 bits antes de realizar operaciones de ratios; los vencimientos de las opciones se vuelven a analizar a partir del ticker de OCC, porque la columna de vencimiento de la tabla está dañada. Todos los paneles se leen una sola vez, al momento de redactar, mediante la ruta de acceso de solo lectura controlada. Estado del warehouse al 8 de julio de 2026.
  • La sección de la cinta de cotizaciones se añadió en la revisión del 8 de julio —la misma revisión que sustituyó el comprobante del rezago de Treasury por el print ejecutado—, y sus paneles de cotizaciones de opciones se reescribieron una vez que se incorporaron las propias filas de NBBO de opciones del 7 de julio. La generación es un batch job por diseño: el panel de cotizaciones de opciones de SPY recorre unos cientos de millones de registros NBBO, mientras que los conteos del tamaño de los prints de la cinta leen los totales de filas de las particiones del día, lo que permite que una tabla con miles de millones de filas por sesión responda a un conteo en menos de un segundo.

Cada panel es el resultado de una consulta almacenada; el gráfico, la tabla y el SQL forman un solo objeto. Pega cualquiera de ellos en la terminal de Strasmore y hazlo tuyo. Sesión anterior: 7 de julio.

#recap#daily#spy#qqq#market structure