Resumen bursátil del 2 de julio de 2026
Rotación antes del feriado: amplitud positiva pese a la caída del Nasdaq, tecnología última entre once sectores, segundo día de presión en memoria y una división que simuló un crash.
El jueves 2 de julio de 2026, la última sesión antes del cierre por el Día de la Independencia, fue una jornada de rotación que se presentó como una venta masiva. QQQ registró -1.71%, mientras DIA subió 1.04%, y la amplitud del mercado fue POSITIVE: avanzaron 3398 valores líquidos frente a 2758; 54.6% de los valores terminaron en positivo, aunque el índice de crecimiento cayó. Ocho de los once fondos sectoriales cerraron al alza. La presión vendedora se concentró en tecnología y en el complejo de memoria, que se había quebrado el día anterior.
El marcador
| ticker | cierre previo | apertura del día | cierre del día | cambio porcentual | máximo del día | mínimo del día | acciones negociadas (millones) |
|---|---|---|---|---|---|---|---|
| DIA | 522.41 | 525.49 | 527.83 | 1.04 | 528.26 | 523.73 | 3 |
| IWM | 299.31 | 300.54 | 297.53 | -0.59 | 302.23 | 294.98 | 18.5 |
| QQQ | 725.16 | 725.58 | 712.74 | -1.71 | 730.83 | 707.56 | 43.7 |
| SPY | 745.69 | 747.4 | 744.8 | -0.12 | 751.31 | 740.03 | 43.9 |
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-01 13:30:00' AND window_start < '2026-07-01 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-02 13:30:00' AND window_start < '2026-07-02 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_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.tickerDIA, con 1.04%, frente a QQQ, con -1.71%, resume la jornada en una sola línea: los industriales y las acciones de crecimiento quedaron separados por casi tres puntos porcentuales de rentabilidad diaria. SPY quedó en el punto medio, con -0.12%; IWM cerró en -0.59%.
¿Fue una jornada inusual?
Dos perspectivas en un mismo panel: el movimiento de apertura a cierre de SPY y el movimiento de cierre a cierre de QQQ, clasificados frente al mes anterior por magnitud absoluta (rango 1 = el mayor).
| cambio porcentual de apertura a cierre de SPY | rango de movimiento absoluto de SPY | sesiones de SPY comparadas | cambio porcentual cierre a cierre de QQQ | rango de movimiento absoluto de QQQ | sesiones de QQQ comparadas | primera sesión |
|---|---|---|---|---|---|---|
| -0.35 | 15 | 22 | -1.71 | 9 | 21 | 2026-06-02 |
El SQL exacto detrás de cada cifra
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,
argMax(toFloat64(close), window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ')
AND window_start >= toDateTime('2026-06-02 00:00:00')
AND window_start < toDateTime('2026-07-03 00:00:00')
AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
GROUP BY ticker, d
),
with_prev AS (
SELECT ticker, d, oc_pct,
lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,
(rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct
FROM per_day
)
SELECT
round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,
arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,
countIf(ticker = 'SPY') AS spy_sessions_compared,
round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,
arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),
groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,
countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,
toString(minIf(d, ticker = 'SPY')) AS first_session
FROM with_prevA nivel de índices, no. El movimiento de apertura a cierre de SPY, de -0.35%, ocupa el rango 15 de 22 sesiones previas; se sitúa en la mitad inferior. QQQ registró un movimiento más marcado, pero tampoco extremo: su variación de cierre a cierre, de -1.71%, ocupa el rango 9 de 21 sesiones con un cierre previo definido, desde 2026-06-02. Fue una jornada negativa intermedia para el índice de crecimiento. Donde el mercado mostró más movimiento fue en las acciones individuales el 2 de julio.
Amplitud de mercado: flujo comprador y un índice de crecimiento a la baja
| alzas | bajas | sin cambios | tickers líquidos | tickers negociados en ambas sesiones | excluidos por filtro de liquidez | porcentaje de alzas | alzas (formato) | bajas (formato) | excluidos por filtro de liquidez (formato) | tickers negociados en ambas sesiones (formato) |
|---|---|---|---|---|---|---|---|---|---|---|
| 3398 | 2758 | 63 | 6219 | 11536 | 5317 | 54.6 | 3,398 | 2,758 | 5,317 | 11,536 |
El SQL exacto detrás de cada cifra
WITH per_ticker AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') AS day_dollar_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE (window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close > prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS advancers_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(countIf(day_close < prior_close AND day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS decliners_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count() - countIf(day_dollar_volume >= 1000000))), '[0-9]{1,3}'), ',')) AS dropped_by_liquidity_filter_fmt,
reverse(arrayStringConcat(extractAll(reverse(toString(count())), '[0-9]{1,3}'), ',')) AS tickers_traded_both_sessions_fmt
FROM per_ticker
WHERE prior_close > 0 AND day_close > 03,398 valores en alza, 2,758 valores en baja, 63 sin cambios; 54.6% de los valores líquidos subieron mientras QQQ cayó. Los índices ponderados por capitalización y los indicadores de amplitud con igual número de componentes ofrecieron lecturas distintas. Días como este explican por qué ambos aparecen en el panel. El filtro excluye 5,317 de los 11,536 tickers con sesión doble y un volumen negociado inferior a un millón de dólares.
Por sector: dónde se concentró la presión compradora
La amplitud cuenta cuántos valores suben o bajan, pero no indica de qué tipo son. Los once fondos sectoriales SPDR desglosan la sesión por industria. La diferencia entre el mejor y el peor sector resume en una cifra la dispersión del día.
| ticker | cierre previo | cierre del día | cambio porcentual | puntos por encima del peor sector | volumen negociado del día ($ mil millones) |
|---|---|---|---|---|---|
| XLB | 51 | 51.99 | 1.94 | 4.65 | 0.57 |
| XLC | 109.74 | 109.6 | -0.13 | 2.58 | 0.83 |
| XLE | 52.82 | 53.23 | 0.78 | 3.48 | 1.46 |
| XLF | 54.79 | 55.61 | 1.5 | 4.2 | 2.36 |
| XLI | 183.41 | 183.91 | 0.27 | 2.98 | 1.15 |
| XLK | 185.54 | 180.52 | -2.71 | 0 | 2.43 |
| XLP | 83.33 | 85 | 2 | 4.71 | 1.33 |
| XLRE | 44.18 | 44.69 | 1.15 | 3.86 | 0.22 |
| XLU | 44.76 | 45.76 | 2.23 | 4.94 | 1.05 |
| XLV | 159.57 | 163.77 | 2.63 | 5.34 | 2.01 |
| XLY | 118.07 | 117.11 | -0.81 | 1.89 | 1.2 |
El SQL exacto detrás de cada cifra
WITH per_etf AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
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-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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,
round((day_close / prior_close - 1) * 100 - min((day_close / prior_close - 1) * 100) OVER (), 2) AS pts_above_worst_sector,
day_dollar_bn
FROM per_etf
ORDER BY tickerSalud (XLV) encabezó la tabla con 2.63%. Le siguieron servicios públicos 2.23%, bienes de consumo básico 2% y materiales 1.94%. Tecnología (XLK) terminó última con -2.71%, el único sector que cayó más de un punto. Consumo discrecional (-0.81%) y servicios de comunicación (-0.13%) fueron los otros fondos en rojo; los ocho restantes terminaron en verde. La dispersión entre el mejor y el peor sector fue de 5.34 puntos porcentuales. La divergencia entre un DIA al alza y un QQQ a la baja se extendió por todo el mercado, no solo entre cuatro megacaps. Por eso, una línea de avance-descenso en verde mientras el Nasdaq cae no es una contradicción.
El foco de la sesión: debacle de las acciones de memoria, segundo día
El complejo que cayó el miércoles bajó con más fuerza el jueves. La magnitud y el movimiento conjunto fueron similares, pero la causa no fue la misma.
| ticker | cierre previo | cierre del día | cambio porcentual | máximo del día | máximo del día (ET) | mínimo del día | mínimo del día (ET) | rango porcentual | volumen negociado del día ($ mil millones) |
|---|---|---|---|---|---|---|---|---|---|
| MU | 1033.29 | 975.77 | -5.57 | 1064.64 | 10:03 | 950.28 | 15:26 | 12.03 | 51.4 |
| SNDK | 2035.07 | 1743.59 | -14.32 | 2052.54 | 09:35 | 1693 | 15:26 | 21.24 | 26.57 |
| STX | 915.25 | 820.25 | -10.38 | 923.06 | 09:53 | 795.66 | 14:23 | 16.01 | 4.74 |
| WDC | 598.37 | 538.99 | -9.92 | 609.46 | 09:35 | 525.84 | 13:59 | 15.9 | 4.31 |
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'SNDK', 'STX', 'WDC')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerSanDisk registró -14.32%, Seagate -10.38%, Western Digital -9.92% y MU -5.57%, con $51.4 mil millones negociados en MU, aproximadamente una vez y media el volumen de SPY. MU y SanDisk marcaron sus mínimos tarde (15:26 y 15:26 ET), mientras que Seagate y Western Digital los marcaron antes (14:23 y 13:59). Contexto: el miércoles y el análisis detallado de MU.
La otra mitad de la rotación estuvo en las megacaps:
| ticker | cierre previo | cierre del día | cambio porcentual | máximo del día | máximo del día (ET) | mínimo del día | mínimo del día (ET) | rango porcentual | volumen negociado del día ($ mil millones) |
|---|---|---|---|---|---|---|---|---|---|
| AAPL | 294.25 | 308.22 | 4.75 | 309.42 | 15:57 | 293.68 | 09:30 | 5.36 | 18.36 |
| MSFT | 384.22 | 389.62 | 1.41 | 392.2 | 15:11 | 383.7 | 09:35 | 2.22 | 12.58 |
| NVDA | 197.58 | 194.51 | -1.55 | 200.06 | 10:03 | 192.35 | 13:40 | 4.01 | 21.18 |
| TSLA | 425.34 | 392.81 | -7.65 | 432.35 | 09:31 | 389.3 | 15:23 | 11.06 | 25.41 |
El SQL exacto detrás de cada cifra
WITH per_name AS (
SELECT
ticker,
toFloat64(argMaxIf(close, window_start, window_start < '2026-07-02 00:00:00')) AS prior_close,
toFloat64(argMaxIf(close, window_start, window_start >= '2026-07-02 00:00:00')) AS day_close,
maxIf(toFloat64(high), window_start >= '2026-07-02 00:00:00') AS day_high,
minIf(toFloat64(low), window_start >= '2026-07-02 00:00:00') AS day_low,
argMinIf(window_start, toFloat64(low), window_start >= '2026-07-02 00:00:00') AS low_bar,
argMaxIf(window_start, toFloat64(high), window_start >= '2026-07-02 00:00:00') AS high_bar,
round(sumIf(toFloat64(close) * toFloat64(volume), window_start >= '2026-07-02 00:00:00') / 1e9, 2) AS day_dollar_bn
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA')
AND ((window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00')
OR (window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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,
round(day_high, 2) AS day_high,
formatDateTime(toTimeZone(high_bar, 'America/New_York'), '%H:%i') AS day_high_et,
round(day_low, 2) AS day_low,
formatDateTime(toTimeZone(low_bar, 'America/New_York'), '%H:%i') AS day_low_et,
round((day_high / day_low - 1) * 100, 2) AS range_pct,
day_dollar_bn
FROM per_name
ORDER BY tickerAAPL subió 4.75% en una trayectoria de sentido único. Marcó el mínimo a las 09:30 ET y el máximo a las 15:57, tres minutos antes del cierre. TSLA siguió el movimiento opuesto, con -7.65%. MSFT avanzó 1.41%; NVDA cerró con -1.55%. Mismo índice, sesiones opuestas.
Dónde se negoció el dinero
| ticker | tablero de posiciones | volumen en dólares (B) | valor en dólares (M) | acciones (M) | % del líder del tablero |
|---|---|---|---|---|---|
| MU | by dollars traded | 51.4 | None | 51.9 | 100 |
| SPY | by dollars traded | 32.7 | None | 43.9 | 63.6 |
| QQQ | by dollars traded | 31.3 | None | 43.7 | 60.9 |
| SNDK | by dollars traded | 26.57 | None | 14.6 | 51.7 |
| TSLA | by dollars traded | 25.41 | None | 63.6 | 49.4 |
| NVDA | by dollars traded | 21.18 | None | 108.6 | 41.2 |
| SOXS | by shares traded | 3.24 | None | 748.2 | 100 |
| TZA | by shares traded | 1.27 | None | 325.7 | 43.5 |
| LIMN | by shares traded | 0.04 | 42 | 245.7 | 32.8 |
| BITO | by shares traded | 1.71 | None | 204.9 | 27.4 |
El SQL exacto detrás de cada cifra
SELECT ticker, leaderboard, dollar_volume_bn, if(dollar_volume_bn < 1, dollar_volume_m, NULL) AS dollar_value_m, 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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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(close) * toFloat64(volume)) / 1e6, 0) AS dollar_volume_m,
round(sum(toFloat64(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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) DESCLos $51.4 mil millones de MU lideraron la cinta por cuarta sesión consecutiva (lunes, martes, miércoles) frente a los $32.7 mil millones de SPY, y los $26.57 mil millones de SanDisk colocaron a otro valor de memoria entre los cuatro primeros. SOXS, el ETF de semiconductores con exposición inversa de 3x, encabezó la clasificación por número de acciones, con 748.2 millones: las acciones baratas dominan el recuento de títulos y las caras, el recuento en dólares; el volumen relativo compara cualquiera de las dos métricas con la norma de cada valor. Base: horario regular del 2 de julio; se excluyó una cotización con ticker reutilizado (recibos).
| hora ET | acciones (B) | % del grupo más grande |
|---|---|---|
| 09:30 | 2.13 | 92.9 |
| 10:00 | 1.64 | 71.3 |
| 10:30 | 1.64 | 71.6 |
| 11:00 | 1.41 | 61.5 |
| 11:30 | 1.05 | 45.6 |
| 12:00 | 1.03 | 44.9 |
| 12:30 | 0.96 | 42 |
| 13:00 | 0.87 | 38 |
| 13:30 | 0.85 | 37.1 |
| 14:00 | 0.89 | 38.9 |
| 14:30 | 0.81 | 35.5 |
| 15:00 | 1.05 | 45.9 |
| 15:30 | 2.3 | 100 |
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-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY et_time
ORDER BY et_time2.13 mil millones de acciones en la primera media hora, un mínimo de 0.81 mil millones a las 14:30, 2.3 mil millones hasta el cierre de la víspera del feriado y el último intervalo como el mayor del día, mientras la subasta de cierre concentra las órdenes en espera en una sola operación ejecutada.
La cinta de opciones: las semanales desplazadas
| operaciones de opciones (M) | contratos (M) | % de calls del volumen | % con vencimiento el mismo día | contratos con vencimiento jue. 2 de jul. (M) | operaciones vie. 3 de jul. | contratos semanales del 10 de jul. (M) | contratos mensuales del 17 de jul. (M) | contratos de SPY (M) | contratos de QQQ (M) | subyacente del contrato principal | strike del contrato principal | tipo de contrato principal | vencimiento del contrato principal | volumen del contrato principal | volumen formateado del contrato principal | precio promedio del contrato principal | strike principal menos cierre de SPY | cierre de SPY menos strike |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 13.15 | 80.96 | 58.4 | 47.4 | 38.38 | 0 | 9.64 | 8.82 | 13.96 | 8.5 | SPY | 740 | P | 2026-07-02 | 540403 | 540,403 | 0.499 | -4.8 | 4.8 |
El SQL exacto detrás de cada cifra
WITH
(
SELECT (any(underlying_symbol), any(toFloat64(strike_price)), any(option_type),
any(toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6)))),
sum(size), count(), round(avg(toFloat64(price)), 3))
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
GROUP BY ticker
ORDER BY sum(size) DESC
LIMIT 1
) AS top_contract,
(
SELECT round(toFloat64(argMax(close, window_start)), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 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) = '260702') / sum(size), 1) AS same_day_expiry_pct,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260702')) / 1e6, 2) AS thu_jul2_expiry_contracts_m,
countIf(substring(ticker, length(ticker) - 14, 6) = '260703') AS fri_jul3_expiry_prints,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260710')) / 1e6, 2) AS jul10_weekly_contracts_m,
round(toFloat64(sumIf(size, substring(ticker, length(ticker) - 14, 6) = '260717')) / 1e6, 2) AS jul17_monthly_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,
top_contract.1 AS top_contract_underlying,
top_contract.2 AS top_contract_strike,
top_contract.3 AS top_contract_type,
top_contract.4 AS top_contract_expiry,
top_contract.5 AS top_contract_volume,
reverse(arrayStringConcat(extractAll(reverse(toString(assumeNotNull(top_contract.5))), '[0-9]{1,3}'), ',')) AS top_contract_volume_fmt,
round(top_contract.7, 3) AS top_contract_avg_price,
round(top_contract.2 - spy_regular_close, 2) AS top_strike_minus_spy_close,
round(spy_regular_close - top_contract.2, 2) AS spy_close_minus_strike
FROM global_markets.options_trades
WHERE sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'Se negociaron opciones por 80.96 millones de contratos en 13.15 millones de operaciones ejecutadas, y 47.4% de ese volumen venció ese mismo jueves. Ningún contrato con código de vencimiento del 3 de julio registró operaciones durante la sesión (0 operaciones), por lo que el jueves concentró a la vez el vencimiento diario y la opción semanal desplazada de la semana. El contrato con mayor actividad fue el put de SPY con strike de $740 y vencimiento ese mismo día: 540,403 contratos con una prima promedio de $0.499; SPY cerró 4.8 dólares por encima del strike. Era una opción out of the money y un put en una jornada en la que el martes y el miércoles habían predominado las calls. Las calls aún representaron 58.4% del volumen; la siguiente semanal concentró 9.64 millones de contratos y la mensual de julio, 8.82 millones (mecánica del vencimiento).
La cinta de cotizaciones: cuánto costó operar
Los precios indican qué ocurrió; las cotizaciones muestran cuánto costó. El spread bid-ask es el peaje de cada operación de ida y vuelta, expresado en puntos básicos del precio medio (un punto básico equivale a una centésima de punto porcentual). Lo medimos en cada sesión, fuera ordinaria o no. Eso permite comprobar o refutar la afirmación de que “los spreads se ampliaron drásticamente”.
| actualizaciones del 2 de jul. (M) | actualizaciones del 1 de jul. (M) | variación diaria (%) | actualizaciones de SPY del 2 de jul. (M) | actualizaciones de QQQ del 2 de jul. (M) | actualizaciones de MU del 2 de jul. (M) |
|---|---|---|---|---|---|
| 597.22 | 449.15 | 33 | 5.42 | 7.56 | 1.01 |
El SQL exacto detrás de cada cifra
SELECT
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / 1e6, 2) AS jul2_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-01')) / 1e6, 2) AS jul1_updates_m,
round((countIf(toDate(sip_timestamp) = toDate('2026-07-02')) / countIf(toDate(sip_timestamp) = toDate('2026-07-01')) - 1) * 100, 1) AS day_over_day_pct,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'SPY') / 1e6, 2) AS jul2_spy_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'QQQ') / 1e6, 2) AS jul2_qqq_updates_m,
round(countIf(toDate(sip_timestamp) = toDate('2026-07-02') AND ticker = 'MU') / 1e6, 2) AS jul2_mu_updates_m
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'La mejor oferta nacional de compra y venta, la parte superior del libro consolidado, se actualizó 597.22 millones de veces el 2 de julio, frente a 449.15 millones el 1 de julio: un aumento de 33% hacia el cierre. QQQ registró 7.56 millones, por encima de los 5.42 millones de SPY; MU, 1.01 millones.
| ticker | spread mediano (pb) | spread mediano (centavos) | veces el spread de SPY | actualizaciones en horario regular (M) | cotizaciones inválidas descartadas |
|---|---|---|---|---|---|
| SPY | 0.27 | 2 | 1 | 4.98 | 19064 |
| QQQ | 0.83 | 6 | 3.1 | 6.03 | 5934 |
| NVDA | 1.03 | 2 | 3.8 | 2.55 | 20398 |
| AAPL | 1.62 | 5 | 6 | 1.91 | 5193 |
| TSLA | 2.29 | 9 | 8.5 | 0.85 | 2699 |
| MU | 5.52 | 55 | 20.4 | 0.92 | 2442 |
| SNDK | 10.4 | 189 | 38.5 | 0.26 | 163 |
| WDC | 10.79 | 60 | 40 | 0.14 | 83 |
El SQL exacto detrás de cada cifra
SELECT
ticker,
round(med_bps, 2) AS median_spread_bps,
round(med_dollars * 100, 1) AS median_spread_cents,
round(med_bps / min(med_bps) OVER (), 1) AS times_the_spy_spread,
round(quote_updates / 1e6, 2) AS rth_updates_m,
invalid_quotes_dropped
FROM (
SELECT
ticker,
quantileExactIf(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000,
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_bps,
quantileExactIf(0.5)(toFloat64(ask_price) - toFloat64(bid_price),
toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)) AS med_dollars,
count() AS quote_updates,
countIf(NOT (toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price))) AS invalid_quotes_dropped
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'TSLA', 'NVDA', 'MU', 'SNDK', 'WDC')
AND sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'
GROUP BY ticker
)
ORDER BY median_spread_bps ASCEl spread mediano de SPY fue de 0.27 puntos básicos: aproximadamente 2 centavos en un ETF de $744.8. QQQ registró 0.83 puntos básicos y NVDA, 1.03. Los valores que más cayeron fueron los más costosos de operar: MU, 5.52 puntos básicos; SanDisk, 10.4; Western Digital, 10.79; 40 veces el spread de SPY. Cruzar una cesta de acciones de memoria costó varias veces más que cruzar el índice, antes de cualquier impacto en el precio. Las cotizaciones inválidas —de un solo lado o cruzadas— se contabilizan por valor, no se ocultan.
| spread mediano del 2 de jul. (bps) | mediana móvil (bps) | 2 de jul. menos mediana móvil (bps) | rango de spreads más amplios | sesiones comparadas | sesión con spread más amplio (bps) |
|---|---|---|---|---|---|
| 0.27 | 0.27 | 0 | 11 | 22 | 0.409 |
El SQL exacto detrás de cada cifra
WITH per_day AS (
SELECT toDate(sip_timestamp) AS d,
quantileExact(0.5)((toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000) AS med_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'SPY'
AND sip_timestamp >= '2026-06-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
AND toFloat64(bid_price) > 0 AND toFloat64(ask_price) > toFloat64(bid_price)
GROUP BY d
)
SELECT
round(anyIf(med_bps, d = toDate('2026-07-02')), 3) AS jul2_median_spread_bps,
round(quantileExact(0.5)(med_bps), 3) AS trailing_median_bps,
round(anyIf(med_bps, d = toDate('2026-07-02')) - quantileExact(0.5)(med_bps), 3) AS jul2_minus_trailing_bps,
arrayCount(x -> x > anyIf(med_bps, d = toDate('2026-07-02')), groupArrayIf(med_bps, d != toDate('2026-07-02'))) + 1 AS wider_rank,
count() AS sessions_compared,
round(max(med_bps), 3) AS widest_session_bps
FROM per_dayFue un día ordinario para la liquidez, y ese es el hallazgo: el spread mediano de SPY, de 0.27 puntos básicos, se sitúa a 0 puntos básicos de la mediana del último mes (0.27 puntos básicos). Ocupó el puesto 11 de 22 sesiones por amplitud, muy lejos del máximo mensual de 0.409 puntos básicos. Una venta masiva concentrada, con la cinta en terreno positivo, no tensionó la infraestructura de negociación.
Tasas: se publicó el dato del 2 de julio
| filas del 2 de jul. | filas del 1 de jul. |
|---|---|
| 1 | 1 |
El SQL exacto detrás de cada cifra
SELECT
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-02') AS jul2_rows,
(SELECT count() FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS jul1_rowsEl feed del Tesoro lleva uno o dos días de retraso respecto al tape: en la primera publicación, el cierre del 2 de julio no tenía filas registradas, y esta página lo indicó en lugar de hacer una estimación. El dato ya se publicó: 1 fila para el 2 de julio y 1 para el 1 de julio. Por eso, el panel siguiente muestra la curva de la propia sesión.
| punto de la curva | rendimiento del 2 de jul. (%) | cambio diario (bp) |
|---|---|---|
| 1 month | 3.7 | 3 |
| 3 month | 3.82 | -3 |
| 1 year | 3.96 | -4 |
| 2 year | 4.14 | -3 |
| 5 year | 4.23 | -1 |
| 10 year | 4.49 | 1 |
| 30 year | 4.98 | 1 |
| 2s10s spread | 0.35 | 4 |
El SQL exacto detrás de cada cifra
SELECT
t.1 AS curve_point,
round(t.2, 2) AS jul2_yield_pct,
round((t.2 - t.3) * 100) AS one_day_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-02') AS d,
(SELECT * FROM global_markets.treasury_yields WHERE date = '2026-07-01') AS p
)Al cierre, el rendimiento del bono del Tesoro a 10 años se situó en 4.49%, y el spread 2s10s en 0.35 puntos.
El calendario detrás de la jornada
| registros ex dividendo | splits ejecutados | splits forward | splits inversos | registros de splits | IPOs listadas | presentaciones ante la SEC | presentaciones Form 4 de insiders | presentaciones 8-K | nombres de IPOs | artículos de noticias | medios de noticias | ticker con mayor cobertura | artículos del ticker con mayor cobertura | CRWD split desde | CRWD split hasta | CRWD cierre previo | CRWD cierre del día | CRWD millones de dólares | nombres de splits con barras |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 322 | 8 | 5 | 3 | CRWD 4-for-1; FBIP 4-for-1; FNCSF 110-for-100; GMEX 1-for-9; GTCDF 1-for-5; SMTOY 8-for-1; UBYH 1-for-10; VLNT 10-for-1 | 2 | 5203 | 2109 | 258 | MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II | 201 | 3 | NVDA | 18 | 1 | 4 | 772.45 | 193.67 | 1473.51 | 2 |
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-02'
) AS news,
(
SELECT (argMax(t, n), max(n))
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-02'
)
WHERE t != 'SPCX'
GROUP BY t
)
) AS top_news,
(
SELECT (count(), countIf(split_to > split_from), countIf(split_to < split_from),
arrayStringConcat(groupArray(concat(ticker, ' ', toString(split_to), '-for-', toString(split_from))), '; '))
FROM global_markets.stocks_splits
WHERE execution_date = '2026-07-02' AND ticker NOT IN ('SPCX')
) AS splits
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-02') AS ex_dividend_records,
splits.1 AS splits_executed,
splits.2 AS forward_splits,
splits.3 AS reverse_splits,
splits.4 AS split_records,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02') AS ipos_listed,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS sec_filings,
(SELECT uniqExactIf(accession_number, form_type = '4') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS insider_form4_filings,
(SELECT uniqExactIf(accession_number, form_type = '8-K') FROM global_markets.stocks_sec_edgar_index WHERE filing_date = '2026-07-02') AS filings_8k,
(SELECT arrayStringConcat(groupArray(concat(ticker, ' — ', issuer_name)), '; ') FROM (
SELECT ticker, issuer_name FROM global_markets.stocks_ipos WHERE listing_date = '2026-07-02' ORDER BY ticker
)) AS ipo_names,
news.1 AS news_articles,
news.2 AS news_publishers,
top_news.1 AS most_covered_ticker,
top_news.2 AS most_covered_articles,
(SELECT any(split_from) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_from,
(SELECT any(split_to) FROM global_markets.stocks_splits WHERE ticker = 'CRWD' AND execution_date = '2026-07-02') AS crwd_split_to,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-01 13:30:00' AND window_start < '2026-07-01 20:00:00') AS crwd_prev_close,
(SELECT round(toFloat64(argMax(close, window_start)), 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_day_close,
(SELECT round(sum(toFloat64(close) * toFloat64(volume)) / 1e6, 2) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'CRWD' AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS crwd_dollar_m,
(SELECT count() FROM (
SELECT ticker FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM global_markets.stocks_splits WHERE execution_date = '2026-07-02')
AND window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00'
GROUP BY ticker
)) AS split_names_with_bars322 registros de dividendos pasaron a cotizar ex-dividendo, llegaron 2 nuevas cotizaciones (MIACU — Meridian3 Industrials Acquisition Corp.; VIIU — Viking Acquisition Corp. II), y el índice de la SEC registró 5203 presentaciones durante el feriado: 2109 Form 4, 258 formularios 8-K. El flujo de noticias incluyó 201 artículos de 3 medios (NVDA con mayor cobertura, 18 de ellos).
Los splits pueden confundir a cualquiera que lea cierres sin ajustar. CRWD ejecutó un split forward de 4 por 1, por lo que la cinta sin ajustar muestra $772.45 el miércoles y $193.67 el jueves: una caída ficticia que en realidad corresponde a cuatro acciones nuevas por cada acción anterior. No fue el único caso: se ejecutaron 8 splits, 5 forward y 3 reverse (la columna split_records los detalla). Un reverse split produce el efecto contrario: un precio sin ajustar que salta de un día para otro. Solo 2 de esos nombres registraron operaciones en nuestra cinta; el volumen negociado de CRWD, de $1473.51 millones, es el único suficientemente grande para contaminar un filtro, y todos los filtros de movimientos que aparecen aquí lo excluyen.
Agenda
Dato del calendario, no un pronóstico: esto es lo que mostraban las tablas sobre las próximas sesiones.
| barras regulares de SPY del 6 de jul. | registros exdiv del 6 de jul. | exdiv de hogares del 6 de jul. | splits del 6 de jul. | próximo cierre programado | nombre del próximo cierre | estado del próximo cierre | última liquidación de SI | antigüedad de liquidación de SI (días) |
|---|---|---|---|---|---|---|---|---|
| 390 | 119 | JPM | 15 | 2026-09-07 | Labor Day | closed | 2026-06-30 | 2 |
El SQL exacto detrás de cada cifra
SELECT
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-06 13:30:00' AND window_start < '2026-07-06 20:00:00') AS jul6_spy_regular_bars,
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date = '2026-07-06') AS exdiv_records_jul6,
(SELECT arrayStringConcat(groupArray(ticker), ', ') FROM global_markets.stocks_dividends
WHERE ex_dividend_date = '2026-07-06'
AND ticker IN ('AAPL', 'MSFT', 'JPM', 'JNJ', 'XOM', 'KO', 'PG', 'WMT', 'CVX', 'HD')) AS household_exdivs_jul6,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date = '2026-07-06') AS splits_jul6,
(SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02') AS next_scheduled_closure,
(SELECT any(name) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_name,
(SELECT any(status) FROM global_markets.stocks_market_holidays
WHERE date = (SELECT min(date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-02')) AS next_closure_status,
(SELECT toString(max(settlement_date)) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS latest_si_settlement,
(SELECT dateDiff('day', max(settlement_date), toDate('2026-07-02')) FROM global_markets.stocks_short_interest
WHERE settlement_date <= '2026-07-02') AS si_settlement_age_daysEl lunes 6 de julio reabrió con una sesión completa de 390 barras, verificada a partir de sus propias barras. Registró 119 valores ex-dividendo, incluido un nombre conocido entre los diez que analizamos (JPM), y 15 ejecuciones de splits. Próximo cierre programado: Labor Day, 2026-09-07 (closed). El interés en corto ya era información antigua, como siempre: la liquidación más reciente disponible era 2026-06-30, con un desfase de 2 días; la publicación llevaba aproximadamente dos semanas de retraso respecto de la liquidación (por qué).
La sesión verificada y el viernes que no existió
| primera barra de SPY (ET) | última barra de SPY (ET) | barras de 1 minuto de SPY | barras de sesión regular | sesiones del día | barras de SPY del 3 de jul. |
|---|---|---|---|---|---|
| 04:00 | 19:59 | 886 | 390 | 1 | 0 |
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-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS regular_session_bars,
uniqExactIf(toDate(toTimeZone(window_start, 'America/New_York')), window_start >= '2026-07-02 13:30:00' AND window_start < '2026-07-02 20:00:00') AS day_sessions,
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-03 00:00:00' AND window_start < '2026-07-04 00:00:00') AS jul3_spy_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= '2026-07-02 00:00:00' AND window_start < '2026-07-03 00:00:00'El 2 de julio fue una sesión completa, no un cierre anticipado: las velas de SPY abarcan de 04:00 a 19:59, hora de Nueva York (incluidas las velas de pre-market y after-hours), con exactamente 390 velas en el horario regular. El viernes 3 de julio, SPY registró 0 velas: fue un cierre total por el Día de la Independencia, ya que el 4 de julio cayó en sábado. La semana de cuatro sesiones: el resumen semanal.
Preguntas frecuentes
¿Por qué subió el Dow mientras cayó el Nasdaq el 2 de julio de 2026?
Los dos índices tienen empresas diferentes: DIA cerró en 1.04% y QQQ, en -1.71%. El tablero sectorial muestra la misma divergencia: salud, servicios públicos y bienes básicos encabezaron la lista, mientras tecnología quedó al final con -2.71%. La brecha entre el mejor y el peor sector fue de 5.34 puntos.
¿El mercado de acciones abrió el viernes de la semana del Día de la Independencia?
No. El Día de la Independencia cayó en sábado y las bolsas observaron el feriado con un cierre total el viernes siguiente a esta sesión: nuestro tape muestra 0 barras de un minuto de SPY para esa jornada.
¿Qué efecto tiene un split de acciones forward sobre el precio?
Multiplica por cuatro el número de acciones y divide el precio entre cuatro; el valor de la posición no cambia. En CRWD, el 2 de julio: un cierre no ajustado de $772.45 el miércoles y de $193.67 el jueves generan una caída ficticia en cualquier screener que omita el split.
¿Qué tan amplios fueron los spreads bid-ask el 2 de julio de 2026?
El spread cotizado mediano de SPY fue de 0.27 puntos básicos del precio medio durante el horario regular, 11 entre 22 sesiones previas por amplitud. Fue una jornada normal. Las acciones individuales registraron spreads más amplios: MU, 5.52 puntos básicos; WDC, 10.79.
Notas sobre los datos
- El volumen en dólares es un proxy por minuto: cierre × volumen, sumado por barra.
- La operación de treasuries del 2 de julio se registró después de la primera publicación. La nota original informó su ausencia mediante un comprobante del número de filas; esta revisión incorpora la operación y muestra el comprobante.
- El cambio del cierre bruto de CRWD es un efecto técnico del split y se excluye de las pantallas de mayores movimientos.
Notas completas sobre los datos
- El tablero sectorial está compuesto por los once fondos SPDR Select Sector (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY): una cesta fija y divulgada, no un campo sectorial del proveedor.
- Los conteos de la cinta de cotizaciones se agrupan según la fecha UTC de la marca de tiempo del SIP; una sesión de verano queda dentro de un mismo día UTC.
- Una cotización de junio con un símbolo reutilizado se excluye de las tablas de líderes (comprobantes); el análisis forense de ticks se encuentra en los análisis detallados.
Metodología
- El periodo es una sesión de trading (1 sesión, verificada a partir de las barras observadas). 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, y los cambios diarios comparan el 2 de julio con el 1 de julio. El cierre del 3 de julio se verificó a partir de las barras; nunca se dio por supuesto.
- Los spreads se cotizan (ask menos bid) en puntos básicos del precio medio, como mediana de las actualizaciones del NBBO durante el horario regular, sobre un cuantil determinista. Los decimales se convierten a floats antes de realizar las operaciones de ratio; los vencimientos de las opciones se vuelven a analizar a partir del ticker de OCC. Cada panel se lee una sola vez, en el momento de redactar, mediante la ruta de solo lectura con acceso controlado.
El gráfico, la tabla y el SQL forman un solo objeto. Pega cualquier panel en la terminal de Strasmore y hazlo tuyo. Sesión anterior: 1 de julio. La semana: la semana festiva de cuatro sesiones.