Resumen de mercado: 7 de julio de 2026
Ruptura en semiconductores que el índice apenas sintió: chips a la baja, NVDA en verde, mayoría de descensos y el spread más estrecho de SPY en un mes.
El martes 7 de julio de 2026, QQQ devolvió la mitad del avance del repunte de reapertura del lunes y algo más: cerró en -1.82%, con lo que más que borró la ganancia del lunes, frente a -0.29% de DIA. En el conjunto del mercado, los descensos dominaron por two-to-one: 4034 valores en descenso frente a 2091 valores en alza. La verdadera historia de la jornada fue una ruptura en semiconductores varias veces mayor que la del índice, mientras uno de los gigantes del sector quedó al margen. Todas las cifras siguientes provienen de una consulta almacenada; expanda cualquier panel para ver el SQL exacto.
El marcador
Cada variación compara la última barra de un minuto de la sesión regular del 7 de julio con la del lunes 6 de julio, en sesiones consecutivas.
| ticker | cierre previo | apertura del día | cierre del día | brecha (%) | intradía (%) | cambio (%) | máximo del día | mínimo del día | acciones negociadas (millones) |
|---|---|---|---|---|---|---|---|---|---|
| DIA | 530.03 | 532.5 | 528.48 | 0.47 | -0.76 | -0.29 | 532.54 | 527.11 | 4.1 |
| IWM | 298.88 | 299.17 | 296.2 | 0.1 | -0.99 | -0.9 | 299.97 | 295.18 | 16.4 |
| QQQ | 722.63 | 714.17 | 709.5 | -1.17 | -0.65 | -1.82 | 716.35 | 704.9 | 37.4 |
| SPY | 751.3 | 750.22 | 747.66 | -0.14 | -0.34 | -0.48 | 750.96 | 745.21 | 38.4 |
El SQL exacto detrás de cada cifra
WITH prior AS (
SELECT ticker, argMax(close, window_start) AS prior_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00'
GROUP BY ticker
),
sess AS (
SELECT ticker,
argMin(open, window_start) AS day_open,
argMax(close, window_start) AS day_close,
max(high) AS day_high,
min(low) AS day_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_traded_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
GROUP BY ticker
)
SELECT
s.ticker AS ticker,
round(toFloat64(p.prior_close), 2) AS prior_close,
round(toFloat64(s.day_open), 2) AS day_open,
round(toFloat64(s.day_close), 2) AS day_close,
round((toFloat64(s.day_open) / toFloat64(p.prior_close) - 1) * 100, 2) AS gap_pct,
round((toFloat64(s.day_close) / toFloat64(s.day_open) - 1) * 100, 2) AS intraday_pct,
round((toFloat64(s.day_close) / toFloat64(p.prior_close) - 1) * 100, 2) AS pct_change,
round(toFloat64(s.day_high), 2) AS day_high,
round(toFloat64(s.day_low), 2) AS day_low,
s.shares_traded_m AS shares_traded_m
FROM sess s
JOIN prior p ON s.ticker = p.ticker
ORDER BY s.tickerEl -1.82% de QQQ encabezó la caída de los cuatro ETFs de índices; SPY cerró -0.48%, IWM -0.9% y el -0.29% de DIA fue el movimiento menos pronunciado. La división entre gap y movimiento intradía muestra que los dos extremos del mercado discreparon en la apertura: el gap nocturno de QQQ fue de -1.17% y su movimiento de apertura a cierre fue de -0.65%; el gap explicó la mayor parte del daño. DIA abrió con un gap al alza de 0.47% y aun así terminó en rojo; su variación de apertura a cierre fue de -0.76%. El liderazgo ha cambiado en cada sesión desde el jueves: DIA lideró el jueves, QQQ lideró el lunes y DIA volvió a liderar el martes.
¿Fue un día inusual?
| QQQ cierre a cierre (%) | rango de movimiento absoluto de QQQ | sesiones comparadas de QQQ | SPY apertura a cierre (%) | rango de movimiento absoluto de SPY | sesiones comparadas de SPY | primera sesión |
|---|---|---|---|---|---|---|
| -1.82 | 9 | 21 | -0.34 | 15 | 21 | 2026-06-05 |
El SQL exacto detrás de cada cifra
SELECT
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-07')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-07'))), groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-07'))) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ') AS qqq_sessions_compared,
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-07')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-07'))), groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-07'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
toString(min(d)) AS first_session
FROM (
SELECT ticker, d,
(close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct,
oc_pct
FROM (
SELECT ticker, toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(toFloat64(close), window_start) AS close_px,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-06-04 00:00:00')
AND window_start < toDateTime('2026-07-08 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
)
)
WHERE isFinite(cc_pct)A nivel de los índices, no especialmente. El movimiento de cierre a cierre de QQQ, de -1.82%, ocupa el puesto 9 de 21 sesiones anteriores por magnitud absoluta, mientras que el movimiento de apertura a cierre de SPY, de -0.34%, ocupa el puesto 15 de 21. El mes anterior, que incluye las oscilaciones del complejo de memoria de finales de junio, establece un umbral elevado. La dispersión subyacente es lo que hizo destacar al 7 de julio.
Amplitud de mercado: dos valores bajan por cada uno que sube
| alzas | bajas | sin cambios | tickers líquidos | tickers negociados en ambas sesiones | excluidos por filtro de liquidez | alzas (%) |
|---|---|---|---|---|---|---|
| 2091 | 4034 | 59 | 6184 | 11460 | 5276 | 33.8 |
El SQL exacto detrás de cada cifra
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00')
GROUP BY ticker
)
SELECT
countIf(day_close > prior_close AND day_dollar_volume >= 1000000) AS advancers,
countIf(day_close < prior_close AND day_dollar_volume >= 1000000) AS decliners,
countIf(day_close = prior_close AND day_dollar_volume >= 1000000) AS unchanged,
countIf(day_dollar_volume >= 1000000) AS liquid_tickers,
count() AS tickers_traded_both_sessions,
count() - countIf(day_dollar_volume >= 1000000) AS dropped_by_liquidity_filter,
round(100.0 * countIf(day_close > prior_close AND day_dollar_volume >= 1000000)
/ countIf(day_dollar_volume >= 1000000), 1) AS advancer_pct
FROM per_ticker
WHERE prior_close > 0 AND day_close > 02091 valores en alza, 4034 valores en baja, 59 sin cambios y 33.8% de los valores líquidos subieron; el avance del lunes se revirtió. El filtro excluye 5276 de 11460 tickers con dos sesiones y menos de un millón de dólares negociados, contabilizados aquí.
El complejo de chips se desplomó, salvo sus mayores integrantes
Las ventas se concentraron en semiconductores: los fabricantes de chips, las empresas de equipos que les suministran tecnología, el complejo de almacenamiento asociado y los ETFs apalancados que se construyen sobre ellos. A continuación se reportan la evolución conjunta y la magnitud; los datos no indican las causas.
| ticker | cierre previo | cierre del día | cambio (%) | máximo del día (ET) | mínimo del día (ET) | minuto del máximo (ET) | minuto del mínimo (ET) | rango (%) | volumen diario en dólares (miles de millones) |
|---|---|---|---|---|---|---|---|---|---|
| AMD | 551.95 | 516.57 | -6.41 | 12:29 | 10:46 | 749 | 646 | 4.34 | 12.48 |
| AVGO | 373.9 | 370.79 | -0.83 | 13:42 | 10:44 | 822 | 644 | 3.02 | 6.09 |
| INTC | 122.22 | 110.5 | -9.59 | 09:30 | 15:18 | 570 | 918 | 7.54 | 13.82 |
| KLAC | 233.39 | 216.52 | -7.23 | 09:30 | 10:43 | 570 | 643 | 6.13 | 2.91 |
| LRCX | 349.92 | 326.12 | -6.8 | 09:30 | 10:41 | 570 | 641 | 5.64 | 3.97 |
| MRVL | 249.29 | 230.81 | -7.41 | 09:30 | 10:42 | 570 | 642 | 6.5 | 6.42 |
| MU | 984.31 | 938.95 | -4.61 | 15:59 | 10:41 | 959 | 641 | 5.65 | 41.6 |
| NVDA | 195.62 | 196.93 | 0.67 | 13:07 | 10:35 | 787 | 635 | 3.8 | 19.95 |
| SNDK | 1743.08 | 1619.26 | -7.1 | 09:30 | 10:42 | 570 | 642 | 10.36 | 19.73 |
| SOXL | 194.77 | 165.27 | -15.15 | 09:30 | 10:44 | 570 | 644 | 14.53 | 10.8 |
| SOXS | 4.16 | 4.82 | 15.87 | 10:42 | 09:30 | 642 | 570 | 10.3 | 2.78 |
| STX | 869.5 | 827.4 | -4.84 | 09:45 | 10:44 | 585 | 644 | 6.58 | 3.1 |
| TER | 379.66 | 343.1 | -9.63 | 09:30 | 10:41 | 570 | 641 | 9.98 | 1.59 |
| WDC | 577.46 | 532.34 | -7.81 | 09:30 | 11:00 | 570 | 660 | 7.76 | 3.73 |
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-07 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-07 00:00:00') AS day_low,
argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-07 00:00:00') AS low_bar,
argMaxIf(window_start, (toFloat64(high), -toInt64(toUnixTimestamp(window_start))), window_start >= '2026-07-07 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AMD', 'AVGO', 'INTC', 'KLAC', 'LRCX', 'MRVL', 'MU', 'NVDA', 'SNDK', 'SOXL', 'SOXS', 'STX', 'TER', 'WDC')
AND ((window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round(day_close, 2) AS day_close,
round((day_close / prior_close - 1) * 100, 2) AS pct_chg,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
toHour(toTimeZone(high_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(high_bar, 'America/New_York')) AS high_minute_et,
toHour(toTimeZone(low_bar, 'America/New_York')) * 60 + toMinute(toTimeZone(low_bar, 'America/New_York')) AS low_minute_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerTeradyne (-9.63%) e Intel (-9.59%) perdieron casi una décima parte de su valor. Marvell (-7.41%), KLA (-7.23%), Lam Research (-6.8%) y AMD (-6.41%) quedaron cerca. Las acciones de memoria y almacenamiento que rebotaron parcialmente el lunes volvieron a caer: SanDisk -7.1% dentro de un rango máximo-mínimo de 10.36%, Western Digital -7.81%, Seagate -4.84% y MU -4.61%. MU negoció $41.6 mil millones en acciones, más que las otras tres empresas de almacenamiento juntas (el análisis detallado de MU explica los antecedentes).
Los dos gigantes del sector no participaron en la caída: NVDA cerró al alza en 0.67% y Broadcom terminó prácticamente sin cambios en -0.83%. Fue una jornada negativa para todo el sector, salvo sus mayores integrantes (el análisis detallado de NVDA en junio).
El movimiento fue sincronizado, con un solo vacío de liquidez matutino: TER, LRCX y MU marcaron sus mínimos de la sesión a las 10:41, 10:41 y 10:41 ET, respectivamente. SanDisk, Marvell, KLA, AVGO y SOXL lo hicieron dentro de los mismos minutos; el panel muestra cada marca temporal. SOXS, el ETF inverso de semiconductores 3x, marcó su máximo de la sesión a las 10:42: fue el mismo movimiento, pero en sentido contrario. Intel siguió cayendo mucho después de que el resto se estabilizara y marcó su mínimo a las 15:18. Los ETFs apalancados reflejan la magnitud: SOXL -15.15% frente a SOXS +15.87%.
El otro lado del mercado
Incluso con una proporción de dos a uno de acciones a la baja, una tercera parte terminó al alza. Esto fue lo que subió mientras caían las acciones de semiconductores:
| ticker | cierre previo | apertura del día | cierre del día | brecha (%) | intradía (%) | cambio (%) | volumen diario en dólares (miles de millones) |
|---|---|---|---|---|---|---|---|
| CRNX | 42.02 | 83.58 | 83.53 | 98.91 | -0.06 | 98.79 | 4.19 |
| CVX | 168.13 | 170.14 | 173.97 | 1.2 | 2.25 | 3.47 | 1.21 |
| JNJ | 259.33 | 264.89 | 267.29 | 2.14 | 0.91 | 3.07 | 1.92 |
| LLY | 1202.56 | 1232.88 | 1235.64 | 2.52 | 0.22 | 2.75 | 2.87 |
| META | 600.43 | 607.59 | 615.57 | 1.19 | 1.31 | 2.52 | 9.73 |
| TSLA | 419.77 | 416.96 | 402.88 | -0.67 | -3.38 | -4.02 | 13.36 |
| UNH | 418.1 | 423.95 | 428.18 | 1.4 | 1 | 2.41 | 1.61 |
| XOM | 136.49 | 138.56 | 141.65 | 1.52 | 2.23 | 3.78 | 1.63 |
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-07 00:00:00')) AS prior_close_raw,
toFloat64(argMinIf(open, window_start, window_start >= '2026-07-07 00:00:00')) AS day_open_raw,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-07 00:00:00')) AS day_close_raw,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-07 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('CRNX', 'CVX', 'JNJ', 'LLY', 'META', 'TSLA', 'UNH', 'XOM')
AND ((window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00')
OR (window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'))
GROUP BY ticker
)
SELECT
ticker,
round(prior_close_raw, 2) AS prior_close,
round(day_open_raw, 2) AS day_open,
round(day_close_raw, 2) AS day_close,
round((day_open_raw / prior_close_raw - 1) * 100, 2) AS gap_pct,
round((day_close_raw / day_open_raw - 1) * 100, 2) AS intraday_pct,
round((day_close_raw / prior_close_raw - 1) * 100, 2) AS pct_chg,
day_dollar_bn
FROM per_name
ORDER BY tickerEnergía y salud sostuvieron la columna de avances: Exxon +3.78%, Chevron +3.47%, Johnson & Johnson +3.07%, Eli Lilly +2.75% y UnitedHealth +2.41%. Las dos megacaps de este panel tomaron direcciones opuestas: META subió +2.52%, mientras TSLA devolvió la mayor parte de la subida unidireccional del lunes en -4.02%. Y la operación individual más destacada del mercado fue la de Crinetics Pharmaceuticals (CRNX), que cerró +98.79% con $4.19 mil millones negociados, casi el doble. Todo el movimiento se produjo como un gap al alza durante la noche (98.91% en la apertura; la sesión regular lo movió apenas -0.06%), el tipo de reajuste de valoración entre sesiones que ocurre donde se negocia antes de la apertura. Los datos no indican por qué.
Dónde se concentró el flujo de dinero
| clasificación | ticker | volumen en dólares (bn) | acciones (m) | % del líder del tablero |
|---|---|---|---|---|
| by dollars traded | MU | 41.6 | 45.3 | 100 |
| by dollars traded | SPY | 28.68 | 38.4 | 68.9 |
| by dollars traded | QQQ | 26.54 | 37.4 | 63.8 |
| by dollars traded | NVDA | 19.95 | 102.4 | 48 |
| by dollars traded | SNDK | 19.73 | 12.5 | 47.4 |
| by dollars traded | INTC | 13.82 | 124.8 | 33.2 |
| by shares traded | SOXS | 2.78 | 566.3 | 100 |
| by shares traded | BITO | 3.47 | 402.2 | 71 |
| by shares traded | TZA | 1.1 | 278.8 | 49.2 |
| by shares traded | CPOP | 0.02 | 161.3 | 28.5 |
El SQL exacto detrás de cada cifra
SELECT leaderboard, ticker, dollar_volume_bn, shares_m,
round(100 * if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)
/ max(if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m)) OVER (PARTITION BY leaderboard), 1) AS pct_of_board_leader
FROM (
SELECT
'by dollars traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_volume_bn DESC
LIMIT 6
UNION ALL
SELECT
'by shares traded' AS leaderboard,
ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 2) AS dollar_volume_bn,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY shares_m DESC
LIMIT 4
)
ORDER BY leaderboard ASC, if(leaderboard = 'by dollars traded', dollar_volume_bn, shares_m) DESCMU encabezó el volumen negociado en dólares, con $41.6 mil millones. Una sesión después de ceder el primer lugar, lo recuperó. SPY ($28.68 mil millones) y QQQ ($26.54 mil millones) quedaron detrás, mientras que otros tres nombres de semiconductores, NVDA ($19.95 mil millones), SNDK ($19.73 mil millones) y INTC ($13.82 mil millones), completaron los seis primeros puestos. La concentración del volumen negociado en acciones individuales es lo que señala el volumen relativo.
En el tablero por número de acciones, SOXS negoció 566.3 millones de acciones. El ETF inverso 3x de semiconductores encabezó el recuento por tercera sesión consecutiva (lunes y jueves registraron los prints anteriores), esta vez el mismo día en que su sector efectivamente rompió a la baja. CPOP ofrece la lección contraria: se negociaron 161.3 millones de acciones por apenas $0.02 mil millones, porque el recuento de acciones da más peso a los valores baratos. Base: horario regular del 7 de julio; se excluye una cotización con símbolo reutilizado mientras se verifica la entidad, según sus comprobantes.
La forma de la sesión
| hora del Este | acciones (bn) | % del grupo más grande |
|---|---|---|
| 09:30 | 2 | 61.6 |
| 10:00 | 1.58 | 48.8 |
| 10:30 | 1.34 | 41.3 |
| 11:00 | 1.09 | 33.6 |
| 11:30 | 0.99 | 30.4 |
| 12:00 | 0.91 | 28.1 |
| 12:30 | 0.76 | 23.3 |
| 13:00 | 0.72 | 22.1 |
| 13:30 | 0.64 | 19.6 |
| 14:00 | 0.71 | 21.8 |
| 14:30 | 0.91 | 28.1 |
| 15:00 | 1.14 | 35.1 |
| 15:30 | 3.25 | 100 |
El SQL exacto detrás de cada cifra
SELECT
et_time,
round(sum(shares) / 1e9, 2) AS shares_bn,
round(100 * sum(shares) / max(sum(shares)) OVER (), 1) AS pct_of_biggest_bucket
FROM
(
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
toFloat64(volume) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
UNION ALL
SELECT
'15:30' AS et_time,
toFloat64(size) AS shares
FROM global_markets.stocks_trades
WHERE sip_timestamp >= '2026-07-07 20:00:00' AND sip_timestamp < '2026-07-07 20:15:00'
AND has(conditions, 8)
)
GROUP BY et_time
ORDER BY et_time2 mil millones de acciones en la primera media hora, un mínimo de 0.64 mil millones a las 13:30 y 3.25 mil millones hacia el 15:30 cierre: la sonrisa habitual, con el mayor volumen al cierre.
El flujo de opciones
| operaciones de opciones (m) | contratos (m) | calls como % del volumen | vencimiento el mismo día (%) | contratos con vencimiento el mismo día (m) | contratos de SPY (m) | contratos de QQQ (m) | contratos de INTC (m) | subyacente del contrato principal | strike del contrato principal | tipo del contrato principal | el contrato principal es call | volumen del contrato principal | precio promedio del contrato principal | strike principal menos cierre de SPY | subyacente del segundo contrato | strike del segundo contrato | tipo del segundo contrato | el segundo contrato es put | volumen del segundo contrato | precio promedio del segundo contrato | cierre de SPY menos segundo strike | ambos contratos principales vencen el mismo día | cierre de SPY |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10.6 | 61.13 | 55.6 | 31.2 | 19.08 | 12.48 | 8.36 | 0.69 | SPY | 749 | C | 1 | 873438 | 0.647 | 1.34 | SPY | 747 | P | 1 | 785834 | 0.88 | 0.66 | 2 | 747.66 |
El SQL exacto detrás de cada cifra
WITH
(
SELECT (groupArray(und), groupArray(strike), groupArray(typ), groupArray(vol), groupArray(avg_px), groupArray(is_0dte))
FROM (
SELECT any(underlying_symbol) AS und, any(toFloat64(strike_price)) AS strike, any(option_type) AS typ,
sum(size) AS vol, round(avg(toFloat64(price)), 3) AS avg_px,
if(substring(ticker, length(ticker) - 14, 6) = '260707', 1, 0) AS is_0dte
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'
GROUP BY ticker
ORDER BY vol DESC
LIMIT 2
)
) AS top2,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
) AS spy_regular_close
SELECT
round(count() / 1e6, 2) AS option_prints_m,
round(toFloat64(sum(size)) / 1e6, 2) AS contracts_m,
round(100.0 * sumIf(size, option_type = 'C') / sum(size), 1) AS call_pct_of_volume,
round(100.0 * sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260707') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260707')) / 1e6, 2) AS same_day_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'SPY')) / 1e6, 2) AS spy_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'QQQ')) / 1e6, 2) AS qqq_contracts_m,
round(toFloat64(sumIf(size, underlying_symbol = 'INTC')) / 1e6, 2) AS intc_contracts_m,
top2.1[1] AS top_contract_underlying,
top2.2[1] AS top_contract_strike,
top2.3[1] AS top_contract_type,
if(top2.3[1] = 'C', 1, 0) AS top_contract_is_call,
top2.4[1] AS top_contract_volume,
top2.5[1] AS top_contract_avg_price,
round(top2.2[1] - spy_regular_close, 2) AS top_strike_minus_spy_close,
top2.1[2] AS second_contract_underlying,
top2.2[2] AS second_contract_strike,
top2.3[2] AS second_contract_type,
if(top2.3[2] = 'P', 1, 0) AS second_contract_is_put,
top2.4[2] AS second_contract_volume,
top2.5[2] AS second_contract_avg_price,
round(spy_regular_close - top2.2[2], 2) AS spy_close_minus_second_strike,
top2.6[1] + top2.6[2] AS both_top_contracts_same_day,
spy_regular_close AS spy_close
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-07 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'Se negociaron opciones por 61.13 millones de contratos en 10.6 millones de operaciones ejecutadas, un flujo del tamaño del de el lunes, y las calls todavía representaron 55.6% del volumen pese a que fue una jornada bajista. Los vencimientos del mismo día representaron 31.2% del flujo (19.08 millones de contratos), la proporción de 0DTE de un martes normal. Los dos contratos más negociados del día quedaron a ambos lados del cierre; ambos eran strikes SPY con vencimiento el mismo día: la call de $749 (873438 contratos a un precio promedio de $0.647) terminó $1.34 fuera de dinero, y la put de $747 (785834 contratos a $0.88) terminó $0.66 fuera de dinero en el lado opuesto. El cierre de SPY en 747.66 quedó entre las dos mayores apuestas del día, y ambas vencieron sin valor.
La cinta de cotizaciones
Debajo de cada precio de esta página está el flujo de cotizaciones: el National Best Bid and Offer, recotizado continuamente para cada valor listado. Es el conjunto de datos más difícil de obtener en este repositorio. Aquí se mide en cada sesión, sea normal o no.
| actualizaciones del 7 de julio (M) | actualizaciones del 6 de julio (M) | variación diaria (%) | minuto de la última cotización del 7 de julio (ET) | actualizaciones en la hora de cierre del 7 de julio (M) |
|---|---|---|---|---|
| 492.76 | 391.96 | 25.7 | 1199 | 77.13 |
El SQL exacto detrás de cada cifra
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / 1e6, 2) AS jul7_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-06')) / 1e6, 2) AS jul6_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-07')) / countIf(toDate(sip_timestamp) = toDate('2026-07-06')) - 1) * 100, 1) AS day_over_day_pct,
toHour(toTimeZone(maxIf(sip_timestamp, toDate(sip_timestamp) = toDate('2026-07-07')), 'America/New_York')) * 60
+ toMinute(toTimeZone(maxIf(sip_timestamp, toDate(sip_timestamp) = toDate('2026-07-07')), 'America/New_York')) AS jul7_last_quote_et_minute,
round(countIf(sip_timestamp >= '2026-07-07 19:00:00' AND sip_timestamp < '2026-07-07 20:00:00') / 1e6, 2) AS jul7_close_hour_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-08 00:00:00'La cinta de acciones registró 492.76 millones de actualizaciones del NBBO el 7 de julio, 25.7% más que los 391.96 millones del lunes. Hubo más recotizaciones, no cotizaciones más amplias:
| ticker | spread de Pocket (pb) | spread de mediodía (pb) | variación del spread (pb) | actualizaciones de Pocket (K) | actualizaciones de mediodía (K) | ratio de frecuencia de cotizaciones | actualizaciones de la sesión (M) | cotizaciones no válidas descartadas |
|---|---|---|---|---|---|---|---|---|
| AMD | 9.11 | 6.51 | 2.6 | 13.2 | 2.9 | 4.6 | 0.27 | 101 |
| INTC | 2.75 | 1.8 | 0.95 | 90.6 | 38.4 | 2.4 | 2.18 | 3498 |
| MU | 5.02 | 4.81 | 0.21 | 51.8 | 15.2 | 3.4 | 0.96 | 430 |
| NVDA | 1.04 | 1.01 | 0.03 | 122 | 44 | 2.8 | 2.41 | 266 |
| QQQ | 0.42 | 0.28 | 0.14 | 281.3 | 143.3 | 2 | 5.54 | 391 |
| SNDK | 8.65 | 8.89 | -0.24 | 19.1 | 4.6 | 4.1 | 0.3 | 91 |
| SOXL | 9.89 | 12.48 | -2.59 | 41.1 | 16.9 | 2.4 | 1.11 | 339 |
| SOXS | 19.59 | 21.07 | -1.49 | 50.1 | 13.4 | 3.8 | 0.95 | 0 |
| SPY | 0.27 | 0.27 | 0 | 237.9 | 70.6 | 3.4 | 4.23 | 803 |
| WDC | 10.77 | 12.01 | -1.25 | 6.3 | 2.3 | 2.7 | 0.13 | 22 |
El SQL exacto detrás de cada cifra
SELECT
ticker,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00'), 2) AS pocket_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 2) AS midday_spread_bps,
round(quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00')
- quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, bid_price > 0 AND ask_price >= bid_price AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 2) AS spread_delta_bps,
round(countIf(sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / 1e3, 1) AS pocket_updates_k,
round(countIf(sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00') / 1e3, 1) AS midday_updates_k,
round(countIf(sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / countIf(sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 1) AS quote_rate_ratio,
round(count() / 1e6, 2) AS session_updates_m,
countIf(bid_price <= 0 OR ask_price <= 0 OR bid_price > ask_price) AS dropped_invalid_quotes
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AMD', 'INTC', 'MU', 'NVDA', 'QQQ', 'SNDK', 'SOXL', 'SOXS', 'SPY', 'WDC')
AND sip_timestamp >= '2026-07-07 13:30:00' AND sip_timestamp < '2026-07-07 20:00:00'
GROUP BY ticker
ORDER BY tickerEn los mínimos de la mañana, los valores revisados se recotizaron a múltiplos de su ritmo del mediodía: MU, 3.4x; SanDisk, 4.1x; AMD, 4.6x. El spread entre bid y ask apenas se movió: el ancho mediano de MU fue de 5.02 bps en el tramo frente a 4.81 bps al mediodía; el de NVDA, 1.04 frente a 1.01; y el de SPY no cambió en absoluto (variación de 0 bps sobre un touch de 0.27 bps). Los dos valores que pagaron una penalización real por amplitud fueron AMD (+2.6 bps) e Intel (+0.95). Intel fue el único que siguió cayendo después del tramo, mientras que el par apalancado en realidad se estrechó en el mínimo (SOXL, -2.59 bps; SOXS, -1.49). Un vacío de liquidez se manifiesta con cotizaciones amplias y silencio. Esto fue lo contrario: una tormenta de cotizaciones con el touch prácticamente fijo. Aun así, los costos de cruzar el spread siguieron dependiendo del valor: SOXS cotizó con un ancho de 19.59 bps en el mínimo, frente a 1.04 bps de NVDA.
| spread promedio del 7 de julio (centavos) | rango de menor spread | sesiones comparadas | sesión con menor spread (centavos) | sesión con mayor spread (centavos) | primera sesión | cotizaciones no válidas descartadas |
|---|---|---|---|---|---|---|
| 1.809 | 1 | 21 | 1.809 | 2.865 | 2026-06-05 | 41883 |
El SQL exacto detrás de cada cifra
SELECT
round(anyIf(avg_spread_cents, d = toDate('2026-07-07')), 3) AS jul7_avg_spread_cents,
arrayCount(x -> x < anyIf(avg_spread_cents, d = toDate('2026-07-07')), groupArrayIf(avg_spread_cents, d != toDate('2026-07-07'))) + 1 AS tightness_rank,
count() AS sessions_compared,
round(min(avg_spread_cents), 3) AS tightest_session_cents,
round(max(avg_spread_cents), 3) AS widest_session_cents,
toString(min(d)) AS first_session,
sum(dropped_invalid) AS dropped_invalid_quotes
FROM (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS d,
avgIf(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100 AS avg_spread_cents,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)) AS dropped_invalid
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2026-06-05 00:00:00')
AND sip_timestamp < toDateTime('2026-07-08 00:00:00')
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY d
)Y está la comprobación habitual que esta sección ejecuta en cada sesión: según el spread cotizado promedio ponderado por actualizaciones, el 7 de julio fue la sesión más estrecha de SPY en el último mes, con 1.809 centavos, en el puesto 1 de 21, frente a un mes que alcanzó 2.865 centavos en su punto más amplio. Una cinta roja de dos a uno, con precio en el touch del índice más estrecho del mes, es un hecho que solo puede confirmar el flujo de cotizaciones.
| filas de cotizaciones de opciones del 7 de julio | actualizaciones de cotizaciones de opciones del 7 de julio (B) | actualizaciones de cotizaciones de opciones del 6 de julio (B) | variación diaria (%) | actualizaciones de cotizaciones de acciones del 7 de julio (M) | ratio de opciones a acciones del 7 de julio |
|---|---|---|---|---|---|
| 8694614147 | 8.69 | 6.49 | 34 | 492.76 | 17.6 |
El SQL exacto detrás de cada cifra
WITH
(
SELECT count()
FROM global_markets.cache_options_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260707
) AS jul7_option_rows,
(
SELECT count()
FROM global_markets.cache_options_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260706
) AS jul6_option_rows,
(
SELECT count()
FROM global_markets.cache_stocks_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260707
) AS jul7_stock_quote_rows
SELECT
jul7_option_rows AS jul7_option_quote_rows,
round(jul7_option_rows / 1e9, 2) AS jul7_option_quote_updates_bn,
round(jul6_option_rows / 1e9, 2) AS jul6_option_quote_updates_bn,
round((jul7_option_rows / jul6_option_rows - 1) * 100, 1) AS day_over_day_pct,
round(jul7_stock_quote_rows / 1e6, 2) AS jul7_stock_quote_updates_m,
round(jul7_option_rows / jul7_stock_quote_rows, 1) AS jul7_option_to_stock_ratioEl flujo de cotizaciones de opciones es aún mayor y constituye el conjunto de datos más grande de este repositorio. El 7 de julio registró 8.69 mil millones de actualizaciones del NBBO de opciones, 17.6 veces el tamaño de toda la cinta de cotizaciones de acciones de esa misma sesión (492.76 millones de actualizaciones). La cinta de opciones del lunes registró 6.49 mil millones, de modo que el flujo de opciones aumentó 34% de una sesión a otra, junto con el aumento de 25.7% del flujo de acciones.
| actualizaciones de opciones de SPY (M) | % del flujo total de cotizaciones de acciones | contratos de SPY cotizados | actualizaciones del mismo día (M) | precio de SPY en Pocket | precio de SPY al mediodía | spread ATM en Pocket ($) | spread ATM de mediodía ($) | variación del spread ATM ($) | actualizaciones ATM acumuladas (miles) | actualizaciones ATM del mediodía (miles) | proporción de cotizaciones ATM | cotizaciones intradía no válidas descartadas |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 327.55 | 66.5 | 9116 | 13.61 | 746 | 749.08 | 0.01 | 0.01 | 0 | 191.1 | 64 | 3 | 42872 |
El SQL exacto detrás de cada cifra
WITH
(
SELECT count()
FROM global_markets.cache_stocks_quotes
WHERE toYYYYMMDD(sip_timestamp) = 20260707
) AS jul7_stock_quote_rows,
(
SELECT round(toFloat64(avg(close)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-07-07 14:36:00' AND window_start < '2026-07-07 14:48:00'
) AS spy_pocket_price,
(
SELECT round(toFloat64(avg(close)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-07-07 17:30:00' AND window_start < '2026-07-07 17:42:00'
) AS spy_midday_price
SELECT
round(count() / 1e6, 2) AS spy_option_updates_m,
round(100.0 * count() / jul7_stock_quote_rows, 1) AS pct_of_whole_equity_quote_tape,
uniqExact(ticker) AS spy_contracts_quoted,
round(countIf(substring(ticker, -15, 6) = '260707') / 1e6, 2) AS same_day_updates_m,
spy_pocket_price AS spy_price_in_pocket,
spy_midday_price AS spy_price_midday,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price),
bid_price > 0 AND ask_price >= bid_price
AND substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_pocket_price) <= 2
AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00'), 3) AS pocket_atm_spread_dollars,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price),
bid_price > 0 AND ask_price >= bid_price
AND substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_midday_price) <= 2
AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00'), 3) AS midday_atm_spread_dollars,
round(pocket_atm_spread_dollars - midday_atm_spread_dollars, 3) AS atm_spread_delta_dollars,
round(countIf(substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_pocket_price) <= 2
AND sip_timestamp >= '2026-07-07 14:36:00' AND sip_timestamp < '2026-07-07 14:48:00') / 1e3, 1) AS pocket_atm_updates_k,
round(countIf(substring(ticker, -15, 6) = '260707'
AND abs(toFloat64(toUInt32OrZero(substring(ticker, -8))) / 1000 - spy_midday_price) <= 2
AND sip_timestamp >= '2026-07-07 17:30:00' AND sip_timestamp < '2026-07-07 17:42:00') / 1e3, 1) AS midday_atm_updates_k,
round(pocket_atm_updates_k / midday_atm_updates_k, 1) AS atm_quote_rate_ratio,
countIf(NOT (bid_price > 0 AND ask_price >= bid_price)
AND substring(ticker, -15, 6) = '260707') AS dropped_invalid_same_day_quotes
FROM global_markets.cache_options_quotes
WHERE ticker >= 'O:SPY26' AND ticker < 'O:SPY27'
AND sip_timestamp >= '2026-07-07 13:30:00' AND sip_timestamp < '2026-07-07 20:00:00'
HAVING pocket_atm_updates_k > 0 AND midday_atm_updates_k > 0Por sí solos, los contratos de SPY con vencimiento en 2026 generaron 327.55 millones de esas actualizaciones durante el horario regular, distribuidas entre 9116 contratos listados. Eso representa 66.5% de todo lo que cotizó el mercado accionario en esa misma sesión, desde un solo activo subyacente. Los vencimientos del mismo día que componen la cinta de 0DTE representan 13.61 millones de ellas.
Durante los doce minutos del bache de liquidez matutino, los contratos del mismo día cercanos al precio de ejercicio cotizaron con un ancho mediano de $0.01, exactamente el mismo ancho que registraron en el control del mediodía ($0.01, una diferencia de 0). El ritmo de cotización en ese mismo par fue de 3x: 191.1 mil actualizaciones en los mínimos, frente a 64 mil al mediodía. El touch de las opciones hizo lo mismo que el touch de las acciones: mantuvo su ancho mientras la maquinaria de cotización operaba a máxima intensidad. «Cercano al precio de ejercicio» significa un strike situado dentro de $2 del precio promedio de SPY en esa misma ventana. El panel muestra ambos precios (746 en el tramo y 749.08 al mediodía).
Tasas: la curva se vendió junto con los activos de crecimiento
| punto de la curva | rendimiento del 7 de julio (%) | cambio de la sesión (pb) |
|---|---|---|
| 1 month | 3.69 | 0 |
| 3 month | 3.86 | -1 |
| 1 year | 4.06 | 11 |
| 2 year | 4.19 | 6 |
| 5 year | 4.27 | 6 |
| 10 year | 4.55 | 7 |
| 30 year | 5.05 | 6 |
| 2s10s spread | 0.36 | 1 |
El SQL exacto detrás de cada cifra
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul7_yield_pct,
round((t.2 - t.3) * 100) AS session_change_bp
FROM (
SELECT arrayJoin([
('1 month', toFloat64(d.yield_1_month), toFloat64(p.yield_1_month)),
('3 month', toFloat64(d.yield_3_month), toFloat64(p.yield_3_month)),
('1 year', toFloat64(d.yield_1_year), toFloat64(p.yield_1_year)),
('2 year', toFloat64(d.yield_2_year), toFloat64(p.yield_2_year)),
('5 year', toFloat64(d.yield_5_year), toFloat64(p.yield_5_year)),
('10 year', toFloat64(d.yield_10_year), toFloat64(p.yield_10_year)),
('30 year', toFloat64(d.yield_30_year), toFloat64(p.yield_30_year)),
('2s10s spread', toFloat64(d.yield_10_year - d.yield_2_year), toFloat64(p.yield_10_year - p.yield_2_year))
]) AS t
FROM (SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-07') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-06') AS p
)Los Treasuries se vendieron junto con los activos de crecimiento. El rendimiento del bono a un año subió 11 puntos básicos hasta 4.06%; el del bono a 10 años, 7 hasta 4.55%; y el del bono a 30 años, 6 hasta 5.05%, por encima del nivel del cinco por ciento. El spread 2s10s se mantuvo en 0.36 puntos porcentuales (1 punto básico de variación): un movimiento mayormente paralelo, no un cambio en la forma de la curva.
El calendario detrás de la jornada
| registros exdividendo | splits ejecutados | splits inversos | splits directos | OPI listadas | presentaciones ante la SEC | presentaciones Form 4 de insiders | presentaciones 8-K | artículos de noticias | medios de noticias | ticker más cubierto | el más cubierto es NVDA | artículos sobre el más cubierto | ventaja del más cubierto sobre el siguiente | artículos sobre CRNX |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 80 | 7 | 5 | 2 | 1 | 2438 | 463 | 173 | 215 | 3 | NVDA | 1 | 17 | 4 | 0 |
El SQL exacto detrás de cada cifra
WITH
(
SELECT (count(), uniqExact(publisher))
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-07'
) AS news,
(
SELECT (argMax(t, n), max(n), max(n) - arraySort(x -> -x, groupArray(n))[2])
FROM (
SELECT t, count() AS n
FROM (
SELECT arrayJoin(tickers) AS t
FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-07'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-07') AS ex_dividend_records,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS splits_executed,
(SELECT countIf(toFloat64(split_from) > toFloat64(split_to)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS reverse_splits,
(SELECT countIf(toFloat64(split_to) > toFloat64(split_from)) FROM global_markets.stocks_splits WHERE execution_date = '2026-07-07') AS forward_splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-07') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-07') AS filings_8k,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
if(top_news.1 = 'NVDA', 1, 0) AS most_covered_is_nvda,
top_news.2 AS most_covered_articles,
top_news.3 AS most_covered_lead_over_next,
(SELECT countIf(has(tickers, 'CRNX')) FROM global_markets.stocks_news
WHERE toDate(toTimeZone(published_utc, 'America/New_York')) = '2026-07-07') AS crnx_articles80 registros de dividendos pasaron a cotizar ex-dividendo, se ejecutaron 7 splits, 5 de ellos fueron reverse splits, las consolidaciones por debajo de un dólar que simulan “ganancias” de tres dígitos en una cinta no ajustada, frente a 2 splits forward, y se produjo 1 nueva admisión a cotización. El índice de la SEC registró 2438 presentaciones: 463 Form 4s y 173 formularios 8-K. Nuestro feed de noticias publicó 215 artículos de 3 medios; el nombre más cubierto fue NVDA, con 17 artículos, 4 por encima del siguiente nombre: la misma NVDA que cerró al alza durante una jornada bajista para su sector. El feed publicó 0 artículos sobre CRNX, la mayor ganadora de la cinta; fue la atención de un feed, no la de todos los medios.
La sesión, verificado
| primera barra de SPY (ET) | última barra de SPY (ET) | barras de SPY por minuto | barras de la sesión regular | sesiones del día | filas del feriado del 7 de julio | fecha del próximo cierre | nombre del próximo cierre |
|---|---|---|---|---|---|---|---|
| 04:00 | 19:59 | 902 | 390 | 1 | 0 | 2026-09-07 | Labor Day |
El SQL exacto detrás de cada cifra
SELECT
formatDateTime(min(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS first_spy_bar_et,
formatDateTime(max(toTimeZone(window_start, 'America/New_York')), '%H:%i') AS last_spy_bar_et,
count() AS spy_minute_bars,
countIf(window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.stocks_market_holidays WHERE date = '2026-07-07') AS jul7_holiday_rows,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-07' AND status = 'closed') AS next_closure_date,
(SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-07' AND status = 'closed') AS next_closure_name
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-07 00:00:00' AND window_start < '2026-07-08 00:00:00'El 7 de julio fue una sesión completa, no un cierre anticipado: las barras de SPY abarcan de 04:00 a 19:59, hora de Nueva York, con exactamente 390 barras dentro del horario regular. La tabla de feriados registra 0 filas para esa fecha. El próximo cierre programado es Labor Day, 2026-09-07.
Notas sobre los datos
- El volumen en dólares es un indicador por minuto: cierre × volumen, sumado en cada barra de un minuto durante el horario regular.
- La última media hora del panel de volumen incluye las operaciones de la subasta de cierre. Las barras de un minuto excluyen todas las operaciones de subasta. Por eso, el panel de media hora suma en su último intervalo cada operación con la condición de venta de cierre, registrada entre las 4:00 y las 4:15 p. m., hora del Este, en la cinta consolidada.
- La separación entre gap y movimiento gradual se mide desde la primera barra de cada acción en la sesión regular —la apertura— frente al último cierre regular de la sesión anterior. El resto corresponde al movimiento entre la apertura y el cierre dentro del 7 de julio.
- Los mínimos matutinos sincronizados se contrastaron con las barras adyacentes al momento de redactar el artículo. Cada mínimo está respaldado por sus minutos vecinos y no por una operación aislada. Ninguno justificó un comprobante de anomalía. Cuando un extremo se registró durante más de un minuto, el panel muestra la primera barra en la que apareció, como criterio determinista para resolver empates.
- Una cotización con ticker reutilizado queda excluida de las clasificaciones de líderes por volumen y de la mención en las noticias mientras se verifica la entidad; su propia publicación incluye los comprobantes.
- Las estadísticas de spread cotizado excluyen las cotizaciones inválidas —registros NBBO unilaterales o cruzados—, y cada panel de spreads contabiliza en una columna propia lo que descarta. El «spread promedio ponderado por actualizaciones» promedia el ancho cotizado en cada actualización NBBO válida; los momentos de mayor actividad tienen más peso. Es una estadística de cotización, no un costo por operación.
- Las cotizaciones de opciones del 7 de julio llegaron después de la primera publicación de este artículo.
cache_options_quotesregistra el mayor retraso de ingestión del almacén de datos, por lo que la primera edición incluyó un comprobante acotado de cero filas en el lugar que ahora ocupan los paneles de cotizaciones de opciones. Las filas llegaron, el límite de cero filas falló al regenerar los datos y esta revisión muestra las 8.69 actualizaciones de la sesión, por un total de miles de millones. La cinta de cotizaciones de acciones estaba completa desde el inicio: su última actualización del 7 de julio se registró en el minuto ET 1199, con 77.13 millones de actualizaciones durante la última hora regular. Las columnas de comprobantes aparecen en el panel de la cinta de cotizaciones. - Los anchos cotizados de las opciones se miden cerca del precio at-the-money. La mediana por actualización de todos los contratos cotizados del mismo día es una estadística de composición: los contratos deep in-the-money cotizan con spreads de varios dólares, los contratos far out-of-the-money con spreads de centavos y los contratos que vuelven a cotizar cambian durante la sesión. La comparación entre el inicio y el periodo de mediodía se limita a los strikes situados dentro de $2 del precio promedio de SPY en cada ventana; ambos precios aparecen como columnas en el panel. Las cotizaciones de opciones inválidas —unilaterales o cruzadas— se contabilizan en ese panel y no se eliminan de forma silenciosa.
- La operación de tesorería del 7 de julio se incorporó con un día de retraso de sesión. La primera edición incluyó un comprobante con el retraso declarado. Su alerta se activó el 8 de julio, cuando llegó la operación, y esta revisión muestra la curva efectiva.
Metodología
- El periodo es una sola sesión bursátil (1 sesión, verificada a partir de las barras observadas y del calendario de feriados; nunca se supone). Las marcas de tiempo se almacenan en UTC y se convierten a la hora de Nueva York dentro de las consultas. “Cierre” significa la última barra de un minuto de la sesión regular; los cambios diarios comparan el 7 de julio con el 6 de julio, que son sesiones bursátiles consecutivas.
- Las columnas decimales se convierten a floats de 64 bits antes de realizar operaciones de ratios; los vencimientos de las opciones se vuelven a analizar a partir del ticker de OCC, porque la columna de vencimiento de la tabla está dañada. Todos los paneles se leen una sola vez, al momento de redactar, mediante la ruta de acceso de solo lectura controlada. Estado del warehouse al 8 de julio de 2026.
- La sección de la cinta de cotizaciones se añadió en la revisión del 8 de julio —la misma revisión que sustituyó el comprobante del rezago de Treasury por el print ejecutado—, y sus paneles de cotizaciones de opciones se reescribieron una vez que se incorporaron las propias filas de NBBO de opciones del 7 de julio. La generación es un batch job por diseño: el panel de cotizaciones de opciones de SPY recorre unos cientos de millones de registros NBBO, mientras que los conteos del tamaño de los prints de la cinta leen los totales de filas de las particiones del día, lo que permite que una tabla con miles de millones de filas por sesión responda a un conteo en menos de un segundo.
Cada panel es el resultado de una consulta almacenada; el gráfico, la tabla y el SQL forman un solo objeto. Pega cualquiera de ellos en la terminal de Strasmore y hazlo tuyo. Sesión anterior: 7 de julio.