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 al final de los once fondos sectoriales y presión en memoria por segundo día.
El jueves 2 de julio de 2026, última sesión antes del cierre por el Día de la Independencia, fue una jornada de rotación con apariencia de venta masiva. QQQ registró -1.71%, mientras DIA subió 1.04%. La amplitud fue POSITIVA: avanzaron 3398 valores líquidos frente a 2758, con 54.6% del mercado en verde, 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 la 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 (M) |
|---|---|---|---|---|---|---|---|
| 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 en 1.04% frente a QQQ en -1.71% resume la jornada: industriales y crecimiento quedaron separados por casi tres puntos de rentabilidad diaria. SPY se ubicó en el punto medio, con -0.12%; IWM cerró en -0.59%.
¿Fue una jornada inusual?
Dos enfoques 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 según su magnitud absoluta (rango 1 = el mayor).
| SPY apertura a cierre (%) | rango de movimiento absoluto de SPY | sesiones de SPY comparadas | QQQ cierre a cierre (%) | 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 puesto 15 entre 22 sesiones anteriores; está en la mitad inferior. QQQ mostró más movimiento, pero tampoco fue extremo: su variación de cierre a cierre, de -1.71%, ocupa el puesto 9 entre 21 sesiones con un cierre previo definido, desde 2026-06-02. Fue una jornada negativa de intensidad intermedia para el índice de crecimiento. La actividad en acciones individuales fue lo que hizo que el 2 de julio destacara.
Amplitud: tape positivo, índice de crecimiento negativo
| alzas | bajas | sin cambio | 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 al alza, 2,758 valores a la baja, 63 sin cambios; 54.6% del tape líquido subió mientras QQQ cayó. Los índices ponderados por capitalización y la amplitud con igual número de valores dieron respuestas distintas. Días como este explican por qué ambos aparecen en el panel. El filtro excluye 5,317 de los tickers 11,536 con doble sesión y menos de un millón de dólares negociados.
Sector por sector: dónde estuvo la cinta verde
La amplitud cuenta valores, pero no indica de qué tipo. Los once fondos sectoriales SPDR desglosan la sesión por industria, y la brecha 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%; después quedaron servicios públicos, con 2.23%; bienes de consumo básico, con 2%; y materiales, con 1.94%. Tecnología (XLK) terminó última, con -2.71%, y fue 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 cerraron en verde. La dispersión entre el mejor y el peor sector fue de 5.34 puntos porcentuales. La divergencia entre DIA al alza y QQQ a la baja se extendió por todo el mercado, no solo entre cuatro megacaps. Por eso, una línea de avance-descenso positiva mientras el Nasdaq cae no es una contradicción.
La clave de la jornada: segundo día de liquidación en el segmento de memoria
El complejo que cayó el miércoles retrocedió aún más el jueves, tanto por la magnitud como por el movimiento conjunto, no por la causa.
| 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 (%) | 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, 15:26 ET); Seagate y Western Digital lo hicieron antes (14:23, 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 (%) | 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 un solo sentido. Marcó el mínimo a las 09:30 ET y el máximo a las 15:57, tres minutos antes del cierre. TSLA recorrió la imagen inversa, con un movimiento de -7.65%. MSFT sumó 1.41%; NVDA cerró en -1.55%. Mismo índice, jornadas 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 otra empresa de memoria entre las cuatro primeras. SOXS, el ETF inverso 3x de semiconductores, encabezó la clasificación por número de acciones, con 748.2 millones: las acciones baratas dominan el conteo de títulos y las caras, el conteo en dólares; el volumen relativo compara cualquiera de las dos métricas con la norma de cada activo. Base: horario regular del 2 de julio; se excluyó una cotización con ticker reutilizado (recibos).
| hora del Este | acciones (B) | % del grupo más grande |
|---|---|---|
| 09:30 | 2.13 | 60.5 |
| 10:00 | 1.64 | 46.4 |
| 10:30 | 1.64 | 46.5 |
| 11:00 | 1.41 | 40 |
| 11:30 | 1.05 | 29.7 |
| 12:00 | 1.03 | 29.2 |
| 12:30 | 0.96 | 27.3 |
| 13:00 | 0.87 | 24.7 |
| 13:30 | 0.85 | 24.2 |
| 14:00 | 0.89 | 25.3 |
| 14:30 | 0.81 | 23.1 |
| 15:00 | 1.05 | 29.8 |
| 15:30 | 3.53 | 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-02 13:30:00' AND window_start < '2026-07-02 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-02 20:00:00' AND sip_timestamp < '2026-07-02 20:15:00'
AND has(conditions, 8)
)
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, 3.53 mil millones hasta el cierre de la víspera del feriado; el último intervalo fue el mayor del día, porque la subasta de cierre concentra las órdenes en espera en una sola operación ejecutada.
La pizarra 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 con vencimiento 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) | activo 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 toda la sesión (0 operaciones), por lo que el jueves concentró a la vez el vencimiento diario y el vencimiento semanal desplazado. El contrato con mayor actividad fue la put de SPY con strike de $740 y vencimiento ese mismo día: 540,403 contratos a una prima promedio de $0.499, con SPY cerrando 4.8 dólares por encima del strike. Era una opción out of the money y una put en una pizarra donde el martes y el miércoles habían predominado las calls. Las calls aún representaron 58.4% del volumen; la siguiente semanal alcanzó 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 indican 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 verificar o refutar la afirmación de que “los spreads se dispararon”.
| actualizaciones del 2 de jul. (M) | actualizaciones del 1 de jul. (M) | % diario | 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% al aproximarse 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 RTH (millones) | 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 explicaron la caída eran los más costosos para 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 costaba varias veces más que cruzar el índice, incluso antes de considerar el 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. (pb) | spread mediano móvil (pb) | 2 de jul. menos móvil (pb) | rango de mayor amplitud | sesiones comparadas | sesión más amplia (pb) |
|---|---|---|---|---|---|
| 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 situó 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 liquidación concentrada con la cinta en terreno positivo no sometió a tensión a la infraestructura de negociación.
Tasas: ya está 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 del tape: en la primera publicación, el cierre del 2 de julio no tenía ninguna fila registrada, y esta página lo indicó en lugar de hacer una estimación. El dato ya está disponible: 1 filas para el 2 de julio y 1 para el 1 de julio, por lo que el panel inferior muestra la curva de la propia sesión.
| punto de la curva | rendimiento del 2 de jul. (%) | cambio de un día (pb) |
|---|---|---|
| 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 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 exdividendo | splits ejecutados | splits directos | splits inversos | registros de splits | OPI listadas | presentaciones ante la SEC | presentaciones Form 4 de insiders | presentaciones 8-K | nombres de OPI | artículos de noticias | medios de noticias | ticker más cubierto | artículos del ticker más cubierto | CRWD split desde | CRWD split hasta | cierre previo de CRWD | cierre diario de CRWD | CRWD ($ millones) | 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 publicaciones (NVDA con mayor cobertura; 18 de ellos).
Los splits pueden confundir a quien 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. Es una caída ficticia: en realidad, se emitieron 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 enumera). 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 una pantalla, y todas las pantallas de variación de esta página lo excluyen.
En 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 julio | registros exdiv del 6 de julio | exdivs de hogares del 6 de julio | splits del 6 de julio | próximo cierre programado | nombre del próximo cierre | estado del próximo cierre | última liquidación de SI | días desde la liquidación de SI |
|---|---|---|---|---|---|---|---|---|
| 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 ampliamente 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 correspondía a 2026-06-30, es decir, 2 días atrás; la publicación llevaba un retraso de aproximadamente dos semanas 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 un minuto de SPY | barras de sesión regular | sesiones diarias | barras de SPY del 3 de julio |
|---|---|---|---|---|---|
| 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 dentro del horario regular. El viernes 3 de julio se registraron 0 velas de SPY. El mercado permaneció cerrado todo el día por el feriado del Día de la Independencia, ya que el 4 de julio cayó en sábado. La semana de cuatro sesiones: resumen de la semana.
Preguntas frecuentes
¿Por qué subió el Dow mientras cayó el Nasdaq el 2 de julio de 2026?
Los dos índices incluyen empresas diferentes: DIA cerró en 1.04% y QQQ, en -1.71%. El tablero sectorial muestra la misma divergencia: salud, utilities y bienes de consumo básico ocuparon los primeros lugares, mientras tecnología quedó al final con -2.71%, una brecha de 5.34 puntos entre el mejor y el peor desempeño.
¿Estuvo abierto el mercado de acciones 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 completo el viernes siguiente a esta sesión: nuestro registro muestra 0 barras de un minuto de SPY para ese día.
¿Qué efecto tiene un split de acciones four-to-one sobre el precio?
Multiplica por four-to-one el número de acciones y divide el precio entre four; el valor de la posición no cambia. CRWD, 2 de julio: un cierre no ajustado de $772.45 el miércoles y de $193.67 el jueves muestran 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 base del precio medio durante el horario regular, lo que lo ubicó en 11 de 22 sesiones previas por amplitud; fue un día normal. Las acciones individuales registraron spreads más amplios: MU, 5.52 puntos base; WDC, 10.79.
Notas sobre los datos
- El volumen en dólares es un proxy por minuto: cierre × volumen, sumado por cada intervalo.
- La media hora final del panel de volumen incluye las operaciones de la subasta de cierre. Las barras de un minuto excluyen cada operación de subasta. Por ello, el panel de media hora suma a su último intervalo cada operación con la condición de venta correspondiente al cierre, registrada entre las 4:00 y las 4:15 p. m., hora del Este, en la cinta consolidada.
- La operación de Treasury del 2 de julio se incorporó después de la primera publicación. La nota original informó su ausencia mediante un comprobante del recuento de filas; esta revisión incluye la operación y muestra el comprobante.
- El cambio del cierre sin ajustar de CRWD es un efecto contable del split y se excluye de las pantallas de valores con mayores movimientos.
Notas completas sobre los datos
- El panel sectorial está compuesto por los once fondos SPDR Select Sector (XLB, XLC, XLE, XLF, XLI, XLK, XLP, XLRE, XLU, XLV, XLY). Es una cesta fija y divulgada, no un campo sectorial del proveedor.
- Los recuentos 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 clasificaciones (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 expresan como la diferencia entre ask y bid, en puntos básicos del precio medio, calculada como la mediana de las actualizaciones del NBBO durante el horario regular, sobre un cuantil determinista. Los decimales se convierten a tipo float antes de realizar las operaciones de cociente; los vencimientos de las opciones se vuelven a interpretar a partir del ticker de OCC. Cada panel se consulta una sola vez, al momento de redactar, mediante la ruta de solo lectura con acceso controlado.
El gráfico, la tabla y el SQL constituyen un solo objeto. Pegue cualquier panel en la terminal de Strasmore y hágalo suyo. Sesión anterior: 1 de julio. La semana: la semana festiva de cuatro sesiones.