今天美国股市开市吗?交易时间与休市日历
查询美国股市今天是否开市、实时交易状态、交易日历、下一次休市及提前收市安排,了解休市期间下单会发生什么。
美国股市通常于周一至周五东部时间上午9:30至下午4:00开市,但预定休市日以及少数下午1:00提前收市日除外。因此,“今天股市开市吗?”实际上只需检查三点:今天是否为工作日、是否属于休市日历中的日期,以及当前处于交易时段的哪个时间点。本页面每次刷新时都会根据交易所实时记录完成这三项检查。上方的“数据截至”时间戳显示了数据的新鲜度。逐个交易时段查看开闭市时间,请参阅股市交易时间;完整日历请参阅市场休市日和提前收市日。
股市现在开市吗?
下方面板会计算本页面数据最近一次刷新时的状态。系统会检查星期几,在交易所节假日数据中查询当天日期,并根据美东时间判断当前时刻处于官方交易时段内还是之外:盘前交易从凌晨4:00开始,常规交易时段从上午9:30开始,盘后交易从收盘持续至晚上8:00。
| 检查日期 | 星期 | 检查时间(美东) | 今日日历 | 市场状态 | 下一常规交易时段 | 距下一交易时段天数 |
|---|---|---|---|---|---|---|
| 2026-10-14 | Wednesday | 09:00 | normal weekday | PREMARKET | 2026-10-14 | 0 |
每个数字背后的完整 SQL
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_session截至09:00(美东时间)Wednesday,2026-10-14,计算结果为PREMARKET,当天日历记录为“normal weekday”。日程中下一次常规交易时段开盘时间为2026-10-14;如果当前状态为PREMARKET或OPEN,则下一次开盘日就是当天。该日期已排除周末和所有全天休市的节假日,即使遇到较长的节假日周末,下一次开盘也不会相隔数日以上。若您是在该时间戳之后阅读本文,手动完成同样的三项检查只需几秒:星期几、下方的节假日表,以及美东时间时钟。
下一次预定休市及其后的安排
这份前瞻日历直接来自交易所数据源。有一点需要注意:如果今天本身是节假日或提前收市日,表格会包含今天。查询范围是从今天起的所有休市安排,而不是严格意义上的“今天之后”。因此,在节假日上午,表格首行会与上方的状态面板一致。
| 休市日期 | 对应星期 | 节假日 | 日期状态 | 收市时间(美东) | 相隔天数 |
|---|---|---|---|---|---|
| 2026-11-26 | Thu | Thanksgiving | closed | 43 | |
| 2026-11-27 | Fri | Thanksgiving | early-close | 13:00 | 44 |
| 2026-12-24 | Thu | Christmas | early-close | 13:00 | 71 |
| 2026-12-25 | Fri | Christmas | closed | 72 | |
| 2027-01-01 | Fri | New Years Day | closed | 79 | |
| 2027-01-18 | Mon | Martin Luther King, Jr. Day | closed | 96 | |
| 2027-02-15 | Mon | Washington's Birthday | closed | 124 | |
| 2027-03-26 | Fri | Good Friday | closed | 163 | |
| 2027-05-31 | Mon | Memorial Day | closed | 229 | |
| 2027-06-18 | Fri | Juneteenth | closed | 247 | |
| 2027-07-05 | Mon | Independence Day | closed | 264 | |
| 2027-09-06 | Mon | Labor Day | closed | 327 |
每个数字背后的完整 SQL
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 16下一次预定交易中断是 Thanksgiving,时间为 2026-11-26(closed),距离刷新时间还有 43 天。凡未列入该表的工作日,均为正常的美东时间上午 9:30 至下午 4:00 交易时段。提前收市日的常规交易于美东时间下午 1:00 结束,主要集中在感恩节、平安夜和美国独立日附近;收盘竞价仍会在这些日子进行,只是提前三小时执行。
每年市场有多少天休市?
“每年大约九到十个假日”是常见的笼统答案。本页可以直接统计,而不是估算。交易所数据源只记录尚未到来的休市日,因此已经过去的休市日需要从成交记录中恢复:如果某个工作日的 SPY 没有打印任何常规交易时段分钟线,说明全天休市;如果大约只打印了半个交易时段(约 210 根,而不是 390 根),说明当天提前收市。
| 类别 | 已过去 | 仍在未来 | 总计 | 日历年 |
|---|---|---|---|---|
| full closure | 8 | 2 | 10 | 2026 |
| early close (1:00 pm) | 0 | 2 | 2 | 2026 |
每个数字背后的完整 SQL
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 包含 10 个全天休市日,其中 8 个已经过去,2 个尚未到来;此外还有 2 个安排在下午 1:00 收市的提前收市日,其中 2 个尚未到来。(最近几天内发生的休市日,在成交记录完成导入前,可能会暂时不计入任何一项;下一次刷新后,分类会自动修正。)周末构成其余休市日:从 365 天中扣除约 104 个周末日和这些假日后,一年大约有 250 个交易时段。
交易记录:最近一个交易时段
日历说明应该发生什么;交易记录显示实际发生了什么。下方面板提取了我们 SPY 分钟K线交易记录中最近实际观测到的交易时段、K线数量、当日打印的 SPY 期权交易笔数,以及回溯交易记录中最近的半日交易时段。
| 最近交易时段 | 星期 | 常规分钟K线 | SPY期权成交记录(千) | 最近提前收市 | 提前收市K线 |
|---|---|---|---|---|---|
| 2026-10-13 | Tuesday | 210 | 1248 | 2026-10-13 | 210 |
每个数字背后的完整 SQL
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_bars我们交易记录中的最近一个交易时段是 2026-10-13(Tuesday)。该时段打印了 210 根常规交易时段分钟K线。完整交易日通常约有 390 根,提前收市日约有 210 根。同一交易时段约有 1248 千笔独立的 SPY 期权交易成交。期权市场遵循股票市场日历,包括节假日和半日交易时段;落在休市周五的到期日会提前至前一个交易日。交易记录中最近一次提前收市日为 2026-10-13,共 210 根分钟K线,呈现出下午 1:00 收市半日交易的实际形态。需要注意的是,该数据仓库的录入存在一至两天延迟,因此这里的“最近一个交易时段”可能比实际最近交易时段晚一至两天。
市场毫无预警地收盘
计划内休市会出现在日历上;非计划休市则不会。此类情况十分罕见,十年也只有几次。交易记录会留下痕迹:一个工作日原本应有390根K线,却一根也没有。
| 休市日期 | 对应星期 | 名称 | SPY常规交易时段K线 |
|---|---|---|---|
| 2012-10-29 | Mon | Hurricane Sandy — day 1 | 0 |
| 2012-10-30 | Tue | Hurricane Sandy — day 2 | 0 |
| 2012-10-31 | Wed | Reopening after Sandy | 390 |
| 2018-12-05 | Wed | Mourning — George H. W. Bush | 0 |
| 2025-01-09 | Thu | Mourning — Jimmy Carter | 0 |
每个数字背后的完整 SQL
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.1飓风桑迪导致两大交易所于2012-10-29和2012-10-30全天休市。这是自1888年以来首次因天气连续多日休市。2012-10-31重新开市时,完整交易时段打印了390根K线。美国还曾因全国哀悼日于2018-12-05(老布什总统逝世)和2025-01-09(吉米·卡特总统逝世)休市。现代以来最长的非计划休市发生在2001年9月11日至14日,连续四个交易日。但我们的分钟数据始于2003年,因此不包含这段时期。上述每次休市在交易记录中均显示为0根正常交易时段K线:没有任何成交。
市场休市期间提交的订单会发生什么?
市场休市期间不会有任何订单成交。在周六、节假日或凌晨2:00提交的订单,只会在券商处排队,直到下一交易时段。排队中的市价单将按照开盘集合竞价发现的价格成交,即使这距离您点击下单已经过去数日。一个交易时段收盘价与下一交易时段首笔成交价之间的缺口,就是您需要承担的风险敞口,而且可以量化:
| 中断前最后交易时段 | 重新开市交易时段 | 停牌天数 | 中断前收盘价 | 复牌首笔价 | 跳空幅度 (%) |
|---|---|---|---|---|---|
| Fri 2026-07-31 | Mon 2026-08-03 | 3 | 746.81 | 749.44 | 0.35 |
| Fri 2026-08-07 | Mon 2026-08-10 | 3 | 773.2 | 772.6 | -0.08 |
| Fri 2026-08-14 | Mon 2026-08-17 | 3 | 776.3 | 776.18 | -0.02 |
| Fri 2026-08-21 | Mon 2026-08-24 | 3 | 765.69 | 764.78 | -0.12 |
| Fri 2026-08-28 | Mon 2026-08-31 | 3 | 769.34 | 767.33 | -0.26 |
| Fri 2026-09-04 | Tue 2026-09-08 | 4 | 770.23 | 769.07 | -0.15 |
| Fri 2026-09-11 | Mon 2026-09-14 | 3 | 764.2 | 759 | -0.68 |
| Fri 2026-09-18 | Mon 2026-09-21 | 3 | 761.64 | 766.25 | 0.61 |
| Fri 2026-09-25 | Mon 2026-09-28 | 3 | 771.3 | 768.35 | -0.38 |
| Fri 2026-10-02 | Mon 2026-10-05 | 3 | 769.65 | 769.69 | 0.01 |
| Fri 2026-10-09 | Mon 2026-10-12 | 3 | 778.53 | 778.78 | 0.03 |
每个数字背后的完整 SQL
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 d表格涵盖最近的11个周末及长周末,其中days_dark列标出了四天的节假日休市。最近一次休市从Fri 2026-10-09持续至Mon 2026-10-12(市场连续3个日历日休市):SPY在休市前常规交易时段的收盘价为$778.53,重新开市后的首笔成交价为$778.78。如果在休市期间排队提交市价单,订单将在事先无法看到成交价的情况下接受0.03%的跳空。限价单则可以锁定最高买入价或最低卖出价,但代价是订单可能无法成交;股票为何会隔夜跳空介绍了这些价格变动背后的机制。
时区、债券市场与世界其他地区
以下三个错配造成了大部分“市场是否开市”的疑惑。时区:官方交易时间以东部时间为准。全年大部分时间,东部时间上午 9:30 相当于太平洋时间上午 6:30、伦敦时间下午 2:30。市场日期也以东部时间为准,因此亚洲读者所说的“今天”可能横跨美国市场的两个交易时段。债券市场:美国国债按照 SIFMA 日历交易,而不是按照 NYSE 日历交易。债券市场除遵守所有股市假日外,还额外遵守两个假日;其提前收市时间为下午 2:00,这类安排出现的频率高于股市下午 1:00 的半日市。全天交易日的差异可以从数据中看出:
| 交易日期 | 星期 |
|---|---|
| 2025-10-13 | Monday |
| 2025-11-11 | Tuesday |
每个数字背后的完整 SQL
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 d在过去一年中,股票市场共有恰好 2 个工作日进行全天交易,但没有任何国债收益率成交记录;2025-10-13 和 2025-11-11,分别发生在10月和11月,即哥伦布日和退伍军人节。这两个联邦假日中,股票市场照常交易。世界其他地区:海外交易所按照各自的日历运行,指数期货几乎全天候交易。因此,新闻标题可能在美国东部时间凌晨 3:00 宣称“股市正在下跌”,而此时美国所有股票交易所都已闭市。每个美国交易时段前后的延长交易时间为东部时间凌晨 4:00 至上午 9:30,以及下午 4:00 至晚上 8:00。此时流动性更低、买卖价差更大;具体机制请参阅延长交易时段指南。
常见问题
当前股市开市吗?
截至本页最近一次数据刷新,时间为 09:00 ET,日期为 2026-10-14,计算结果显示市场状态为 PREMARKET。在该时间点之后,判断规则很简单:美国东部时间工作日9:30至16:00开市,但须排除上方节假日表中的日期。
明天股市开市吗?
除非明天是周六、周日,或属于上方休市表中的日期,否则将按正常交易日开市。截至本页刷新时点(包括今天),日历上最近的下一个正常交易日,即市场开市日,是 2026-10-14。
圣诞前夜股市开市吗?
如果12月24日是工作日,美国证券交易所通常会缩短交易时段,并于美国东部时间13:00收市;如果12月24日落在周末,则全天不开市。圣诞节当天始终全天休市,本年度的具体日期见上方日历表。
黑色星期五股市开市吗?
开市。感恩节后的周五是预定的半日交易日:正常交易于美国东部时间13:00结束,而不是16:00。交易记录上约有210根分钟K线,而不是390根。
今天债券市场开市吗?
通常与股票市场相同,但并非总是如此。美国国债市场遵循SIFMA日历:除包括所有股市休市日外,还包括哥伦布日和退伍军人节,并且更常见提前收市,收市时间为14:00。过去一年的交易记录显示,有 2 个工作日股票市场交易,但美国国债收益率没有成交报价。
上方每个面板都是已存储且有版本记录的查询,其完整SQL位于下方。展开任一面板即可进行审计。如需自行核查任何日期、交易时段或缺口,可在Strasmore终端中用自然语言提问。