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

Resumen de mercado del 29 de julio de 2026

Resumen del 29 de julio de 2026: índices, amplitud, spread sectorial, flujo de opciones, cotizaciones, tasas y calendario con cifras respaldadas por consultas.

Este resumen de mercado del miércoles 29 de julio de 2026 cubre toda la sesión con consultas almacenadas: el cambio de cierre a cierre de SPY fue de -1.52%, la proporción de avances en el mercado líquido fue de 27.2% y el mercado de opciones registró 66.84 millones de contratos. Cada ventana a continuación está fijada a fechas explícitas en ambos extremos, por lo que volver a ejecutar el SQL de cualquier panel devuelve estas mismas cifras.

El tablero

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

ConsultaSPY / QQQ / DIA / IWM: 29 de julio vs. cierre del 28 de julio, horario regular
El SQL exacto detrás de cada cifra
WITH prior AS (
    SELECT ticker, argMax(close, window_start) AS prior_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
      AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00'
    GROUP BY ticker
)
SELECT
    s.ticker AS ticker,
    round(toFloat64(p.prior_close), 2) AS prior_close,
    round(toFloat64(s.day_open), 2) AS day_open,
    round(toFloat64(s.day_close), 2) AS day_close,
    round((toFloat64(s.day_open) / toFloat64(p.prior_close) - 1) * 100, 2) AS gap_pct,
    round((toFloat64(s.day_close) / toFloat64(s.day_open) - 1) * 100, 2) AS intraday_pct,
    round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
    round(toFloat64(s.day_high), 2) AS day_high,
    round(toFloat64(s.day_low), 2) AS day_low,
    s.shares_traded_m
FROM sess s LEFT JOIN prior p ON s.ticker = p.ticker
ORDER BY ticker
Run this yourself

DIA se movió -2.19%, IWM -1.63%, QQQ -2.07% y SPY -1.52%, hasta cerrar en $729.51. Cada fila divide el movimiento en sus dos tramos: SPY abrió -0.11% respecto al cierre del martes y se movió -1.41% entre la apertura y el cierre. El tramo overnight y el tramo intradía no tienen que coincidir. La división entre ambos es la primera huella de una sesión.

¿Fue inusual la sesión?

El dato de una sola sesión dice poco sin conocer su distribución. Por eso, la sesión se clasifica dentro de su propio mes móvil con la misma lógica.

ConsultaMovimiento diario de SPY en contexto histórico (apertura a cierre, del 29 de junio al 29 de julio)
El SQL exacto detrás de cada cifra
SELECT
    round(anyIf(oc_pct, d = toDate('2026-07-29')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-29'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-29'))) + 1 AS spy_abs_move_rank,
    count() AS spy_sessions_compared,
    toString(min(d)) AS first_session
FROM (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-06-29 13:30:00')
      AND window_start < toDateTime('2026-07-30 00:00:00')
      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
    GROUP BY d
)
Run this yourself

El movimiento de apertura a cierre de SPY, de -1.41%, ocupó el lugar 1 entre 22 sesiones móviles, según su magnitud absoluta, en una ventana que se remonta a 2026-06-29. La clasificación cuenta cuántas sesiones de la ventana registraron un movimiento mayor y suma uno. Por lo tanto, el primer lugar correspondería al mayor movimiento del mes móvil.

Amplitud

El nivel de un índice es un solo número. La amplitud cuenta cuántas acciones se movieron en la misma dirección.

ConsultaAmplitud del mercado líquido: cierre del 29 de julio vs. cierre del 28 de julio, filtro de $1M negociados
El SQL exacto detrás de cada cifra
SELECT
    countIf(c29 > c28 AND liquid) AS advancers,
    countIf(c29 < c28 AND liquid) AS decliners,
    countIf(c29 = c28 AND liquid) AS unchanged,
    countIf(liquid) AS liquid_tickers,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(c29 > c28 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, c28, c29, dv29 >= 1000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 13:30:00') AS dv29
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0
    )
)
Run this yourself

Entre 6066 acciones que superaron el umbral de un millón de dólares de volumen negociado en el horario regular, 1652 cerraron por encima del cierre del martes y 4342 cerraron por debajo, lo que representa una proporción de acciones alcistas de 27.2%. El filtro dejó fuera 5363 acciones con menor liquidez, que se contabilizan aquí en lugar de descartarse silenciosamente.

La canasta de megaempresas

Los mismos ocho nombres de megaempresas aparecen aquí en cada sesión, en orden alfabético para que cada uno conserve su fila. El objetivo es mantener una canasta fija: el lector aprende las filas y ningún criterio editorial elige ganadores después de los hechos.

ConsultaOcho mega-caps: cambio vs. 28 de julio y dólares negociados en horario regular, 29 de julio
El SQL exacto detrás de cada cifra
WITH per_name AS (
    SELECT
        ticker,
        toFloat64(argMaxIf(close, window_start, window_start < '2026-07-29 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-29 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 00:00:00') / 1e9, 2) AS day_dollar_bn
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('AAPL', 'AMZN', 'AVGO', 'GOOGL', 'META', 'MSFT', 'NVDA', 'TSLA')
      AND ((window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00')
        OR (window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 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,
    day_dollar_bn
FROM per_name
ORDER BY ticker
Run this yourself

AAPL se movió -0.63%, META -1.12%, MSFT -0.27% y NVDA -3.51% con una rotación de 22.26 miles de millones de dólares en horario regular, mientras TSLA registró -2.97%. La columna en dólares muestra cuánto del flujo de operaciones concentran por sí solos estos ocho nombres; el panel de amplitud anterior indica hasta qué punto el resto del mercado avanzó con ellos.

Los movimientos del día

Ambos tableros requieren una rotación de cinco millones de dólares en el horario regular. Excluyen cualquier nombre cuya división de acciones se ejecutó entre los dos cierres que miden. También excluyen un símbolo reutilizado conforme al filtro de ambigüedad interno descrito en las notas.

ConsultaMayores alzas y bajas: cierre del 29 de julio vs. cierre del 28 de julio, $5M+ negociados, sin splits
El SQL exacto detrás de cada cifra
SELECT ticker, board, day_pct, day_dollar_m
FROM (
    SELECT 'gainers' AS board, ticker, round((c29 / c28 - 1) * 100, 1) AS day_pct, round(dv / 1e6, 1) AS day_dollar_m
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 13:30:00') AS dv
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker NOT IN ('SPCX')
          AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-28' AND execution_date <= '2026-07-29')
          AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct DESC
    LIMIT 8
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((c29 / c28 - 1) * 100, 1) AS day_pct, round(dv / 1e6, 1) AS day_dollar_m
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS c29,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-29 13:30:00') AS dv
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker NOT IN ('SPCX')
          AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date > '2026-07-28' AND execution_date <= '2026-07-29')
          AND window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-29 20:00:00'
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct ASC
    LIMIT 8
)
ORDER BY board DESC, abs(day_pct) DESC
Run this yourself

El mayor avance del tablero, DFNS, subió 119.8% con 544.9 millones de dólares negociados. La mayor caída, YYAI, registró -68.1% con 8.5 millones. Esta página registra los tamaños y los comprobantes. No les atribuye ninguna explicación.

Dispersión sectorial

Los once fondos SPDR de sectores selectos, comparando el cierre del 29 de julio con el del 28 de julio, ordenados de mejor a peor. La canasta está definida y es fija; no corresponde a una clasificación de un proveedor.

ConsultaETFs sectoriales, cierre del 29 de julio vs. cierre del 28 de julio, ordenados
El SQL exacto detrás de cada cifra
SELECT sector, day_pct, round(max(day_pct) OVER () - day_pct, 2) AS points_behind_best
FROM (
    SELECT multiIf(ticker = 'XLK', 'Technology', ticker = 'XLC', 'Communications', ticker = 'XLE', 'Energy',
                   ticker = 'XLF', 'Financials', ticker = 'XLI', 'Industrials', ticker = 'XLB', 'Materials',
                   ticker = 'XLP', 'Staples', ticker = 'XLRE', 'Real Estate', ticker = 'XLU', 'Utilities',
                   ticker = 'XLV', 'Health Care', 'Consumer Discretionary') AS sector,
           round((c29 / c28 - 1) * 100, 2) AS day_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-29 00:00:00') AS c28,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-29 00:00:00') AS c29
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')
          AND ((window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00')
            OR (window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00'))
        GROUP BY ticker
        HAVING c28 > 0 AND c29 > 0
    )
)
ORDER BY day_pct DESC
Run this yourself

Energy encabezó la lista con 1.89%, mientras que Industrials quedó al final con -3.21%, 5.1 puntos porcentuales por debajo. Ese spread representa la dispersión sectorial del día: una sesión en la que los once sectores terminan dentro de un punto porcentual se comporta de forma muy distinta a otra en la que la diferencia se extiende por varios puntos.

Dónde se negociaron los dólares

ConsultaTop 6 por dólares negociados, top 4 por acciones negociadas: horario regular del 29 de julio
El SQL exacto detrás de cada cifra
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
    round(1000 * dollar_volume_bn / shares_m, 2) AS implied_avg_price
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-29 13:30:00' AND window_start < '2026-07-29 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-29 13:30:00' AND window_start < '2026-07-29 20:00:00'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    ORDER BY shares_m DESC
    LIMIT 4
)
ORDER BY leaderboard, if(leaderboard = 'by shares traded', shares_m, dollar_volume_bn) DESC
Run this yourself

MU encabezó el tablero de dólares con una rotación de horario regular de 44.99 mil millones, seguido por SPY con 42.29 mil millones. El tablero de acciones responde una pregunta diferente: SNXX lo encabezó con 173.4 millones de acciones y un precio promedio implícito de $7.32. El volumen en dólares identifica la atención del mercado; el volumen de acciones muestra su rotación. La versión de esta medida por emisora es volumen relativo.

El flujo de opciones

ConsultaFlujo de opciones: contratos, participación de calls, participación del mismo día vs. martes, contrato de SPY más activo
El SQL exacto detrás de cada cifra
WITH
    (
        SELECT (strike, typ, vol_m, is_0dte)
        FROM (
            SELECT toFloat64(any(strike_price)) AS strike, any(option_type) AS typ,
                   round(toFloat64(sum(size)) / 1e6, 2) AS vol_m,
                   if(substring(ticker, length(ticker) - 14, 6) = '260729', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
              AND underlying_symbol = 'SPY'
            GROUP BY ticker
            ORDER BY vol_m DESC, strike ASC
            LIMIT 1
        )
    ) AS top_spy,
    (
        SELECT round(toFloat64(argMax(close, window_start)), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
    ) AS jul28_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260728') / sum(size), 1)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
    ) AS jul28_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul28_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) = '260729') / sum(size), 1) AS pct_0dte,
    jul28_pct_0dte,
    spy_regular_close,
    top_spy.1 AS top_spy_strike,
    top_spy.2 AS top_spy_type,
    top_spy.3 AS top_spy_contracts_m,
    top_spy.4 AS top_spy_is_0dte,
    round(top_spy.1 - spy_regular_close, 2) AS top_spy_strike_minus_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

El flujo de opciones registró 11.03 millones de operaciones por 66.84 millones de contratos, frente a los 59.28 millones del martes. Las calls representaron 53.6% del volumen de contratos. Los contratos que vencían en la misma sesión, el grupo de vencimiento en cero días, representaron 33.1%, frente a 29% el martes, un ritmo determinado por el calendario de vencimientos. El contrato más activo de SPY fue el 735 P, con 0.36 millones de contratos; su strike se ubicó a 5.49 dólares del cierre regular de SPY en $729.51, medido como strike menos cierre.

La cinta de cotizaciones

Los datos de cotizaciones son el conjunto de datos más escaso de esta mesa, y se miden en cada sesión. Los días ordinarios también quedan registrados.

ConsultaConteo de actualizaciones NBBO de acciones: 29 de julio vs. 28 de julio, con actualizaciones de tickers identificados (millones)
El SQL exacto detrás de cada cifra
SELECT
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / 1e6, 2) AS jul29_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / 1e6, 2) AS jul28_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-29')) / countIf(toDate(sip_timestamp) = toDate('2026-07-28')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'SPY') / 1e6, 2) AS jul29_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'QQQ') / 1e6, 2) AS jul29_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-29') AND ticker = 'NVDA') / 1e6, 2) AS jul29_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

La cinta de cotizaciones accionarias registró 722.65 millones de actualizaciones de NBBO frente a 536.07 millones el martes, un cambio diario de 34.8%. SPY registró 7.32 millones de actualizaciones, QQQ 8.72 millones y NVDA 4.41 millones.

ConsultaSiete nombres: spread cotizado mediano en RTH en puntos base, con conteos de calidad de cotización, 29 de julio
El SQL exacto detrás de cada cifra
SELECT ticker,
       round(quantileExactIf(0.5)(10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2), bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price), 2) AS median_spread_bps,
       round(count() / 1e6, 2) AS quote_updates_m,
       countIf(bid_price <= 0 OR ask_price <= 0) AS one_sided_quote_count,
       countIf(bid_price > ask_price AND bid_price > 0 AND ask_price > 0) AS crossed_quote_count
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'DIA', 'IWM', 'NVDA', 'QQQ', 'SPY', 'TSLA')
  AND sip_timestamp >= '2026-07-29 13:30:00' AND sip_timestamp < '2026-07-29 20:00:00'
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
ORDER BY ticker
Run this yourself

El spread mediano cotizado de SPY en horario regular fue de 0.27 puntos base del punto medio; el de QQQ fue de 0.75 y el de NVDA, de 1.55. Las dos últimas columnas muestran la divulgación: las cotizaciones unilaterales y cruzadas se cuentan por nombre y se separan de la mediana, en lugar de eliminarse sin indicarlo. Una cotización cruzada, con la oferta por encima de la demanda, es un resultado habitual de una fuente consolidada que integra muchas plazas con resolución de nanosegundos.

ConsultaSpread mediano de SPY frente a todas las sesiones de julio, de menor a mayor
El SQL exacto detrás de cada cifra
SELECT round(anyIf(spread_bps, d = toDate('2026-07-29')), 2) AS jul29_median_spread_bps,
       arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-29')), groupArrayIf(spread_bps, d != toDate('2026-07-29'))) + 1 AS rank_tightest,
       count() AS sessions_compared,
       toString(min(d)) AS first_session
FROM (
    SELECT toDate(sip_timestamp) AS d,
           quantileExactIf(0.5)(10000 * (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2), bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) AS spread_bps
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'SPY'
      AND sip_timestamp >= '2026-07-01 13:30:00' AND sip_timestamp < '2026-07-29 20:00:00'
      AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
    GROUP BY d
    HAVING countIf(bid_price > 0 AND ask_price > 0 AND ask_price >= bid_price) > 0
)
Run this yourself

Al compararse con todas las sesiones de julio usando la misma metodología, el spread mediano de SPY del día, de 0.27 puntos base, se ubicó en 20 de 20, contado desde el más estrecho, dentro de una ventana que comienza en 2026-07-01. En una cinta tranquila, esa frase es el objetivo del panel: un día ordinario de liquidez es un hallazgo, publicado y delimitado.

ConsultaCinta NBBO de opciones: actualizaciones totales vs. cinta de acciones, más el segmento del root de SPY, 29 de julio
El SQL exacto detrás de cada cifra
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00') AS jul29_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00') AS jul29_stock_quote_rows
SELECT
    round(jul29_options_rows / 1e9, 2) AS jul29_options_bn,
    round(jul29_options_rows / jul29_stock_quote_rows, 1) AS options_to_stock_ratio,
    round((SELECT count() FROM global_markets.cache_options_quotes WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27' AND sip_timestamp >= '2026-07-29 13:30:00' AND sip_timestamp < '2026-07-29 20:00:00') / 1e6, 0) AS jul29_spy_options_m
Run this yourself

La cinta de NBBO de opciones registró 13.55 mil millones de actualizaciones, 18.8 veces el volumen de la cinta de cotizaciones accionarias, y solo la raíz de SPY registró 600 millones de actualizaciones en horario regular.

Tasas

ConsultaRegistros de la curva del Tesoro, del 24 al 29 de julio
El SQL exacto detrás de cada cifra
SELECT toString(date) AS date,
       round(toFloat64(yield_2_year), 2) AS yield_2y_pct,
       round(toFloat64(yield_10_year), 2) AS yield_10y_pct,
       round(toFloat64(yield_30_year), 2) AS yield_30y_pct,
       round((toFloat64(yield_10_year) - toFloat64(yield_2_year)) * 100) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= '2026-07-24' AND date <= '2026-07-29'
ORDER BY date
Run this yourself

El archivo del Tesoro lleva aproximadamente una sesión de retraso frente al mercado, por lo que este panel muestra las operaciones ejecutadas que tiene registradas: filas con fecha 4 dentro del periodo. La más reciente, con fecha 2026-07-29, ubicó el rendimiento a dos años en 4.22%, el de diez años en 4.67% y el de treinta años en 5.2%, con un spread entre dos y diez años de 45 puntos básicos.

El calendario detrás de la jornada

ConsultaEx-dividendos, splits, listados, noticias y mezcla de filings ante la SEC del 29 de julio
El SQL exacto detrás de cada cifra
WITH
    (
        SELECT (argMax(t, (n, t)), max(n))
        FROM (
            SELECT t, count() AS n
            FROM (
                SELECT arrayJoin(tickers) AS t
                FROM global_markets.stocks_news
                WHERE published_utc >= '2026-07-29 04:00:00' AND published_utc < '2026-07-30 04:00:00'
            )
            WHERE t != 'SPCX'
            GROUP BY t
        )
    ) AS top_news,
    (
        SELECT (count(), uniqExact(cik), countIf(form_type = '4'), countIf(form_type = '8-K'), countIf(form_type = '424B2'), countIf(form_type = '10-Q'))
        FROM global_markets.stocks_sec_edgar_index
        WHERE filing_date = '2026-07-29'
    ) AS fil
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-29') AS ex_dividend_records,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-29') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-29') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-29') AS listings,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-29 04:00:00' AND published_utc < '2026-07-30 04:00:00') AS news_articles,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-29 04:00:00' AND published_utc < '2026-07-30 04:00:00') AS news_publishers,
    top_news.1 AS top_news_ticker,
    top_news.2 AS top_news_n,
    fil.1 AS fil_total,
    fil.2 AS fil_filers,
    fil.3 AS fil_form4,
    fil.4 AS fil_8k,
    fil.5 AS fil_424b2,
    fil.6 AS fil_10q
Run this yourself

85 registros de dividendos pasaron a exdividendo el 29 de julio; se ejecutaron 2 splits inversos y 1 splits directos, y 1 nuevas cotizaciones llegaron al mercado. El flujo de noticias incluyó 190 artículos de 2 fuentes, y NVDA fue el ticker con más cobertura en la ventana de este flujo, con 13 artículos. El índice diario de EDGAR contiene 5742 presentaciones correspondientes a esa fecha, enviadas por 3064 emisores distintos: 712 reportes de información privilegiada Form 4, 440 informes corrientes 8-K, 884 suplementos de precios 424B2 y 174 informes trimestrales 10-Q. Ese índice se publica según su propio calendario, y este panel informa lo que contiene al momento de su generación.

En agenda

Para el resto de la semana, la lectura parte de las mismas tablas y deliberadamente mira más allá del periodo.

Consulta30 y 31 de julio en el calendario: cierres, ex-dividendos, splits, el vencimiento del viernes y el rezago del short interest
El SQL exacto detrás de cada cifra
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-30' AND date <= '2026-07-31' AND status != 'open') AS closures_rest_of_week,
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-30' AND ex_dividend_date <= '2026-07-31') AS exdiv_records_rest_of_week,
    (SELECT countIf(ticker IN ('AAPL', 'MSFT', 'JPM', 'KO', 'JNJ', 'XOM', 'CVX', 'PG', 'WMT', 'HD')) FROM global_markets.stocks_dividends WHERE ex_dividend_date >= '2026-07-30' AND ex_dividend_date <= '2026-07-31') AS household_exdivs,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-30' AND execution_date <= '2026-07-31') AS splits_rest_of_week,
    round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260731') / sum(size), 1) AS jul31_expiry_pct_of_wed_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-29') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-29 00:00:00' AND sip_timestamp < '2026-07-30 00:00:00'
Run this yourself

La tabla de feriados muestra 0 cierres entre el jueves 30 de julio y el viernes 31 de julio. 611 registros de dividendos pasan a fecha ex-dividendo durante esas dos sesiones; 0 corresponden a diez empresas conocidas del sector de consumo que se revisaron, y está previsto ejecutar 12 splits. Del volumen de opciones del miércoles, 19.7% ya correspondía a contratos con vencimiento el viernes 31 de julio. La liquidación más reciente del interés en corto registrada es 2026-07-15, un archivo que se publica con un rezago suficiente para tener su propia explicación.

La sesión, verificada

ConsultaVerificación de la sesión: primera/última barra de SPY en ET, conteo de barras regulares, registros de feriados, próximo cierre
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,
    countIf(window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-29 13:30:00' AND window_start < '2026-07-29 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-29') AS jul29_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-29' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_date,
    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-29' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-29 00:00:00' AND window_start < '2026-07-30 00:00:00'
Run this yourself

Una sesión regular completa: primera barra de SPY a las 04:00 ET, última a las 19:59 ET, 390 barras de horario regular, 1 sesión en la ventana y 0 filas de feriados para la fecha. El próximo cierre programado es Labor Day el 2026-09-07.

Preguntas frecuentes

¿Cómo se comportó el mercado accionario el miércoles 29 de julio de 2026?

SPY cambió -1.52% de cierre a cierre, a $729.51, mientras QQQ se ubicó en -2.07%, DIA en -2.19% e IWM en -1.63%. Entre las acciones líquidas, 1652 subió y 4342 bajó.

¿Qué sector encabezó la sesión el 29 de julio de 2026?

Energy, con 1.89%, medido entre los once fondos SPDR de sectores selectos. El más débil de los once, Industrials, registró -3.21%.

¿Qué actividad tuvo el mercado de opciones el 29 de julio de 2026?

Se negociaron 66.84 millones de contratos, frente a 59.28 millones en la sesión anterior. Los contratos con vencimiento el mismo día representaron 33.1% del volumen y las calls, 53.6%.

¿Qué acción negoció el mayor monto en dólares el 29 de julio de 2026?

MU, con 44.99 mil millones de volumen en dólares durante el horario regular, por delante de SPY, con 42.29 mil millones.

Notas de datos

Esta edición retoma la serie diaria; la edición diaria anterior es 10 de julio de 2026, y el resumen semanal incluye la semana anterior a esta. Los paneles identificados por ticker están ordenados alfabéticamente para que las referencias del texto apunten a filas fijas. Los tableros de líderes y de mayores movimientos están ordenados por valor, y cada afirmación posicional que contienen está codificada como un límite de validación. La canasta de mega capitalización y la canasta sectorial de once fondos son conjuntos definidos y fijos, no clasificaciones de proveedores. Los tableros de mayores movimientos aplican un umbral de volumen negociado de cinco millones de dólares durante el horario regular, excluyen cualquier nombre cuyo split se haya ejecutado entre los dos cierres que miden y excluyen un símbolo reutilizado conforme al control interno de ambigüedad. Así, cada señalamiento corresponde siempre a un nombre verificable. Los paneles de cotizaciones cuentan las cotizaciones unilaterales y cruzadas por nombre, en lugar de descartarlas silenciosamente. El archivo del Tesoro y el índice diario de EDGAR se publican según sus propios calendarios. Por eso, esos paneles reportan lo que contienen, sin asumir que los datos ya llegaron. Aquí no aparece ningún índice de volatilidad implícita. Esas series no están licenciadas para este almacén de datos. Por eso, la volatilidad se obtiene de las operaciones, mediante rangos, la participación de las opciones del mismo día y el comportamiento de las cotizaciones.

Metodología

  • Fuente de datos de mercado: cinta consolidada. delayed_stocks_minute_aggs para precios y volúmenes, options_trades para la cinta de opciones, cache_stocks_quotes y cache_options_quotes para los paneles de NBBO.
  • Cierre: la última barra de un minuto de la sesión regular; nunca una operación asumida a las 16:00 ni una operación de horario extendido.
  • Manejo de zonas horarias: todas las marcas de tiempo almacenadas están en UTC; las cláusulas WHERE usan literales UTC sin conversión, y toTimeZone aparece únicamente en las listas SELECT para las etiquetas ET.
  • Verificación de la sesión: se realiza a partir de la tabla de feriados y las barras observadas; nunca se asume con base únicamente en el calendario.
  • Comparaciones con la sesión previa: se calculan dentro de la consulta a partir del 28 de julio, nunca se arrastran de una publicación anterior.
  • Decimales: las columnas de precio, tamaño y volumen se convierten a Float64 antes de cualquier división o producto.
  • Agregados deterministas: se usan cuantiles exactos y desempates basados en claves de tupla; cada afirmación sobre orden o signo en el texto está codificada como un límite de validación.
  • Fecha de corte del warehouse: 1 de agosto de 2026, tres días después de la sesión y una vez superado el retraso habitual de ingesta de la cinta, de uno a dos días; los comprobantes acotados anteriores mantienen la publicación si falta algún dataset al momento de generarla.

Enlaces relacionados: el resumen diario anterior, el resumen semanal, cuándo vencen las opciones, qué es un bid-ask spread y el spread de dos a diez años.

Cada consulta anterior se ejecuta sin cambios en la terminal de Strasmore si quieres volver a apuntar una ventana a una sesión diferente.