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.
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 tickerDIA 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.
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
)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.
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
)
)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.
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 tickerAAPL 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.
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) DESCLa 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.
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 DESCHealth 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
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) DESCMU 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
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'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.
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'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.
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 tickerEl 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.
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
)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.
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_mLa 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
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 dateEl 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
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_10q147 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.
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'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
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'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_aggspara precios y volúmenes,options_tradespara la cinta de opciones,cache_stocks_quotesycache_options_quotespara 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
toTimeZoneaparece ú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.