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

Resumen de mercado del 28 de julio de 2026

La sesión en cifras: índices, amplitud, spread sectorial, flujo de opciones, cotizaciones, tasas y calendario, con cada dato respaldado por consultas almacenadas.

Este resumen de mercado del martes 28 de julio de 2026 cubre toda la sesión a partir de consultas almacenadas: el cambio de cierre a cierre de SPY fue de 0.24%, la proporción de acciones en avance en el tape líquido fue de 58.6% y el tape de opciones registró 59.28 millones de contratos. Cada ventana a continuación está delimitada por fechas explícitas en ambos extremos, por lo que volver a ejecutar el SQL de cualquier panel devuelve estas mismas cifras.

El marcador

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

ConsultaSPY / QQQ / DIA / IWM: 28 de julio frente al cierre del 27 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-27 13:30:00' AND window_start < '2026-07-27 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-28 13:30:00' AND window_start < '2026-07-28 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ó 1.07%, IWM 0.15%, QQQ -0.96% y SPY 0.24%, hasta cerrar en $740.76. Cada fila divide el movimiento en sus dos tramos: SPY abrió 0.02% respecto al cierre del lunes y se movió 0.21% entre la apertura y el cierre. El tramo nocturno y el tramo intradía no tienen que coincidir. La división entre ambos es la primera huella de una sesión.

¿Fue inusual el día?

El número de una sesión dice poco sin la distribución que lo respalda. Por eso, el día se clasifica dentro de su propio mes móvil con la misma lógica.

ConsultaMovimiento diario de SPY en contexto histórico reciente (de apertura a cierre, del 29 de junio al 28 de julio)
El SQL exacto detrás de cada cifra
SELECT
    round(anyIf(oc_pct, d = toDate('2026-07-28')), 2) AS spy_open_to_close_pct,
    arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-28'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-28'))) + 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-29 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 0.21%, ocupó el puesto 14 entre 21 sesiones móviles según su tamaño absoluto, en una ventana que se remonta a 2026-06-29. La clasificación cuenta cuántas sesiones de la ventana registraron un movimiento mayor, más uno. Por lo tanto, el primer puesto 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 28 de julio frente al cierre del 27 de julio, filtro de $1M negociados
El SQL exacto detrás de cada cifra
SELECT
    countIf(c28 > c27 AND liquid) AS advancers,
    countIf(c28 < c27 AND liquid) AS decliners,
    countIf(c28 = c27 AND liquid) AS unchanged,
    countIf(liquid) AS liquid_tickers,
    countIf(NOT liquid) AS dropped_by_liquidity_filter,
    round(100.0 * countIf(c28 > c27 AND liquid) / countIf(liquid), 1) AS advancer_pct
FROM (
    SELECT ticker, c27, c28, dv28 >= 1000000 AS liquid
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 13:30:00') AS dv28
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
        GROUP BY ticker
        HAVING c27 > 0 AND c28 > 0
    )
)
Run this yourself

Entre 6008 acciones que superaron un umbral de volumen negociado de un millón de dólares en el horario regular, 3519 cerraron por encima del cierre del lunes y 2423 cerraron por debajo, lo que representa una proporción de acciones al alza de 58.6%. El filtro dejó fuera 5346 acciones con menor liquidez, que se contabilizan aquí en lugar de descartarse sin más.

La canasta de mega-caps

Los mismos ocho nombres de mega-cap aparecen en cada sesión, ordenados alfabéticamente para que cada uno conserve su fila. La canasta fija es el objetivo: el lector aprende las filas y ninguna selección editorial elige ganadores después de los hechos.

ConsultaOcho megacaps: cambio frente al 27 de julio y dólares negociados en horario regular, 28 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-28 00:00:00')) AS prior_close,
        toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-28 00:00:00')) AS day_close,
        round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 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-27 13:30:00' AND window_start < '2026-07-27 20:00:00')
        OR (window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 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.97%, META -0.05%, MSFT 1.12% y NVDA 0.23% con 21.11 mil millones de dólares de volumen negociado en el horario regular, mientras TSLA registró -0.57%. La columna en dólares muestra cuánto del flujo de operaciones concentran por sí solas estas ocho acciones; el panel de amplitud de mercado de arriba permite comprobar hasta qué punto el resto del mercado avanzó junto con ellas.

Los movimientos del día

Ambos paneles exigen una rotación de cinco millones de dólares en 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 de ambigüedad interno descrito en las notas.

ConsultaMayores alzas y bajas: cierre del 28 de julio frente al cierre del 27 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((c28 / c27 - 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-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 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-27' AND execution_date <= '2026-07-28')
          AND window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
        GROUP BY ticker
        HAVING c27 > 0 AND c28 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct DESC
    LIMIT 8
    UNION ALL
    SELECT 'decliners' AS board, ticker, round((c28 / c27 - 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-27 13:30:00' AND window_start < '2026-07-27 20:00:00') AS c27,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS c28,
               sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-28 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-27' AND execution_date <= '2026-07-28')
          AND window_start >= '2026-07-27 13:30:00' AND window_start < '2026-07-28 20:00:00'
        GROUP BY ticker
        HAVING c27 > 0 AND c28 > 0 AND dv >= 5000000
    )
    ORDER BY day_pct ASC
    LIMIT 8
)
ORDER BY board DESC, abs(day_pct) DESC
Run this yourself

La acción con la mayor subida del panel, STKH, avanzó 166.7% con una negociación de 113.2 millones de dólares. La acción con la mayor caída, YYAI, registró -71% con una negociación de 18.3 millones. Esta página registra las magnitudes y las operaciones ejecutadas; no les atribuye ninguna explicación.

Dispersión sectorial

Los once fondos SPDR de sectores selectos, con el cierre del 28 de julio frente al del 27 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 28 de julio frente al cierre del 27 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((c28 / c27 - 1) * 100, 2) AS day_pct
    FROM (
        SELECT ticker,
               argMaxIf(toFloat64(close), window_start, window_start < '2026-07-28 00:00:00') AS c27,
               argMaxIf(toFloat64(close), window_start, window_start >= '2026-07-28 00:00:00') AS c28
        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-27 13:30:00' AND window_start < '2026-07-27 20:00:00')
            OR (window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00'))
        GROUP BY ticker
        HAVING c27 > 0 AND c28 > 0
    )
)
ORDER BY day_pct DESC
Run this yourself

Health Care encabezó la lista con 2.36%, mientras que Technology quedó al final con -1.9%, 4.26 puntos porcentuales por debajo. Ese spread representa la dispersión sectorial del día: una sesión en la que los once fondos terminan dentro de un punto porcentual se interpreta de manera muy distinta de otra en la que la diferencia se extiende a varios puntos.

Dónde se negociaron los dólares

ConsultaTop 6 por dólares negociados, top 4 por acciones negociadas: horario regular del 28 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-28 13:30:00' AND window_start < '2026-07-28 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-28 13:30:00' AND window_start < '2026-07-28 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 listado por volumen en dólares, con 39.21 mil millones negociados durante el horario regular. Le siguió QQQ, con 29.98 mil millones. El listado por acciones responde a otra pregunta: ONFO lo encabezó, con 182.4 millones de acciones y un precio promedio implícito de $0.16. El volumen en dólares muestra dónde está la atención del mercado; el volumen de acciones muestra su rotación. La versión de esta medida por nombre es el volumen relativo.

El flujo de opciones

ConsultaFlujo de opciones: contratos, proporción de calls, proporción del mismo día frente al lunes, contrato más activo de SPY
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) = '260728', 1, 0) AS is_0dte
            FROM global_markets.options_trades
            WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00'
    ) AS spy_regular_close,
    (
        SELECT round(toFloat64(sum(size)) / 1e6, 2)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
    ) AS jul27_contracts_m,
    (
        SELECT round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260727') / sum(size), 1)
        FROM global_markets.options_trades
        WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-28 00:00:00'
    ) AS jul27_pct_0dte
SELECT
    round(count() / 1e6, 2) AS option_prints_m,
    round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
    jul27_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) = '260728') / sum(size), 1) AS pct_0dte,
    jul27_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-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
Run this yourself

El flujo de opciones registró 10.07 millones de operaciones por 59.28 millones de contratos, frente a los 64.69 millones del lunes. Las calls representaron 55% del volumen de contratos. Los contratos que vencían en la misma sesión, el grupo de días hasta el vencimiento igual a cero, representaron 29%, frente a 39.3% el lunes, un ritmo definido por el calendario de vencimientos. El contrato más activo de SPY fue el 742 C, con 0.72 millones de contratos; su strike se ubicó a 1.24 dólares del cierre regular de SPY en $740.76, calculado 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: 28 de julio frente al 27 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-28')) / 1e6, 2) AS jul28_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-27')) / 1e6, 2) AS jul27_updates_m,
    round((countIf(toDate(sip_timestamp) = toDate('2026-07-28')) / countIf(toDate(sip_timestamp) = toDate('2026-07-27')) - 1) * 100, 1) AS day_over_day_pct,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'SPY') / 1e6, 2) AS jul28_spy_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'QQQ') / 1e6, 2) AS jul28_qqq_updates_m,
    round(countIf(toDate(sip_timestamp) = toDate('2026-07-28') AND ticker = 'NVDA') / 1e6, 2) AS jul28_nvda_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-27 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
Run this yourself

La cinta de cotizaciones accionarias registró 536.07 millones de actualizaciones de NBBO frente a 553.53 millones el lunes, un cambio diario de -3.2%. SPY registró 4.72 millones de actualizaciones, QQQ 5.94 millones y NVDA 3.01 millones.

ConsultaSiete nombres: spread cotizado mediano en RTH en puntos básicos, con conteos de calidad de cotización, 28 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-28 13:30:00' AND sip_timestamp < '2026-07-28 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 de cotización de SPY durante el horario regular midió 0.27 puntos base del punto medio; el de QQQ, 0.74, y el de NVDA, 1.52. Las dos últimas columnas muestran la divulgación: las cotizaciones de un solo lado y las cotizaciones cruzadas se cuentan por nombre y se excluyen de la mediana, en lugar de eliminarse sin informar. Una cotización cruzada, con la oferta por encima de la demanda, es un resultado habitual de una fuente consolidada integrada a partir de múltiples mercados con resolución de nanosegundos.

ConsultaSpread mediano de SPY comparado con cada sesión de julio, del más estrecho al más amplio
El SQL exacto detrás de cada cifra
SELECT round(anyIf(spread_bps, d = toDate('2026-07-28')), 2) AS jul28_median_spread_bps,
       arrayCount(x -> x < anyIf(spread_bps, d = toDate('2026-07-28')), groupArrayIf(spread_bps, d != toDate('2026-07-28'))) + 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-28 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 aplicando la misma metodología, el spread mediano de SPY de 0.27 puntos base ubicó la sesión en 16 de 19, contando desde el más estrecho, dentro de una ventana que comienza en 2026-07-01. En una cinta tranquila, esa oración es el objetivo del panel: un día ordinario para la liquidez es un hallazgo publicado y delimitado.

ConsultaCinta NBBO de opciones: actualizaciones totales frente a la cinta de acciones, más el segmento del root de SPY, 28 de julio
El SQL exacto detrás de cada cifra
WITH
    (SELECT count() FROM global_markets.cache_options_quotes WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00') AS jul28_options_rows,
    (SELECT count() FROM global_markets.cache_stocks_quotes WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00') AS jul28_stock_quote_rows
SELECT
    round(jul28_options_rows / 1e9, 2) AS jul28_options_bn,
    round(jul28_options_rows / jul28_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-28 13:30:00' AND sip_timestamp < '2026-07-28 20:00:00') / 1e6, 0) AS jul28_spy_options_m
Run this yourself

La cinta de NBBO de opciones registró 10.23 mil millones de actualizaciones, 19.1 veces el volumen de la cinta de cotizaciones accionarias, y solo la raíz de SPY registró 382 millones de actualizaciones durante el horario regular.

Tasas

ConsultaRegistros de la curva del Tesoro, del 23 al 28 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-23' AND date <= '2026-07-28'
ORDER BY date
Run this yourself

El archivo del Tesoro lleva aproximadamente una sesión de retraso respecto del mercado, por lo que este panel muestra las operaciones ejecutadas que contiene: filas con fecha 4 dentro de la ventana. La más reciente, con fecha 2026-07-28, ubicó el rendimiento a dos años en 4.26%, el rendimiento a diez años en 4.61% y el rendimiento a treinta años en 5.09%, con un spread de dos a diez años de 35 puntos básicos.

El calendario detrás de la jornada

ConsultaEx-dividendos, splits, listados, noticias y composición de filings de la SEC del 28 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-28 04:00:00' AND published_utc < '2026-07-29 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-28'
    ) AS fil
SELECT
    (SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-28') AS ex_dividend_records,
    (SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-28') AS reverse_splits,
    (SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-28') AS forward_splits,
    (SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-28') AS listings,
    (SELECT count() FROM global_markets.stocks_news WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 04:00:00') AS news_articles,
    (SELECT uniqExact(JSONExtractString(publisher, 'name')) FROM global_markets.stocks_news WHERE published_utc >= '2026-07-28 04:00:00' AND published_utc < '2026-07-29 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

147 registros de dividendos pasaron a la fecha ex-dividend el 28 de julio; se ejecutaron 3 splits inversos y 0 splits directos, y 2 nuevas cotizaciones llegaron al mercado. El flujo de noticias incluyó 161 artículos de 2 medios, y MSFT fue el ticker más cubierto en el periodo de este flujo, con 9 artículos. El índice diario de EDGAR registra 5915 presentaciones para esa fecha, correspondientes a 2898 declarantes distintos: 856 informes de insiders mediante Formulario 4, 315 informes corrientes 8-K, 900 suplementos de precios 424B2 y 100 informes trimestrales 10-Q. Ese índice se publica según su propio calendario, y este panel muestra lo que contiene al momento de generarse.

En agenda

El resto de la semana, lea las mismas tablas con la mirada puesta deliberadamente más allá del periodo.

ConsultaDel 29 al 31 de julio en el calendario: cierres, ex-dividendos, splits, el vencimiento del viernes y el rezago del interés en corto
El SQL exacto detrás de cada cifra
SELECT
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-29' 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-29' 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-29' AND ex_dividend_date <= '2026-07-31') AS household_exdivs,
    (SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= '2026-07-29' 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_tue_volume,
    (SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest WHERE settlement_date <= '2026-07-28') AS latest_short_interest_settlement
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-28 00:00:00' AND sip_timestamp < '2026-07-29 00:00:00'
Run this yourself

La tabla de feriados muestra 0 cierres entre el miércoles 29 de julio, el jueves 30 de julio y el viernes 31 de julio. Los registros de dividendos de 696 pasan a ex-dividendo durante esas tres sesiones; 0 corresponden a diez nombres conocidos del sector de consumo revisados, y hay 15 splits programados para ejecutarse. Del volumen de opciones del martes, 17.5% 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-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS regular_session_bars,
    uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-28 13:30:00' AND window_start < '2026-07-28 20:00:00') AS day_sessions,
    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-28') AS jul28_holiday_rows,
    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-28' 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-28' 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-28 00:00:00' AND window_start < '2026-07-29 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 registros 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 bursátil el martes 28 de julio de 2026?

SPY cambió 0.24% entre cierres, a $740.76, mientras que QQQ se ubicó en -0.96%, DIA en 1.07% e IWM en 0.15%. Entre las acciones líquidas, 3519 subió y 2423 cayó.

¿Qué sector encabezó el tablero el 28 de julio de 2026?

Health Care, con 2.36%, medido entre los once fondos SPDR de sectores selectos. El más débil de los once, Technology, registró -1.9%.

¿Qué tan activa estuvo la negociación de opciones el 28 de julio de 2026?

Se negociaron 59.28 millones de contratos, frente a 64.69 millones en la sesión anterior. Los contratos del mismo día representaron 29% del volumen y las calls, 55%.

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

MU, con 39.21 mil millones de volumen en dólares durante el horario regular, por delante de QQQ, con 29.98 mil millones.

Notas de datos

Esta edición cubre el faltante del 28 de julio en la serie diaria: la serie diaria del 27 de julio cubre la sesión anterior, la serie diaria del 29 de julio cubre la sesión posterior y el resumen semanal abarca la semana previa a ambas. Los paneles identificados por ticker están ordenados alfabéticamente para que las referencias del texto apunten a filas fijas; las tablas de líderes y de movimientos están ordenadas por valor, y cada afirmación de posición que contienen está codificada como un límite de control. La canasta de mega-capitalización y la canasta sectorial de once fondos son conjuntos definidos y fijos, no clasificaciones de proveedores. Las tablas de movimientos aplican un umbral de rotación de cinco millones de dólares en horario regular, excluyen cualquier nombre cuyo split se haya ejecutado entre los dos cierres que miden y excluyen un símbolo reutilizado según el control interno de ambigüedad. Así, cada referencia siempre remite a un nombre verificable. Los paneles de cotizaciones cuentan las cotizaciones unilaterales y cruzadas por nombre, en lugar de descartarlas sin aviso. El archivo del Tesoro y el índice diario de EDGAR llegan 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 la cinta mediante rangos, la participación de 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 NBBO.
  • Cierre: la última vela de un minuto de la sesión regular, nunca un print supuesto de las 16:00 y nunca un print de horario extendido.
  • Gestión de zonas horarias: todas las marcas de tiempo almacenadas están en UTC; las cláusulas WHERE usan literales UTC sin transformar, 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 velas observadas; nunca se da por supuesta con base en el calendario.
  • Comparaciones con la sesión anterior: se calculan dentro de la consulta a partir del 27 de julio; no 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 utilizan cuantiles exactos y desempates mediante claves de tupla; cada afirmación de orden o signo en el texto está codificada como un límite de control.
  • Fecha de corte del warehouse: 1 de agosto de 2026, cuatro días después de la sesión y una vez superado el rezago habitual de ingesta de la cinta, de uno a dos días; los comprobantes acotados anteriores mantienen la publicación disponible si se detecta que falta algún conjunto de datos durante la generación.

Enlaces cruzados: el resumen diario del 27 de julio, el resumen diario del 29 de julio, cuándo vencen las opciones, qué es un spread entre bid y ask y el spread de dos a diez años.

Todas las consultas anteriores se ejecutan sin cambios en la terminal Strasmore si desea volver a apuntar una ventana a otra sesión.