La última semana de junio tuvo cuatro sesiones: el mercado operó del lunes 29 de junio al jueves 2 de julio, y cerró el viernes 3 de julio por el Día de la Independencia —el 4 de julio cayó en sábado, por lo que el feriado se observó el viernes anterior. Los resultados de ese cierre, y de todo lo demás aquí, se encuentran en los paneles. El dato más notable de la semana está en la tabla de volumen: un fabricante de chips de memoria transó $190.2 billion en cuatro días, lo cual es una vez y media más de lo que operó el SPY. Cada número en esta página es el resultado de una consulta almacenada; expanda cualquier panel para ver el SQL exacto.
La semana en el tablero
¿Recuperó el mercado la caída de la semana anterior o la extendió? El tablero indica una recuperación: este panel calcula el cambio semanal de cada ETF de índice y, para contrastar, el de la semana previa; ambos datos provienen de la misma consulta.
El SQL exacto detrás de cada cifra
SELECT ticker,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS prior_friday_close,
round(argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS week_close,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
/ argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS week_change_pct,
round((argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
/ argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-18') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) - 1) * 100, 1) AS prior_week_change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND window_start >= toDateTime('2026-06-15 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY ticker
ORDER BY tickerSPY terminó la semana en $744.8, subiendo un 2.2% respecto al viernes anterior, tras una semana de -2.3% previa. QQQ subió un 1% después de una semana anterior de -4.6%, DIA ganó un 2% e IWM cerró en 297.53, con un 0% en la semana, sin cambios mientras los índices de gran capitalización subieron.
La semana frente al año móvil
El SQL exacto detrás de cada cifra
SELECT round(anyIf(ret, wk = toDate('2026-06-29')), 2) AS week_2026_pct,
arrayCount(x -> x > anyIf(ret, wk = toDate('2026-06-29')), groupArrayIf(ret, wk != toDate('2026-06-29'))) + 1 AS rank_best,
count() AS weeks_compared,
toString(min(wk)) AS first_week,
anyIf(sessions, wk = toDate('2026-06-29')) AS sessions_this_week
FROM (
SELECT toStartOfWeek(toDate(toTimeZone(window_start, 'America/New_York')), 1) AS wk,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-06-29 00:00:00')
AND window_start < toDateTime('2026-07-03 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY wk
HAVING sessions >= 3
)La medición de apertura a cierre durante la semana —desde la primera barra de horario regular del lunes hasta la última del jueves— ofrece una perspectiva ligeramente distinta al marcador de cierre del viernes presentado arriba, y los datos lo confirman: la semana de SPY ocupa el puesto 14 de las últimas 53 semanas (el rango 1 es el mejor): un desempeño promedio en un año móvil que incluyó tanto la venta masiva como la recuperación. Las semanas con menos de tres sesiones se excluyen mediante un filtro de sesiones; esta tuvo 4. El contexto histórico varía según el periodo: los resúmenes mensual, trimestral y semestral comparan sus periodos contra cada año del registro histórico.
Cuatro sesiones y luego un feriado
Una semana de negociación de cinco días es una suposición, no un hecho; esta tuvo cuatro sesiones. El panel de recibos verifica el cierre mediante la cinta: cero barras de SPY registradas el 3 de julio frente a 1560 barras de sesión regular durante los cuatro días negociados.
El SQL exacto detrás de cada cifra
SELECT
(SELECT uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS sessions_in_week,
(SELECT countIf((toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')) AS regular_bars_week,
(SELECT count() FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-03 00:00:00') AND window_start < toDateTime('2026-07-04 00:00:00')) AS jul3_spy_barsEl SQL exacto detrás de cada cifra
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
round(argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199), 2) AS spy_close,
round((argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) / any(prev) - 1) * 100, 1) AS change_pct,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
INNER JOIN (
SELECT d, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, argMaxIf(toFloat64(close), window_start, (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY d
)
) AS p ON toDate(toTimeZone(window_start, 'America/New_York')) = p.d
WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-06-29 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY et_date
ORDER BY et_dateLas cuatro sesiones cumplieron con el horario regular completo; las 1560 barras regulares equivalen exactamente a cuatro sesiones de 390 minutos. La semana cerró esencialmente plana (-0.1%) el 2026-07-02 antes del feriado; las ganancias de la semana se generaron en sus tres primeras sesiones.
Amplitud: cuánto subió el mercado
El aumento de un solo índice puede ocultar una caída general del mercado. Este panel contabiliza cada ticker con un cierre en ambos extremos de la semana; el conjunto excluido se detalla en lugar de omitirse.
El SQL exacto detrás de cada cifra
SELECT
countIf(chg > 0 AND NOT dropped) AS advancers,
countIf(chg < 0 AND NOT dropped) AS decliners,
countIf(chg = 0 AND NOT dropped) AS unchanged,
countIf(dropped) AS dropped_by_liquidity_filter,
count() AS tickers_with_both_closes
FROM (
SELECT ticker,
argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199)
- argMaxIf(toFloat64(close), window_start, toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) AS chg,
sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29')) < 1e6 AS dropped
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-26 00:00:00') AND window_start < toDateTime('2026-07-03 00:00:00')
GROUP BY ticker
HAVING countIf(toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-26') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
AND countIf(toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-06-29') AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199) > 0
)5047 tickers subieron durante la semana frente a 3525 que cayeron (39 sin cambios) — el avance fue amplio y no se limitó al nivel del índice. El filtro de liquidez apartó 3163 tickers con un volumen de negociación inferior a $1M durante toda la semana; estos se contabilizan aquí en lugar de ocultarse.
Los líderes del mercado: una acción por encima de los ETFs
El SQL exacto detrás de cada cifra
SELECT ticker,
round(sum(toFloat64(close) * toFloat64(volume)) / 1e9, 1) AS dollar_bn,
round(100 * sum(toFloat64(close) * toFloat64(volume)) / max(sum(toFloat64(close) * toFloat64(volume))) OVER (), 1) AS pct_of_leader
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-29 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
AND ticker NOT IN ('SPCX')
GROUP BY ticker
ORDER BY dollar_bn DESC
LIMIT 8MU lideró todo el mercado con un volumen de negociación de $190.2 mil millones en horario regular; SPY, el ETF más grande, representó el 66.4% de ese total. Que una sola empresa haya negociado más que el fondo índice principal del mercado durante una semana completa es el dato más destacado de la semana; esta página reporta el volumen del flujo, no su causa. Base: 29 de junio al 2 de julio en horario regular; se excluye un listado de junio con símbolo reutilizado a la espera de verificación de la entidad; sus detalles se encuentran en su propio análisis detallado.
El feriado desplazó los vencimientos semanales
¿Qué sucede con el vencimiento semanal de un viernes cuando el viernes es feriado? El tape de opciones lo responde directamente: este panel extrae la fecha de vencimiento de cada contrato negociado durante la semana y los clasifica.
El SQL exacto detrás de cada cifra
SELECT concat('20', substring(expiry_raw, 1, 2), '-', substring(expiry_raw, 3, 2), '-', substring(expiry_raw, 5, 2)) AS expiry,
round(sum(size) / 1e6, 1) AS contracts_m,
round(100 * sum(size) / max(sum(size)) OVER (), 1) AS pct_of_biggest
FROM (
SELECT substring(ticker, length(ticker) - 14, 6) AS expiry_raw, size
FROM global_markets.options_trades
WHERE sip_timestamp >= toDateTime64('2026-06-29 00:00:00', 9) AND sip_timestamp < toDateTime64('2026-07-03 00:00:00', 9)
)
GROUP BY expiry
ORDER BY contracts_m DESC
LIMIT 6El vencimiento más activo de la semana fue el 2026-07-02 —un jueves— con 74.1 millones de contratos, 42.2% por delante de la siguiente fecha. Debido al cierre del 3 de julio, el vencimiento "de viernes" de la semana se trasladó al jueves; los vencimientos diarios de lunes a miércoles y el mensual del 17 de julio completan la tabla. Las fechas de vencimiento se extraen nuevamente del símbolo OCC de cada contrato (la columna de vencimiento propia del tape no es confiable); la mecánica de semanas de vencimiento como esta se encuentra en la explicación sobre feriados.
Tasas: el bono a 10 años se recupera
El SQL exacto detrás de cada cifra
SELECT toString(date) AS d,
round(yield_10_year, 2) AS y10,
round(yield_2_year, 2) AS y2,
round((yield_10_year - yield_2_year) * 100, 0) AS spread_2s10s_bp
FROM global_markets.treasury_yields
WHERE date >= toDate('2026-06-26') AND date <= toDate('2026-07-02')
ORDER BY dateEl bono a 10 años pasó de 4.38% el viernes anterior a 4.48% para el 2026-07-01, mientras que el 2s10s spread se mantuvo cerca de 31 puntos básicos. Una aclaración: el dato del rendimiento de 2 años de julio aún no se había procesado cuando se generó esta página (4 filas hasta el 1 de julio); el panel lo incluirá en la próxima actualización.
El calendario: termina un trimestre y falta un día de presentaciones
El SQL exacto detrás de cada cifra
SELECT
(SELECT count() FROM global_markets.stocks_dividends WHERE ex_dividend_date >= toDate('2026-06-29') AND ex_dividend_date <= toDate('2026-07-02')) AS ex_div_events,
(SELECT count() FROM global_markets.stocks_splits WHERE execution_date >= toDate('2026-06-29') AND execution_date <= toDate('2026-07-02')) AS splits,
(SELECT count() FROM global_markets.stocks_ipos WHERE listing_date >= toDate('2026-06-29') AND listing_date <= toDate('2026-07-02')) AS ipos,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-29')) AS filings_jun29,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-06-30')) AS filings_jun30,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-01')) AS filings_jul1,
(SELECT uniqExact(accession_number) FROM global_markets.stocks_sec_edgar_index WHERE filing_date = toDate('2026-07-02')) AS filings_jul2,
(SELECT count() FROM global_markets.stocks_news WHERE published_utc >= toDateTime('2026-06-29 00:00:00') AND published_utc < toDateTime('2026-07-03 00:00:00')) AS news_articlesLa semana incluyó eventos ex-dividend de 2217, splits de 48 y nuevas cotizaciones de 7 hacia el cierre del trimestre. Las columnas de presentaciones muestran un error de calidad de datos de la semana: el índice de presentaciones de la SEC muestra 4439 presentaciones el 29 de junio y 4282 el 1 de julio, pero solo 31 el 30 de junio, el último día del trimestre. Los días de cierre de trimestre del año anterior registran miles. El vacío está en el feed de datos, no en lo que las empresas presentaron; cualquier conteo de presentaciones de junio o del Q2 que incluya el 30 de junio será menor de lo real hasta que el índice actualice los datos. Es parte de un patrón de fin de mes para 2026; la nota de diagnóstico contiene las pruebas, divulgadas aquí y en los resúmenes de junio y Q2.
Los cortos: un archivo truncado y tres completos
El SQL exacto detrás de cada cifra
SELECT toString(date) AS d,
uniqExact(ticker) AS tickers_on_file,
max(ticker) AS alphabetical_end,
round(100 * sum(toFloat64(short_volume)) / sum(toFloat64(total_volume)), 1) AS marked_short_pct
FROM (
SELECT date, ticker, any(short_volume) AS short_volume, any(total_volume) AS total_volume
FROM global_markets.stocks_short_volume
WHERE date >= toDate('2026-06-29') AND date <= toDate('2026-07-02')
GROUP BY date, ticker
)
GROUP BY date
ORDER BY dateEl volumen fuera de bolsa fue bajo, aproximadamente del 48.8% a mitad de semana; se trata de operaciones de market-maker rutinarias y no de una señal de squeeze. Las columnas de cobertura incluyen la advertencia: el archivo del 29 de junio está truncado en todo el mercado (5489 tickers que terminan en "SSUS" frente a unos 15,000 que terminan en "ZYME" en días completos), por lo que el 45.8% del 29 de junio se calcula a partir de un archivo parcial. El análisis profundo del 29 de junio contiene el estudio completo de todo el mercado.
Notas de datos
Notas completas de datos
- El 3 de julio fue un cierre TOTAL, no un cierre temprano. El 4 de julio de 2026 cayó en sábado; NYSE y Nasdaq observaron el feriado el viernes 3 de julio — se imprimieron barras de 0 SPY ese día. Una nota de los datos descubierta al regenerar esta página: la tabla del calendario de la bolsa es un feed de próximos feriados rotativo, y la fila del 3 de julio expiró de ella una vez pasado el feriado (estaba presente en la primera edición de esta página), por lo que el registro de cierre es el día de barra cero de la cinta; los detalles técnicos están en la explicación de feriados.
- El interés de posiciones cortas termina en la liquidación del 15 de junio. La liquidación bimestral de finales de junio no se había publicado cuando se generó esta página; nada de lo que aparece aquí la utiliza, y el resumen de junio contiene la divulgación completa. Esta publicación se regenerará cuando los datos estén disponibles.
- La brecha del índice de presentaciones del 30 de junio se divulga en línea arriba; la impresión del tesoro del 2 de julio está pendiente de ingesta.
- El archivo de volumen corto de FINRA del 29 de junio está truncado en todo el mercado; su ratio se muestra con su cobertura correspondiente en línea.
- Exclusión de líder de volumen: un listado de junio cotiza bajo un símbolo reutilizado y está excluido del leaderboard mientras se verifica la entidad (su propia publicación contiene los comprobantes).
Metodología
- El periodo comprende del 29 de junio al 2 de julio de 2026, las cuatro sesiones de negociación de la semana; el 3 de julio fue feriado bursátil. Los límites de las sesiones se verifican mediante las barras observadas, nunca se asumen (el conjunto de datos del calendario de la bolsa solo contiene feriados próximos; ver nota de datos).
- Las marcas de tiempo se almacenan en UTC y se filtran con límites UTC brutos; el horario regular en esta semana (EDT) es de 13:30 a 20:00 UTC. Los cierres corresponden a la última barra de un minuto del horario regular; el volumen en dólares es el producto del cierre de un minuto por el volumen de un minuto, sumado durante el horario regular.
- Las cifras semanales se comparan con el cierre del viernes anterior, calculado de forma independiente en la misma consulta que la de esta semana; nunca se leen de un valor almacenado. El ranking del año anterior se recalcula cada semana de la misma manera (horario regular según el reloj de la zona Eastern, guardia de sesión mínima, límite superior fijado al cierre de esta semana).
- La generación se realiza a través de la ruta de solo lectura restringida; la página pública nunca consulta datos en vivo. Estado del almacén al 5 de julio de 2026.
Esta es la primera edición del resumen semanal permanente; la edición de la próxima semana cubrirá del 6 al 10 de julio y tendrá un enlace de retorno aquí. El resumen diario del 29 de junio cubre el lunes con detalle a nivel diario.