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

Resumen del mercado: 7 de julio de 2026

Semiconductores cayeron con fuerza, pero NVDA subió: QQQ retrocedió más que DIA, hubo dos bajas por cada alza y SPY mostró su spread más estrecho del mes.

El martes 7 de julio de 2026 revirtió la mitad del crecimiento del repunte de reapertura del lunes, y algo más: QQQ cerró en -1.82%, con lo que más que borró su avance del lunes, frente a -0.29% de DIA. En el mercado subyacente, la relación de bajas fue de dos a uno: 4034 acciones en descenso frente a 2091 en alza. La verdadera historia de la sesión fue una ruptura del sector de semiconductores varias veces mayor que la del índice, mientras los gigantes del sector no participaron. Todas las cifras que aparecen a continuación se obtuvieron de una consulta almacenada; expanda cualquier panel para ver el SQL exacto.

El marcador

Cada cambio compara la última barra de un minuto de la sesión regular del 7 de julio con la del lunes 6 de julio, en sesiones de trading 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 (m)
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 lideró la baja entre los cuatro ETF de índices; SPY cerró -0.48%, IWM -0.9% y el -0.29% de DIA fue el movimiento menos pronunciado. La diferencia entre gap y movimiento gradual muestra que los dos extremos del mercado discreparon en la apertura: el gap overnight 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 movimiento de apertura a cierre fue de -0.76%. El liderazgo cambió en cada sesión desde el jueves: DIA lideró el jueves, QQQ lideró el lunes y DIA volvió a liderar el martes.

¿Fue inusual la jornada?

ConsultaQQQ y SPY: 7 de julio comparado con el último mes de sesiones (rango 1 = mayor movimiento absoluto)
QQQ cierre contra cierre (%)QQQ rango de movimiento absolutosesiones comparadas de QQQSPY apertura a cierre (%)SPY rango de movimiento absolutosesiones 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% se ubica en el puesto 9 de 21 sesiones previas por magnitud absoluta, mientras que el movimiento de apertura a cierre de SPY de -0.34% se ubica en el puesto 15 de 21. El último mes, que incluye las oscilaciones del complejo de memoria de finales de junio, establece un umbral alto. La dispersión subyacente es donde el 7 de julio se destacó.

Breadth: two falling for every one rising

ConsultaAlzas vs. bajas entre tickers con al menos $1M negociado el 7 de julio
alzasbajassin cambiotickers 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 advancers, 4034 decliners, 59 unchanged, 33.8% of the liquid tape rose, Monday's green print inverted. The filter drops 5276 of 11460 dual-session tickers under $1 million traded, counted here.

El complejo de chips se quebró, salvo sus mayores nombres

Las ventas se concentraron en los semiconductores: los fabricantes de chips, las empresas de equipos que les suministran, el complejo de almacenamiento que los rodea y los ETF apalancados construidos sobre ellos. A continuación se reportan la co-movilidad y la magnitud; los datos no indican por qué ocurrió.

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 venta: NVDA cerró al alza en 0.67% y Broadcom terminó casi sin cambios en -0.83%, en una jornada negativa para todo el sector, excepto sus mayores integrantes (el análisis detallado de NVDA de junio).

El movimiento estuvo sincronizado, como un vacío de liquidez durante una mañana: 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 de tiempo. SOXS, el ETF inverso de semiconductores con apalancamiento 3x, marcó su máximo de la sesión a las 10:42. El movimiento fue completamente inverso. Intel siguió cayendo mucho después de que el resto se estabilizara y alcanzó su mínimo a las 15:18. Los vehículos apalancados reflejan la magnitud: SOXL -15.15% frente a SOXS +15.87%.

El otro lado de la cinta

Aun con una caída de dos a uno, hay un tercio en verde. Esto subió mientras las acciones de chips caían:

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 impulsaron la columna verde: Exxon +3.78%, Chevron +3.47%, Johnson & Johnson +3.07%, Eli Lilly +2.75%, UnitedHealth +2.41%. Las dos megacaps de este panel se dividieron: META subió +2.52%, mientras TSLA devolvió la mayor parte de la subida unidireccional del lunes en -4.02%. Y el print individual más destacado de la cinta: Crinetics Pharmaceuticals (CRNX) cerró +98.79% con $4.19 mil millones negociados, casi duplicándose. Todo el movimiento se produjo como un gap overnight (98.91% en la apertura; la sesión regular lo movió apenas -0.06%), el tipo de ajuste de precio entre sesiones que ocurre donde se negocia antes de la apertura. Los datos no indican por qué.

Dónde se negoció el dinero

ConsultaLíderes de volumen de dos formas: top 6 por dólares negociados, top 4 por acciones negociadas (se excluye una cotización con símbolo reutilizado, pendiente de verificar la entidad)
tabla de posicionestickervolumen en dólares (mmd)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 flujo en dólares con $41.6 billion, un día después de ceder el primer lugar. Lo recuperó, seguido por SPY ($28.68 billion) y QQQ ($26.54 billion). Otros tres nombres de semiconductores, NVDA ($19.95 billion), SNDK ($19.73 billion) y INTC ($13.82 billion), completaron los seis primeros lugares. La concentración del volumen negociado en acciones individuales es lo que señala el volumen relativo.

En el tablero accionario, SOXS negoció 566.3 million shares. El ETF inverso 3x de semiconductores encabezó el conteo por tercera sesión consecutiva (lunes y jueves corresponden a las operaciones anteriores). Esta vez ocurrió el mismo día en que su sector efectivamente rompió al alza. CPOP ofrece la lección opuesta: se movieron 161.3 million shares por apenas $0.02 billion. El conteo de acciones favorece a los títulos baratos. Base: horario regular del 7 de julio; se excluye una cotización con símbolo reutilizado mientras se verifica la entidad, sus comprobantes.

La forma de la sesión

ConsultaAcciones negociadas por bloque de 30 minutos, horario regular (miles de millones)
hora ETacciones (mmM)% del grupo más grande
09:30293.4
10:001.5874
10:301.3462.7
11:001.0950.9
11:300.9946.1
12:000.9142.6
12:300.7635.3
13:000.7233.6
13:300.6429.8
14:000.7133.1
14:300.9142.7
15:001.1453.2
15:302.14100
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-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
GROUP BY et_time
ORDER BY et_time
Pruébalo tú mismo

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

La cinta de opciones

ConsultaUna fila para toda la sesión de opciones: volumen, participación de calls, 0DTE y los dos contratos que rodearon el cierre de SPY
operaciones de opciones (M)contratos (M)calls (% del volumen)vencimiento el mismo día (%)contratos del 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 61.13 millones de contratos de opciones en 10.6 millones de operaciones ejecutadas, una cinta del tamaño de la de lunes, y las calls aún representaron 55.6% del volumen en una jornada bajista. Los vencimientos del mismo día representaron 31.2% de la cinta (19.08 millones de contratos), la participación de 0DTE de un martes ordinario. Los dos contratos más negociados del día se ubicaron a ambos lados del cierre; ambos fueron 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 del dinero, y la put de $747 (785834 contratos a $0.88) terminó $0.66 fuera del 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: la National Best Bid and Offer, recotizada continuamente para cada instrumento listado. Es el conjunto de datos más difícil de obtener en este almacén. Aquí se mide en cada sesión, sea normal o no.

ConsultaTodo el flujo NBBO de acciones: conteo de actualizaciones del 7 de julio vs. el 6 de julio
actualizaciones del 7 de jul. (M)actualizaciones del 6 de jul. (M)variación diaria (%)minuto de la última cotización del 7 de jul. (ET)actualizaciones en la hora de cierre del 7 de jul. (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 de NBBO el 7 de julio, 25.7% más que las 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 cotización, 10:36–10:48 ET vs. control de mediodía (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 cotizaciónactualizaciones 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 nombres revisados se recotizaron a múltiplos de su ritmo del mediodía: MU 3.4x, SanDisk 4.1x y AMD 4.6x. El spread bid-ask apenas se movió: el ancho mediano de MU fue de 5.02 bps en ese tramo, frente a 4.81 al mediodía; el de NVDA fue de 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 nombres que pagaron una penalización real por ancho fueron AMD (+2.6 bps) e Intel (+0.95). Intel fue el único nombre que siguió cayendo después de ese 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 ve como cotizaciones amplias y silencio. Esto fue lo contrario: una tormenta de cotizaciones con el touch prácticamente fijo. Los costos de cruce siguieron dependiendo del nombre: SOXS cotizó con un ancho de 19.59 bps en el mínimo, frente a 1.04 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 jul. (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 esta es la comprobación habitual que realiza esta sección 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 lugar 1 de 21, frente a un mes que alcanzó 2.865 centavos en su punto más amplio. Una cinta roja de two-to-one, con el touch del índice en su nivel más estrecho del mes, es un hecho que solo el flujo de cotizaciones puede confirmar.

ConsultaEl flujo 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 jul.actualizaciones de cotizaciones de opciones del 7 de jul. (mil millones)actualizaciones de cotizaciones de opciones del 6 de jul. (mil millones)variación diaria (%)actualizaciones de cotizaciones de acciones del 7 de jul. (M)ratio de opciones a acciones del 7 de jul.
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 almacén. El 7 de julio registró 8.69 mil millones de actualizaciones de 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 se expandió 34% sesión contra sesión, junto con el 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 frente al vacío, comparado con un control de mediodía
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 de pocket ($)spread ATM de mediodía ($)variación del spread ATM ($)actualizaciones ATM de pocket (K)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

Solo los contratos de SPY con vencimiento en 2026 recibieron 327.55 millones de esas actualizaciones durante el horario regular, distribuidas entre 9116 contratos listados. Eso equivale a 66.5% de lo que cotizó todo el mercado de acciones ese mismo día, desde un solo subyacente. Los vencimientos del mismo día que componen la cinta 0DTE representan 13.61 millones de ellas.

Durante los doce minutos del vacío de liquidez matutino, los contratos del mismo día cercanos al dinero cotizaron con un ancho mediano de $0.01, exactamente el mismo ancho que mostraron en el control del mediodía ($0.01, una variación de 0). La tasa de cotización de ese mismo par fue de 3x: 191.1 miles de actualizaciones en los mínimos, frente a 64 miles al mediodía. El touch de las opciones hizo lo mismo que el touch de la acción. Mantuvo su ancho mientras la maquinaria de cotización operaba a plena intensidad. “Cercano al dinero” significa que el strike está dentro de $2 del precio promedio de SPY en la misma ventana. El panel muestra ambos precios (746 en ese tramo y 749.08 al mediodía).

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

ConsultaLa curva del Tesoro: 7 de julio vs. el cierre del 6 de julio (solo vencimientos con datos)
punto de la curvarendimiento del 7 de julio (%)cambio en 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 base 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 de cinco por ciento. El spread 2s10s se mantuvo en 0.36 puntos porcentuales (cambio de 1 puntos base): un movimiento mayormente paralelo, no un cambio en la forma de la curva.

El calendario detrás de la sesión

ConsultaCalendario corporativo y flujo de información del 7 de julio, en una fila
registros exdividendosplits ejecutadossplits inversossplits directosOPI listadaspresentaciones ante la SECpresentaciones de insiders (Formulario 4)presentaciones 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 ex-dividend, se ejecutaron 7 splits, 5 de ellos fueron reverse splits, consolidaciones por debajo de un dólar que simulan "ganancias" de tres dígitos en una cinta sin ajustar, frente a 2 splits al alza, y llegó 1 nueva cotización. El índice de la SEC registró 2438 presentaciones: 463 Form 4s y 173 Form 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 más que el siguiente nombre. Fue la misma NVDA que cerró al alza durante la jornada bajista de su sector. El feed publicó 0 artículos sobre CRNX, la acción con la mayor ganancia en la cinta; fue la atención de un feed, no la de los medios de todo el mundo.

La sesión, verificada

ConsultaVerificación de sesión: rango 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 un minuto de SPYbarras de la sesión regularsesiones diariasfilas 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 contiene 0 filas para esa fecha. El próximo cierre programado es el Labor Day, 2026-09-07.

Notas de datos

  • El volumen en dólares es un indicador por minuto: precio de cierre × volumen, sumado por cada vela de un minuto durante el horario regular.
  • La separación entre gap y movimiento gradual se mide desde la primera vela de la sesión regular de cada activo (la apertura) frente al último cierre regular de la sesión anterior. El resto corresponde al movimiento entre la apertura y el cierre del 7 de julio.
  • Los mínimos matutinos sincronizados se verificaron contra las velas adyacentes al momento de redactar el artículo. Cada uno está respaldado por sus minutos vecinos, no por una sola operación ejecutada; ninguno justificó un comprobante de anomalía. Cuando un extremo se registró durante más de un minuto, el panel muestra la primera vela en que ocurrió, como criterio determinista para resolver empates.
  • Una cotización con símbolo reutilizado queda excluida de las clasificaciones de volumen y de la mención de noticias mientras se verifica la entidad; su propia publicación contiene los comprobantes.
  • Las estadísticas del spread cotizado excluyen las cotizaciones inválidas (registros NBBO unilaterales o cruzados), y cada panel de spreads indica en una columna propia cuántas observaciones descarta. El “spread promedio ponderado por actualizaciones” calcula el ancho cotizado de cada actualización NBBO válida. Los momentos de mayor actividad pesan más; es una estadística de cotización, no el 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 regenerarse el artículo y esta revisión muestra las 8.69 actualizaciones de la sesión. La cinta de cotizaciones de acciones estaba completa desde el inicio: la ú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 de ejercicio at-the-money. La mediana por actualización de todos los contratos con vencimiento el mismo día es una estadística de composición: los contratos muy in-the-money cotizan con spreads de varios dólares, los muy out-of-the-money cotizan con spreads de centavos y los contratos que vuelven a cotizar cambian durante la sesión. La comparación entre el periodo inicial y el mediodía se limita a los precios de ejercicio 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; no se eliminan silenciosamente.
  • El registro del Tesoro correspondiente al 7 de julio se incorporó con un día de retraso de sesión. La primera edición incluyó un comprobante con el retraso informado; su mecanismo de alerta se activó el 8 de julio, cuando llegó el registro, y esta revisión muestra la curva real.

Metodología

  • El periodo es una sola sesión de trading (sesión 1, verificada con las barras observadas y el calendario de feriados; nunca se da por supuesta). 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, es decir, sesiones de trading consecutivas.
  • Las columnas decimales se convierten a flotantes de 64 bits antes de calcular 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 solo lectura con acceso controlado. Estado del almacén de datos al 8 de julio de 2026.
  • La sección de la cinta de cotizaciones se agregó en la revisión del 8 de julio, la misma revisión que reemplazó el comprobante del rezago de los bonos del Tesoro por la operación ejecutada registrada. Sus paneles de cotizaciones de opciones se reescribieron una vez que llegaron las filas NBBO de opciones del propio 7 de julio. La generación es un proceso por lotes: el panel de cotizaciones de opciones de SPY examina unos cientos de millones de registros NBBO, mientras que los conteos por tamaño de operación leen los totales de filas de las particiones diarias. Por eso, una tabla que contiene miles de millones de filas por sesión puede responder 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. Pegue cualquiera de ellos en la terminal de Strasmore y hágalo suyo. Sesión anterior: 6 de julio.

#recap#daily#spy#qqq#market structure