el mercado de acciones esta abierto hoy
Consulte si el mercado de valores de EE. UU. está abierto hoy. Incluye calendario de feriados, horarios de sesión y el efecto de los cierres en sus órdenes.
El mercado de acciones de EE. UU. opera de lunes a viernes, de 9:30 am a 4:00 pm hora del Este, excepto en días feriados programados y algunos cierres anticipados a la 1:00 pm. Por lo tanto, determinar si el mercado está abierto hoy requiere tres verificaciones: si es un día de semana, si coincide con el calendario de feriados y la hora actual de la sesión. Esta página contrasta estos tres factores con los registros en vivo de la bolsa en cada actualización; el sello de "datos a partir de" arriba indica la vigencia de la información. Para consultar el horario por sesión, vea horarios del mercado de acciones; para el calendario completo, feriados del mercado y cierres anticipados.
¿Está abierto el mercado de valores ahora mismo?
El panel a continuación calcula la respuesta en el momento en que se actualizaron los datos de esta página. Verifica el día de la semana, consulta la fecha actual en el feed de días festivos de la bolsa y sitúa el reloj de la hora del Este dentro o fuera de los horarios oficiales: premarket desde las 4:00 am, la sesión regular desde las 9:30 am y after-hours desde el cierre hasta las 8:00 pm.
El SQL exacto detrás de cada cifra
WITH
toTimeZone(now(), 'America/New_York') AS now_et,
toDate(now_et) AS today_et,
toHour(now_et) * 60 + toMinute(now_et) AS min_now,
(SELECT countDistinct(date) FROM global_markets.stocks_market_holidays
WHERE date = toDate(toTimeZone(now(), 'America/New_York')) AND status = 'closed') AS today_full_holiday,
(SELECT countDistinct(date) FROM global_markets.stocks_market_holidays
WHERE date = toDate(toTimeZone(now(), 'America/New_York')) AND status = 'early-close') AS today_early,
(SELECT any(name) FROM global_markets.stocks_market_holidays
WHERE date = toDate(toTimeZone(now(), 'America/New_York'))) AS today_holiday_name,
if(today_early = 1, 780, 960) AS close_min,
if(today_early = 1, 1020, 1200) AS after_hours_end,
(SELECT min(d) FROM (SELECT toDate(toTimeZone(now(), 'America/New_York')) + arrayJoin(range(1, 11)) AS d)
WHERE toDayOfWeek(d) <= 5
AND d NOT IN (SELECT date FROM global_markets.stocks_market_holidays WHERE status = 'closed')) AS next_sess_after_today,
toDayOfWeek(today_et) <= 5 AND today_full_holiday = 0 AS today_is_session
SELECT
toString(today_et) AS date_checked,
formatDateTime(today_et, '%W') AS weekday,
formatDateTime(now_et, '%H:%i') AS time_checked_et,
multiIf(toDayOfWeek(today_et) >= 6, 'weekend',
today_full_holiday = 1, concat('holiday — ', today_holiday_name),
today_early = 1, concat('early close (1:00 pm) — ', today_holiday_name),
'normal weekday') AS todays_calendar,
multiIf(NOT today_is_session, 'CLOSED',
min_now < 240, 'CLOSED (overnight)',
min_now < 570, 'PREMARKET',
min_now < close_min, 'OPEN',
min_now < after_hours_end, 'AFTER-HOURS',
'CLOSED (overnight)') AS market_status,
toString(if(today_is_session AND min_now < close_min, today_et, next_sess_after_today)) AS next_regular_session,
dateDiff('day', today_et, if(today_is_session AND min_now < close_min, today_et, next_sess_after_today)) AS days_to_next_sessionAl momento de las 09:00 ET del Thursday, 2026-07-23, el estado calculado fue PREMARKET, con la entrada de calendario de hoy como "normal weekday". La próxima apertura de la sesión regular en el cronograma —hoy mismo si el estado es PREMARKET o OPEN— es a las 2026-07-23. Esa fecha ya excluye fines de semana y todos los días festivos de cierre total, y nunca es de más de unos pocos días de diferencia, incluso durante un fin de semana largo. ¿Lee esto después de la marca de tiempo? Las mismas tres verificaciones se pueden hacer manualmente en segundos: el día de la semana, la tabla de días festivos a continuación y el reloj ET.
El próximo cierre programado — y todo lo que sigue
El calendario de futuros proviene directamente del feed de la bolsa. Un detalle importante: la tabla incluye el día de hoy si hoy es un día festivo o de cierre temprano; la consulta solicita cada cierre desde hoy en adelante, no estrictamente después de hoy; por lo tanto, en una mañana festiva, la primera fila y el panel de estado coinciden.
El SQL exacto detrás de cada cifra
SELECT toString(date) AS closure_date,
formatDateTime(date, '%a') AS falls_on,
any(name) AS holiday,
any(status) AS day_status,
any(if(status = 'early-close', formatDateTime(toTimeZone(close, 'America/New_York'), '%H:%i'), '')) AS closes_at_et,
dateDiff('day', today(), date) AS days_away
FROM global_markets.stocks_market_holidays
WHERE exchange = 'NYSE' AND date >= today()
GROUP BY date
ORDER BY date
LIMIT 16La próxima interrupción programada es el Labor Day de 2026-09-07 (closed), 46 días después de la marca de actualización. Cualquier día de la semana que no esté en esta tabla tiene una sesión normal de 9:30 a 4:00. Los días de cierre temprano terminan la negociación regular a la 1:00 pm hora del Este y se concentran alrededor de Thanksgiving, la víspera de Navidad y el cuatro de julio; la subasta de cierre sigue realizándose esos días, solo que se ejecuta tres horas antes.
¿Cuántos días permanece cerrado el mercado cada año?
"Aproximadamente nueve o diez días festivos al año" es la respuesta común, pero esta página puede contar en lugar de estimar. El feed de la bolsa solo muestra los cierres futuros, por lo que los cierres pasados se recuperan del registro de datos: un día de semana en el que el SPY registró cero barras de minuto en la sesión regular fue un cierre completo, y uno que registró aproximadamente media sesión (unas 210 barras en lugar de 390) fue un cierre temprano.
El SQL exacto detrás de cada cifra
WITH day_bars AS (
SELECT cal.day AS day, ifNull(t.bars, 0) AS bars
FROM (SELECT makeDate(toYear(today()), 1, 1) + arrayJoin(range(370)) AS day) AS cal
LEFT JOIN (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(makeDate(toYear(today()), 1, 1), 'America/New_York')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
) AS t ON t.d = cal.day
WHERE toDayOfWeek(cal.day) BETWEEN 1 AND 5
AND cal.day <= today() - 4
),
past AS (
SELECT countIf(bars = 0) AS past_full, countIf(bars BETWEEN 120 AND 330) AS past_early
FROM day_bars
),
ahead AS (
SELECT countDistinctIf(date, status = 'closed') AS ahead_full,
countDistinctIf(date, status = 'early-close') AS ahead_early
FROM global_markets.stocks_market_holidays
WHERE date > today() - 4 AND toYear(date) = toYear(today())
)
SELECT category, already_passed, still_ahead, already_passed + still_ahead AS total, toString(toYear(today())) AS calendar_year
FROM (
SELECT 'full closure' AS category, past.past_full AS already_passed, ahead.ahead_full AS still_ahead, 1 AS ord FROM past, ahead
UNION ALL
SELECT 'early close (1:00 pm)' AS category, past.past_early AS already_passed, ahead.ahead_early AS still_ahead, 2 AS ord FROM past, ahead
)
ORDER BY ord2026 registra 10 cierres completos — 7 ya transcurridos, 3 aún por venir — además de 2 cierres tempranos programados a la 1:00 pm, 2 de los cuales aún faltan. (Un cierre ocurrido en los últimos días puede no aparecer brevemente en ninguna de las dos cuentas mientras se procesa el retraso de ingesta del registro; el desglose se autocorrige en la siguiente actualización). Los fines de semana completan el resto de los días sin actividad: si se restan los aproximadamente 104 días de fin de semana y estos días festivos de 365, un año deja cerca de 250 sesiones de trading.
El registro de la cinta: la sesión más reciente
El calendario indica lo que debería suceder; la cinta indica lo que ocurrió. El siguiente panel muestra la sesión más reciente observada en nuestra cinta de barras de un minuto de SPY, su conteo de barras, el número de operaciones de opciones de SPY registradas el mismo día y la media jornada más reciente en toda la cinta histórica.
El SQL exacto detrás de cada cifra
WITH rth AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 450
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
last_sess AS (
SELECT max(d) AS last_d
FROM rth
WHERE bars >= 120 AND d < toDate(toTimeZone(now(), 'America/New_York'))
),
opt AS (
SELECT round(count() / 1e3, 0) AS spy_option_prints_thousands
FROM global_markets.options_trades
WHERE ticker >= 'O:SPY2' AND ticker < 'O:SPY3'
AND sip_timestamp >= toDateTime((SELECT last_d FROM last_sess), 'America/New_York')
AND sip_timestamp < toDateTime((SELECT last_d FROM last_sess) + 1, 'America/New_York')
),
last_early AS (
SELECT toString(max(d)) AS last_early_close_date,
argMax(bars, d) AS its_bars
FROM rth WHERE bars BETWEEN 120 AND 330
)
SELECT toString((SELECT last_d FROM last_sess)) AS most_recent_session,
formatDateTime((SELECT last_d FROM last_sess), '%W') AS weekday,
(SELECT bars FROM rth WHERE d = (SELECT last_d FROM last_sess)) AS regular_minute_bars,
(SELECT spy_option_prints_thousands FROM opt) AS spy_option_prints_thousands,
(SELECT last_early_close_date FROM last_early) AS last_early_close,
(SELECT its_bars FROM last_early) AS early_close_barsLa sesión más reciente en nuestra cinta es 2026-07-21 (Tuesday), que registró 390 barras de un minuto de sesión regular; un día completo tiene aproximadamente 390 barras y un cierre temprano tiene aproximadamente 210. La misma sesión tuvo alrededor de 1371 mil operaciones individuales de opciones de SPY: el mercado de opciones sigue el calendario de acciones, incluyendo días festivos y medias jornadas, y los vencimientos que caen en viernes cerrado se adelantan un día. El cierre temprano más reciente en la cinta fue 2025-12-24, con 211 barras de un minuto, la forma medida de una media jornada a la 1:00 pm. Una nota importante: este almacén procesa la información con un retraso de uno a dos días, por lo que la "sesión más reciente" aquí puede tener un desfase de uno o dos días respecto a la sesión real más reciente.
Cuando el mercado cierra sin previo aviso
Los cierres programados figuran en el calendario; los imprevistos no. Son poco comunes —apenas unos pocos por década— y el registro de transacciones guarda la evidencia: un día hábil que debería haber registrado 390 barras y no registró ninguna.
El SQL exacto detrás de cada cifra
WITH events AS (
SELECT arrayJoin([
(toDate('2012-10-29'), 'Hurricane Sandy — day 1'),
(toDate('2012-10-30'), 'Hurricane Sandy — day 2'),
(toDate('2012-10-31'), 'Reopening after Sandy'),
(toDate('2018-12-05'), 'Mourning — George H. W. Bush'),
(toDate('2025-01-09'), 'Mourning — Jimmy Carter')
]) AS e
),
tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2012-10-29 00:00:00' AND window_start < '2012-11-01 12:00:00')
OR (window_start >= '2018-12-05 00:00:00' AND window_start < '2018-12-06 12:00:00')
OR (window_start >= '2025-01-09 00:00:00' AND window_start < '2025-01-10 12:00:00'))
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
)
SELECT toString(e.1) AS closure_date,
formatDateTime(e.1, '%a') AS falls_on,
e.2 AS name,
toUInt32(ifNull(t.bars, 0)) AS spy_regular_session_bars
FROM events
LEFT JOIN tape AS t ON t.d = events.e.1
ORDER BY e.1El huracán Sandy mantuvo a ambas bolsas principales sin operar el 2012-10-29 y el 2012-10-30 —el primer cierre por clima de varios días desde 1888— y la sesión de reapertura el 2012-10-31 registró un total de 390 barras. Los días nacionales de luto cerraron el mercado el 2018-12-05 (Presidente George H. W. Bush) y el 2025-01-09 (Presidente Jimmy Carter). El cierre imprevisto más largo de la era moderna —del 11 al 14 de septiembre de 2001, cuatro sesiones consecutivas— es anterior a nuestros datos por minuto, que comienzan en 2003. Cada cierre mencionado arriba aparece en el registro como 0 barras de sesión regular: no hubo operaciones.
¿Qué sucede con una orden colocada mientras el mercado está cerrado?
Nada se ejecuta mientras el mercado está cerrado. Una orden enviada un sábado, en un día festivo o a las 2:00 am simplemente queda en cola en su broker hasta la siguiente sesión; una orden de mercado en cola se transacciona al precio que determine la subasta de apertura, días después de haber hecho clic. El gap entre el cierre de una sesión y la primera cotización de la siguiente es el riesgo que usted acepta, y es medible:
El SQL exacto detrás de cada cifra
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
round(argMin(toFloat64(open), window_start), 2) AS open_px,
round(argMax(toFloat64(close), window_start), 2) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 75
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
paired AS (
SELECT d,
open_px,
lagInFrame(d) OVER (ORDER BY d) AS prev_d,
lagInFrame(close_px) OVER (ORDER BY d) AS prev_close
FROM daily
)
SELECT concat(formatDateTime(prev_d, '%a '), toString(prev_d)) AS last_session_before,
concat(formatDateTime(d, '%a '), toString(d)) AS reopening_session,
dateDiff('day', prev_d, d) AS days_dark,
toString(prev_close) AS close_before_break,
toString(open_px) AS reopening_print,
round((open_px - prev_close) / prev_close * 100, 2) AS gap_pct
FROM paired
WHERE prev_close > 0 AND dateDiff('day', prev_d, d) >= 3
ORDER BY dLa tabla abarca los últimos 10 fines de semana y fines de semana largos; la columna days_dark marca los descansos festivos de cuatro días. El más reciente fue del Fri 2026-07-17 al Mon 2026-07-20 (3 días calendario sin actividad): el cierre de la sesión regular de SPY antes del descanso fue de $743.2 y la cotización de reapertura fue de $747.06; un gap de 0.52% que una orden de mercado en cola habría aceptado sin previo aviso. Una orden límite establece un precio máximo, a riesgo de no ejecutarse; por qué las acciones tienen gaps durante la noche explica la mecánica detrás de estos movimientos.
Husos horarios, el mercado de bonos y el resto del mundo
Tres desajustes generan la mayor parte de la confusión sobre si un mercado está abierto o no. Husos horarios: el horario oficial es el de la zona Este —las 9:30 am ET son las 6:30 am en el Pacífico y las 2:30 pm en Londres la mayor parte del año— y las fechas del mercado corresponden al horario ET, por lo que un lector en Asia puede tener su "hoy" dividido entre dos sesiones de EE. UU. El mercado de bonos: los Treasuries se negocian con el calendario de SIFMA, no con el de la NYSE; este observa todos los feriados del mercado de acciones más dos adicionales, y sus cierres anticipados son recomendaciones de las 2:00 pm que ocurren con más frecuencia que los medios días de la bolsa a la 1:00 pm. La divergencia de jornada completa es visible en los datos:
El SQL exacto detrás de cada cifra
WITH stock_days AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= today() - 370
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
HAVING count() >= 100
)
SELECT toString(d) AS session_date,
formatDateTime(d, '%W') AS weekday
FROM stock_days
WHERE d <= (SELECT max(date) FROM global_markets.treasury_yields)
AND d NOT IN (SELECT date FROM global_markets.treasury_yields WHERE date >= today() - 370)
ORDER BY dEn el último año hubo exactamente 2 días de semana en los que el mercado de acciones tuvo una sesión completa y no se registró ningún rendimiento de los Treasuries —2025-10-13 y 2025-11-11, uno en octubre y otro en noviembre: Columbus Day y Veterans Day, los dos feriados federales en los que la renta variable opera sin interrupción. El resto del mundo: las bolsas en el extranjero mantienen sus propios calendarios y los futuros de índices se negocian casi las veinticuatro horas; por eso un titular puede decir que "las acciones están cayendo" a las 3:00 am ET mientras todas las bolsas de EE. UU. están cerradas. El horario extendido de cada sesión de EE. UU. funciona de 4:00 am a 9:30 am y de 4:00 pm a 8:00 pm ET, con menor liquidez y un spread más amplio; los detalles técnicos se encuentran en la guía de horario extendido.
Preguntas frecuentes
¿Está abierto el mercado de valores ahora mismo?
Según la última actualización de datos de esta página — 09:00 ET del 2026-07-23 — el estado calculado fue PREMARKET. Después de esa marca, la regla es sencilla: días de semana de 9:30 am a 4:00 pm ET, excluyendo las fechas de la tabla de feriados arriba.
¿Estará abierto el mercado de valores mañana?
Mañana será una sesión normal, a menos que sea sábado, domingo o una fecha incluida en la tabla de cierres arriba. La sesión regular más próxima en el calendario según la actualización de esta página — incluyendo hoy, si el mercado está abierto — es el 2026-07-23.
¿Estará abierto el mercado de valores en Nochebuena?
Cuando el 24 de diciembre cae en día de semana, las bolsas de valores de EE. UU. suelen tener una sesión reducida que cierra a la 1:00 pm ET; si cae en fin de semana, no hay sesión. El día de Navidad es siempre un cierre total; las fechas exactas para este año están en la tabla del calendario arriba.
¿Estará abierto el mercado de valores en Black Friday?
Sí. El viernes después de Thanksgiving es una media jornada programada: el trading regular termina a la 1:00 pm ET en lugar de las 4:00 pm — aproximadamente 210 minute bars en la cinta en lugar de 390.
¿Está abierto el mercado de bonos hoy?
Usualmente cuando lo están las acciones, pero no siempre. El mercado de Treasuries sigue el calendario de SIFMA: todos los feriados del mercado de acciones más Columbus Day y Veterans Day, con cierres anticipados más frecuentes (y más tempranos, a las 2:00 pm). El registro del último año muestra 2 días de semana donde las acciones operaron pero no se publicaron rendimientos de Treasuries.
Cada panel arriba es una consulta almacenada y versionada con su código SQL correspondiente; puede expandir cualquier panel para auditarlo. Para verificar cualquier fecha, sesión o gap por su cuenta, realice una consulta en inglés simple en la terminal de Strasmore.