Le marché boursier est-il ouvert aujourd'hui
Vérifiez l'état d'ouverture du marché américain. Consultez le calendrier des jours fériés, les horaires de session et l'impact sur vos ordres en cours.
Le marché boursier américain est ouvert du lundi au vendredi, de 9h30 à 16h00 (heure de l'Est), sauf lors des jours fériés et de quelques clôtures anticipées à 13h00. Pour savoir si le marché est ouvert aujourd'hui, trois critères doivent être vérifiés : s'il s'agit d'un jour de semaine, si la date figure au calendrier des jours fériés, et l'heure actuelle au sein de la session. Cette page compare ces trois éléments aux registres des bourses en temps réel à chaque actualisation. L'horodatage « données à partir de » indique la fraîcheur des informations. Pour consulter les horaires par session, consultez les horaires du marché boursier ; pour le calendrier complet, consultez les jours fériés et les clôtures anticipées.
Le marché boursier est-il ouvert actuellement ?
Le tableau ci-dessous calcule la réponse au moment de la dernière actualisation des données de cette page. Il vérifie le jour de la semaine, consulte le calendrier des jours fériés de la bourse et compare l'heure de l'heure de l'Est (ET) avec les horaires officiels : le premarket commence à 4h00, la session régulière à 9h30, et l'after-hours s'étend de la clôture jusqu'à 20h00.
Le SQL exact derrière chaque chiffre
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_sessionAu 23:44 ET le Wednesday 2026-07-22, le statut calculé est CLOSED (overnight), avec l'entrée calendaire du jour « normal weekday ». La prochaine ouverture de session régulière prévue — aujourd'hui même si le statut est PREMARKET ou OPEN — est à 2026-07-23. Cette date exclut déjà les week-ends et tous les jours fériés de fermeture complète. Elle n'est jamais distante de quelques jours, même lors d'un long week-end prolongé. Vous lisez ceci après l'horodatage ? Les trois vérifications manuelles sont rapides : le jour de la semaine, le tableau des jours fériés ci-dessous et l'horloge ET.
La prochaine fermeture prévue — et les suivantes
Le calendrier des échéances provient directement du flux de la bourse. Une nuance importante : le tableau inclut la date du jour si celle-ci est un jour férié ou une clôture anticipée. La requête demande toutes les fermetures à partir d'aujourd'hui, et non strictement après cette date. Ainsi, lors d'un matin férié, la première ligne et le panneau de statut concordent.
Le SQL exact derrière chaque chiffre
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 prochaine interruption prévue est le Labor Day le 2026-09-07 (closed), soit dans 46 jours par rapport à l'horodatage de mise à jour. Tout jour de semaine non répertorié dans ce tableau correspond à une session normale de 9h30 à 16h00. Les jours de clôture anticipée se terminent à 13h00 (heure de l'Est) et concernent principalement Thanksgiving, la veille de Noël et le 4 juillet ; l'closing auction a toujours lieu ces jours-là, mais elle s'effectue simplement trois heures plus tôt.
Combien de jours le marché est-il fermé chaque année ?
La réponse habituelle est d'environ neuf ou dix jours fériés par an — cette page permet de compter précisément plutôt que d'estimer. Le flux de l'échange ne contient que les fermetures à venir ; les fermetures passées sont récupérées via le tape : un jour de semaine où le SPY affiche zéro bougie de session régulière correspond à une fermeture complète, tandis qu'une session d'environ une demi-journée (environ 210 bougies au lieu de 390) correspond à une clôture anticipée.
Le SQL exact derrière chaque chiffre
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 comprend 10 fermetures complètes — 7 déjà passées, 3 à venir — auxquelles s'ajoutent 2 clôtures anticipées à 13h00, dont 2 sont encore à venir. (Une fermeture survenue ces derniers jours peut ne figurer temporairement dans aucun des deux décomptes le temps que le délai d'ingestion du tape se résorbe ; l'écart se corrige automatiquement lors de la prochaine actualisation.) Les week-ends complètent le calcul : en soustrayant environ 104 jours de week-end et ces jours fériés de 365, il reste environ 250 sessions de trading par an.
Analyse du flux : la dernière séance
Le calendrier prévoit ce qui devrait se passer ; le flux (the tape) indique ce qui s'est réellement passé. Le tableau ci-dessous présente la dernière séance observée sur notre flux de bougies d'une minute pour le SPY, son nombre de bougies, le volume d'échanges d'options SPY enregistrés le même jour, et la dernière demi-journée enregistrée sur l'historique.
Le SQL exact derrière chaque chiffre
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 dernière séance sur notre flux est 2026-07-21 (Tuesday), qui a généré 390 bougies de session régulière — une journée complète compte environ 390 bougies, et une clôture anticipée environ 210. Cette même séance a enregistré environ 1371 mille transactions d'options SPY : le marché des options suit le calendrier boursier, incluant les jours fériés et les demi-journées, et les échéances tombant un vendredi de clôture sont décalées d'un jour. La dernière clôture anticipée sur le flux était le 2025-12-24, avec 211 bougies — ce qui correspond à une demi-journée se terminant à 13h00. Note importante : ce système intègre les données avec un décalage de un à deux jours ; la « dernière séance » affichée ici peut donc avoir un retard de un ou deux jours par rapport à la séance réelle.
Quand le marché ferme sans prévenir
Les fermetures programmées figurent au calendrier ; les fermetures imprévues non. Elles sont rares — seulement quelques-unes par décennie — et les données de transaction en gardent la trace : une journée de bourse qui aurait dû afficher 390 bars et n'en affiche aucune.
Le SQL exact derrière chaque chiffre
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.1L'ouragan Sandy a paralysé les deux principales bourses le 2012-10-29 et le 2012-10-30 — la première fermeture météorologique de plusieurs jours depuis 1888. La séance de réouverture du 2012-10-31 a affiché un total de 390 bars. Des journées nationales de deuil ont entraîné la fermeture du marché le 2018-12-05 (Président George H. W. Bush) et le 2025-01-09 (Président Jimmy Carter). La plus longue fermeture imprévue de l'ère moderne — du 11 au 14 septembre 2001, soit quatre sessions consécutives — est antérieure à nos données en minutes, qui débutent en 2003. Chaque fermeture mentionnée ci-dessus apparaît dans les données comme 0 bars de session régulière : aucun échange n'a eu lieu.
Que devient un ordre placé lorsque le marché est fermé ?
Aucune exécution n'est possible lorsque le marché est fermé. Un ordre soumis un samedi, un jour férié ou à 2h00 du matin est simplement mis en attente par votre broker jusqu'à la session suivante. Un ordre au marché en attente sera exécuté au prix déterminé par l'enchère d'ouverture — plusieurs jours après votre clic. L'écart entre la clôture d'une session et la première cotation de la session suivante représente l'exposition que vous acceptez ; cet écart est mesurable :
Le SQL exact derrière chaque chiffre
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 dLe tableau couvre les 10 derniers week-ends et week-ends prolongés — la colonne days_dark indique les quatre jours de congés fériés. Le plus récent s'est déroulé du Fri 2026-07-17 au Mon 2026-07-20 (3 jours calendaires sans cotation) : la clôture en séance régulière du SPY avant la pause était de 743.2 $ et la première cotation à la réouverture de 747.06 $ — soit un gap de 0.52% qu'un ordre au marché en attente aurait accepté sans vérification préalable. Un ordre limite plafonne le prix, au risque de ne pas être exécuté ; pourquoi les actions font des gaps la nuit explique les mécanismes de ces mouvements.
Fuseaux horaires, marché obligataire et reste du monde
Trois décalages expliquent la majeure partie de la confusion concernant l'ouverture des marchés. Les fuseaux horaires : les horaires officiels sont basés sur l'heure de l'Est — 9h30 ET correspond à 6h30 Pacific et 14h30 à Londres la majeure partie de l'année. Les dates du marché suivent l'heure de l'Est, ce qui signifie qu'un lecteur en Asie peut voir sa journée s'étendre sur deux sessions américaines. Le marché obligataire : les Treasuries suivent le calendrier de la SIFMA et non celui du NYSE. Ce calendrier inclut tous les jours fériés boursiers plus deux jours supplémentaires. Les fermetures anticipées à 14h00 sont plus fréquentes que les demi-journées de 13h00 du marché actions. Cette divergence est visible dans les données :
Le SQL exact derrière chaque chiffre
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 dAu cours de l'année écoulée, il y a eu exactement 2 jours de semaine avec une session complète en actions sans aucune publication de rendement de Treasury — 2025-10-13 et 2025-11-11, soit un en octobre et un en novembre : Columbus Day et Veterans Day, deux jours fériés fédéraux où les actions continuent de cotations. Le reste du monde : les bourses internationales utilisent leurs propres calendriers et les futures sur indices s'échangent presque 24h/24. C'est pourquoi un titre peut annoncer une "baisse des actions" à 3h00 ET alors que toutes les bourses américaines sont fermées. Les sessions étendues autour de chaque session US s'étendent de 4h00 à 9h30 et de 16h00 à 20h00 ET, avec moins de liquidité et un spread plus large ; les détails techniques se trouvent dans le guide des horaires étendus.
FAQ
Le marché boursier est-il ouvert actuellement ?
À la dernière actualisation de cette page — 23:44 ET le 2026-07-22 — le statut calculé était CLOSED (overnight). Passé cet horodatage, la règle est simple : les jours de semaine de 9h30 à 16h00 ET, hors dates indiquées dans le tableau des jours fériés ci-dessus.
Le marché boursier est-il ouvert demain ?
Demain est une session normale, sauf s'il s'agit d'un samedi, d'un dimanche ou d'une date figurant dans le tableau des fermetures ci-dessus. La prochaine session régulière au calendrier lors de la mise à jour de cette page — aujourd'hui incluse, si le marché est ouvert — est le 2026-07-23.
Le marché boursier est-il ouvert le réveillon de Noël ?
Lorsque le 24 décembre tombe un jour de semaine, les bourses américaines organisent généralement une session courte qui se termine à 13h00 ET ; s'il tombe un week-end, il n'y a aucune session. Le jour de Noël est systématiquement une fermeture complète — les dates exactes pour cette année sont dans le calendrier ci-dessus.
Le marché boursier est-il ouvert le Black Friday ?
Oui. Le vendredi suivant Thanksgiving est une demi-journée programmée : la séance régulière se termine à 13h00 ET au lieu de 16h00 — soit environ 210 minute bars sur le tape au lieu de 390.
Le marché obligataire est-il ouvert aujourd'hui ?
Généralement en même temps que les actions, mais pas systématiquement. Le marché des Treasuries suit le calendrier de la SIFMA : tous les jours fériés boursiers, plus Columbus Day et Veterans Day, avec des fermetures anticipées plus fréquentes (à 14h00). Les données de l'année écoulée indiquent 2 jours de semaine où les actions ont été échangées mais où les rendements des Treasuries n'ont pas été publiés.
Chaque panneau ci-dessus est une requête stockée et versionnée avec son code SQL exact — développez n'importe quel panneau pour l'auditer. Pour vérifier vous-même une date, une session ou un gap, posez votre question en anglais simple sur le terminal Strasmore.