Resumen del mercado 7 de julio de 2026
Los semiconductores cayeron con fuerza afectando al índice mientras NVDA subió. El spread del SPY fue el más ajustado del mes y el tape cerró dos a uno en rojo.
El martes 7 de julio de 2026 revirtió la subida de crecimiento de la apertura del lunes y fue más allá: el QQQ cerró en -1.82%, borrando más de la ganancia del lunes, frente al -0.29% del DIA. En el mercado, la relación de acciones fue de dos a uno en rojo: 4034 declinantes líquidas frente a 2091 avanzantes. El evento principal fue una caída en el sector de semiconductores varias veces superior al tamaño del índice, en la que uno de los gigantes del sector no participó. Cada cifra a continuación proviene de una consulta almacenada; expanda cualquier panel para ver el SQL exacto.
El marcador
Cada cambio compara el último minuto de la sesión regular del 7 de julio con el del lunes 6 de julio; sesiones de trading consecutivas.
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 lideró la caída de los cuatro ETFs de índices; SPY cerró -0.48%, IWM -0.9%, y el -0.29% de DIA fue el resultado más leve. La diferencia entre el gap y el movimiento sostenido (grind) muestra que los dos extremos del mercado no coincidieron 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 causó la mayor parte del daño — mientras que DIA tuvo un gap al alza de 0.47% y aun así cerró en rojo, con un movimiento de apertura a cierre de -0.76%. El liderazgo ha cambiado cada sesión desde el jueves: DIA lideró el jueves, QQQ lideró el lunes, y DIA lideró nuevamente el martes.
¿Fue un día inusual?
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 índices, no especialmente. El movimiento de cierre sobre cierre de QQQ del -1.82% se sitúa en el 9 de las 21 sesiones anteriores en términos de magnitud absoluta, y el movimiento de apertura a cierre de SPY del -0.34% se sitúa en el 15 de las 21 — un mes de seguimiento que incluye las oscilaciones complejas de finales de junio que establece un estándar alto. La dispersión subyacente es donde el 7 de julio destacó.
Amplitud: dos caídas por cada una subida
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 avances, 4034 caídas, 59 sin cambios — el 33.8% de la cinta líquida subió, lo cual revirtió la tendencia alcista del lunes. El filtro excluye el 5276 de los 11460 tickers con doble sesión con un volumen inferior a un millón de dólares.
El sector de los chips colapsó, excepto sus nombres más grandes
Las ventas se concentraron en los semiconductores: fabricantes de chips, empresas de equipamiento que los suministran, el complejo de almacenamiento relacionado y los ETF apalancados derivados. Se reporta la correlación y la magnitud a continuación; los datos no explican la causa.
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, seguidos de cerca por Marvell (-7.41%), KLA (-7.23%), Lam Research (-6.8%) y AMD (-6.41%). Los valores de memoria y almacenamiento que rebotaron a la mitad el lunes volvieron a caer: SanDisk -7.1% en un rango de 10.36% entre máximo y mínimo, Western Digital -7.81%, Seagate -4.84% y MU -4.61% — con MU registrando una rotación de $41.6 mil millones de acciones, más que los otros tres valores de almacenamiento combinados (el análisis profundo de MU contiene el contexto).
Los dos gigantes del sector no se vieron afectados: NVDA cerró en verde en 0.67% y Broadcom terminó casi sin cambios en -0.83% — un día rojo para todo el sector, excepto para sus miembros más grandes (el análisis profundo de NVDA de junio).
El momento fue sincronizado — un vacío de liquidez matutino: TER, LRCX y MU registraron sus mínimos de sesión en 10:41, 10:41 y 10:41 ET, con SanDisk, Marvell, KLA, AVGO y SOXL dentro de los mismos minutos (el panel contiene cada marca), y SOXS, el ETF inverso de semiconductores de 3x, registró su máximo de sesión en 10:42 — el movimiento inverso. Intel continuó cayendo mucho después de que el resto se estabilizara, alcanzando su mínimo en 15:18. Los productos apalancados reflejan la magnitud: SOXL -15.15% frente a SOXS +15.87%.
El otro lado de la cinta
Una relación de dos contra uno en rojo aún mantiene un tercer sector en verde. Lo que subió mientras los semiconductores caían:
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 lideraron la columna verde: Exxon +3.78%, Chevron +3.47%, Johnson & Johnson +3.07%, Eli Lilly +2.75%, UnitedHealth +2.41%. Las dos megacap en este panel se dividieron: META subió +2.52% mientras TSLA devolvió la mayor parte de la subida unidireccional del lunes con un -4.02%. Y el dato individual más relevante de la cinta: Crinetics Pharmaceuticals (CRNX) cerró +98.79% con 4.19 mil millones negociados, casi duplicando su valor — todo el movimiento ocurrió mediante un gap nocturno (98.91% en la apertura; la sesión regular solo lo movió un -0.06%), el tipo de reajuste entre sesiones que ocurre donde se negocia en el pre-market. Los datos no explican la causa.
Dónde se negoció el dinero
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 lideró el volumen del dólar con $41.6 mil millones — una sesión después de perder el primer puesto, recuperó el liderazgo — con SPY ($28.68 mil millones) y QQQ ($26.54 mil millones) a la siguiente, y tres nombres de semiconductores más — NVDA ($19.95 mil millones), SNDK ($19.73 mil millones) y INTC ($13.82 mil millones) — completando los seis principales. El volumen relativo señala la concentración de la rotación en acciones individuales.
En el tablero de acciones, SOXS negoció 566.3 millones de acciones — el ETF inverso 3x de semiconductores encabeza el conteo por tercera sesión consecutiva (lunes y jueves registran los datos previos), esta vez en el día en que su sector efectivamente rompió tendencia. CPOP es el contraejemplo: 161.3 millones de acciones movieron solo $0.02 mil millones — el conteo de acciones es más plano en las acciones baratas. Base: 7 de julio, horario regular; se excluye un listado con símbolo reutilizado pendiente de verificación de entidad — sus recibos.
El desarrollo de la sesión
El SQL exacto detrás de cada cifra
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(sum(toFloat64(volume)) / 1e9, 2) AS shares_bn,
round(100 * sum(toFloat64(volume)) / max(sum(toFloat64(volume))) OVER (), 1) AS pct_of_biggest_bucket
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-07 13:30:00' AND window_start < '2026-07-07 20:00:00'
GROUP BY et_time
ORDER BY et_time2 mil millones de acciones en la primera media hora, un mínimo de 0.64 mil millones en 13:30, y 2.14 mil millones hacia el cierre de 15:30; la curva habitual, con mayor volumen al cierre.
El tape de opciones
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 61.13 millones de contratos de opciones en 10.6 millones de operaciones —un volumen similar al de el lunes— y los calls siguieron representando el 55.6% del volumen en un día de caídas. Los vencimientos en el mismo día fueron el 31.2% del tape (19.08 millones de contratos) —la parte de 0DTE de un martes ordinario. Los dos contratos con mayor actividad del día cerraron cerca del cierre del mercado, ambos con strikes SPY para el mismo día: el call de $749 (873438 contratos a un promedio de $0.647) terminó $1.34 out of the money, y el put de $747 (785834 contratos a $0.88) terminó $0.66 en el lado opuesto. El cierre de SPY en 747.66 quedó entre las dos apuestas más grandes del día, y ambas expiraron sin valor.
The quote tape
Under every price on this page sits the quote stream — the National Best Bid and Offer, re-quoted continuously across every listed name, the hardest dataset in this warehouse to come by. It gets measured here every session, ordinary or not.
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'The equity tape carried 492.76 million NBBO updates on July 7 — 25.7% more than Monday's 391.96 million. More re-quoting, not wider quoting:
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 tickerAt the morning lows the checked names re-quoted at multiples of their midday pace — MU 3.4x, SanDisk 4.1x, AMD 4.6x — and the bid-ask spread barely moved: MU's median width was 5.02 bps in the pocket against 4.81 midday, NVDA's 1.04 against 1.01, and SPY's did not move at all (0 bps change on a 0.27 bps touch). The two names that paid a real width penalty were AMD (+2.6 bps) and Intel (+0.95) — Intel the one name that kept falling after the pocket — while the leveraged pair actually tightened at the bottom (SOXL -2.59 bps, SOXS -1.49). A liquidity vacuum looks like wide quotes and silence; this was the opposite — a quote storm with the touch pinned. Crossing costs stayed name-dependent all the same: SOXS quoted 19.59 bps wide at the bottom against NVDA's 1.04.
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
)And the ordinary-check this section runs every session: by update-weighted average quoted spread, July 7 was SPY's tightest session of the trailing month — 1.809 cents, rank 1 of 21, against a month that reached 2.865 cents at its widest. A two-to-one red tape priced at the month's tightest index touch is a fact only the quote stream can settle.
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_ratioThe options quote stream is larger still, and it is the biggest dataset in this warehouse. July 7 carried 8.69 billion option NBBO updates, 17.6 times the size of the same session's entire stock-quote tape (492.76 million updates). Monday's options tape held 6.49 billion, so the option stream expanded 34% session over session, alongside the equity stream's 25.7%.
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 > 0SPY's 2026-dated contracts alone took 327.55 million of those updates in regular hours, spread across 9116 listed contracts. That is 66.5% of what the entire equity market quoted the same day, from one underlying. The same-day expiries that carry the 0DTE tape account for 13.61 million of them.
Through the twelve minutes of the morning air pocket, the near-the-money same-day contracts quoted a median $0.01 wide, precisely what they quoted in the midday control ($0.01, a delta of 0). The quote rate across that same pair ran 3x: 191.1 thousand updates at the lows against 64 thousand at lunch. The option touch did what the stock touch did. It held its width while the quoting machinery ran hot. Near-the-money means a strike within $2 of SPY's average price in the same window, and the panel prints both prices (746 in the pocket, 749.08 midday).
Tasas: la curva cayó junto con el sentimiento de crecimiento
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 bonos del Tesoro sufrieron ventas junto con el sentimiento de crecimiento. El plazo de un año subió 11 puntos básicos hasta 4.06%, el de diez años 7 hasta 4.55%, y el de treinta años 6 hasta 5.05% — por encima de la línea del cinco por ciento. El spread 2s10s se mantuvo en 0.36 puntos porcentuales (un cambio de 1 puntos básicos): un movimiento mayoritariamente paralelo, no un reajuste de la curva.
El calendario detrás de la jornada
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_articlesLas fechas de registro de dividendos para 79 fueron ex-dividend, se ejecutaron 7 splits — el 5 de ellos fueron reverse splits, las consolidaciones de sub-dólar que simulan ganancias de tres dígitos en una cinta no ajustada, frente a 2 forward — y llegó el nuevo listado de 1. El índice de la SEC registró 2433 presentaciones: 463 Form 4s, 173 8-Ks. Nuestro feed de noticias incluyó 215 artículos de 3 editores; el nombre con más cobertura fue NVDA con 17 artículos, 4 por encima del siguiente nombre — la misma NVDA que cerró en verde a pesar del día rojo de su sector. El feed incluyó 0 artículos sobre CRNX, el mayor ganador de la cinta — la atención de un solo feed, no de los medios mundiales.
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,
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 temprano: las barras de SPY se extienden desde 04:00 hasta 19:59 hora de Nueva York con exactamente 390 barras de horario regular, y la tabla de días feriados contiene 0 filas para la fecha. El próximo cierre programado es el Labor Day, 2026-09-07.
Notas de datos
- El volumen en dólares es un proxy por minuto — cierre × volumen sumados por barra de un minuto, durante el horario regular.
- La división gap-versus-grind se mide desde la primera barra de la sesión regular de cada activo (la apertura) frente al último cierre regular de la sesión anterior; el resto corresponde al periodo de apertura a cierre dentro del 7 de julio.
- Los mínimos matutinos sincronizados se verificaron contra barras adyacentes al momento de la redacción — cada uno se rastrea mediante sus minutos vecinos, no mediante una impresión aislada; ninguno calificó como anomalía. Cuando un extremo se imprimió en más de un minuto, el panel muestra la primera barra de ese tipo (un desempate determinista).
- Una lista con símbolo reutilizado se excluye de los rankings de volumen y de la sección de noticias mientras se verifica la entidad; su propio post contiene las pruebas.
- Las estadísticas de quoted-spread excluyen cotizaciones inválidas (registros de NBBO de un solo lado o cruzados), y cada panel de spread cuenta lo que descarta en una columna propia. El "promedio de spread ponderado por actualización" promedia el ancho cotizado en cada actualización válida de NBBO; los momentos de alta actividad tienen mayor 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 publicación inicial de este post.
cache_options_quotestiene el mayor retraso de ingesta del almacén, por lo que la primera edición entregó un registro de fila cero donde ahora se encuentran los paneles de cotización de opciones. Las filas llegaron, el límite de fila cero falló al regenerar, y esta revisión lee los 8.69 mil millones de actualizaciones de la sesión. La cinta de cotización de acciones estuvo completa desde el inicio: su última actualización del 7 de julio se imprime en el minuto 1199 ET, con 77.13 millones de actualizaciones en la última hora regular (columnas de recepción en el panel de la cinta de cotización). - Los anchos de cotización de opciones se miden near the money. La mediana por actualización de cada contrato listado el mismo día es una estadística compuesta: los contratos deep in-the-money cotizan en dólares, los contratos far out-of-the-money cotizan en centavos, y se incluye qué contratos cambian su cotización durante la sesión. La comparación pocket-versus-midday se limita a strikes dentro de $2 del precio promedio de SPY en cada ventana, y ambos precios son columnas en el panel. Las cotizaciones de opciones inválidas (de un solo lado o cruzadas) se contabilizan en ese panel, no se descartan silenciosamente.
- La impresión de los bonos del tesoro para el 7 de julio se ingirió tarde en la sesión — la primera edición entregó un registro con retraso declarado; su alerta se activó el 8 de julio cuando llegó la impresión, y esta revisión contiene la curva real.
Metodología
- El periodo corresponde a una única sesión de negociación (sesión 1, verificada mediante las barras observadas y el calendario de feriados; nunca se asume). Las marcas de tiempo se almacenan en UTC y se convierten a la hora de Nueva York dentro de las consultas. "Close" se refiere a la última barra de minuto de la sesión regular; los cambios diarios comparan el 7 de julio con el 6 de julio, sesiones de negociación consecutivas.
- Las columnas decimales se convierten a floats de 64 bits antes de realizar aritmética de ratios; los vencimientos de opciones se procesan nuevamente desde el ticker de la OCC (la columna de vencimiento propia de la tabla presenta errores). Todos los paneles se leen una sola vez, al momento de la autoría, a través de la ruta de solo lectura restringida. Estado del almacén al 8 de julio de 2026.
- La sección de quote-tape se añadió en la revisión del 8 de julio (la misma revisión que reemplazó el recibo de retraso de los bonos del tesoro por el landed print), y sus paneles de cotizaciones de opciones se reescribieron una vez que las filas de NBBO de opciones del propio 7 de julio se registraron. La generación es un proceso por lotes por diseño: el panel de cotizaciones de opciones de SPY escanea unos pocos cientos de millones de registros NBBO, mientras que los conteos de tape-size leen los totales de filas de las particiones del día, que es como una tabla con miles de millones de filas por sesión responde 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 son un mismo objeto. Pegue cualquiera de ellos en la terminal Strasmore para personalizarlos. Sesión anterior: 6 de julio.