TSX Trading Hours and Holidays vs NYSE
TSX trading hours run on the same Eastern clock as the NYSE. What differs is the Canadian holiday calendar and how the pre-open and post-close sessions work.
TSX trading hours are 9:30 a.m. to 4:00 p.m. Eastern time, the same clock the NYSE and Nasdaq keep. The Toronto Stock Exchange wraps that session in a pre-open order entry window and a fixed-price extended session, and it follows a Canadian holiday calendar that shuts Toronto on days when New York trades normally. Those split days are where a cross-listed quote starts behaving in ways a US-only trader has never seen.
TSX trading hours in Eastern time
TMX Group, which operates the Toronto Stock Exchange, publishes a normal TSX day in three blocks.
- Pre-open, 7:00 a.m. to 9:30 a.m. ET. Orders go into the book and sit there. Nothing executes. Through the window the exchange publishes a Calculated Opening Price, the level the opening auction would strike at if it ran at that moment, and it updates continuously as orders arrive.
- Regular session, 9:30 a.m. to 4:00 p.m. ET. Continuous two-sided trading, opened by an auction and finished by a closing auction at 4:00 p.m.
- Extended session, 4:15 p.m. to 5:00 p.m. ET. Orders match at one price only, covered in the next section.
Canada and the United States both keep Eastern time on their senior exchanges, and both switch to and from daylight saving on the same March and November weekends. The Toronto and New York regular sessions open and close together on every day both are open. Our US stock market hours guide walks the American side of that clock minute by minute.
An interlisted stock, the Canadian term for a company listed on both a Canadian and a US exchange, has a live book in both countries during those hours. The panel below takes nine interlisted Canadian companies and nine US-only large caps, and splits their July 2026 US minute-bar volume by the hour on the Eastern clock.
The exact SQL behind every number
SELECT
et_time,
round(100 * inter_volume / sum(inter_volume) OVER (), 2) AS interlisted_pct_of_volume,
round(100 * us_volume / sum(us_volume) OVER (), 2) AS us_only_pct_of_volume
FROM
(
SELECT
formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:00') AS et_time,
sumIf(toFloat64(volume),
ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP')) AS inter_volume,
sumIf(toFloat64(volume),
ticker IN ('JPM','BAC','WFC','XOM','CVX','UNP','KO','PG','CAT')) AS us_volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-07-01 04:00:00'
AND window_start < '2026-08-01 04:00:00'
AND volume > 0
AND ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP',
'JPM','BAC','WFC','XOM','CVX','UNP','KO','PG','CAT')
GROUP BY et_time
HAVING inter_volume > 0 AND us_volume > 0
)
ORDER BY et_timeAcross the 16 clock hours that printed any volume at all, the 04:00 hour carried 0.05% of the interlisted basket's US volume, and the 19:00 hour carried 0.01%. Everything else lands inside the regular session and the hours pressed up against it. Those outer hours are the US extended-hours market, and the shares above are the size of it. Canada's version of the same idea works on a different principle.
Is TSX extended trading the same as US pre-market and after-hours?
No. In the United States, premarket and after-hours trading runs from 4:00 a.m. to 9:30 a.m. and again from 4:00 p.m. to 8:00 p.m. ET, with limit orders matching continuously on electronic venues. Prices move through those hours, sometimes a long way from the 4:00 p.m. close.
The TSX extended session is a different mechanism carrying a similar name. It runs 4:15 p.m. to 5:00 p.m. ET, and every fill happens at the last sale price of the regular session. A sale price here means the last board lot print, a board lot being the exchange's standard trading unit, 100 shares for most stocks. Shares change hands in that window. The price does not move at all. The TSX pre-open is the mirror image of it: orders queue from 7:00 a.m., and none of them trade until the opening auction fires at 9:30.
The panel below measures the US half of that contrast on one interlisted name, Shopify. It marks the last regular-session price of each day over the three months to the end of July 2026, then averages how far the stock had travelled from that mark in each quarter hour of the US after-hours window.
The exact SQL behind every number
SELECT
formatDateTime(b.bucket, '%H:%i') AS et_time,
round(avg(abs(toFloat64(b.px) / toFloat64(c.close_px) - 1)) * 100, 3) AS avg_abs_move_pct,
count() AS session_count
FROM
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 15 MINUTE) AS bucket,
argMax(close, window_start) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SHOP'
AND window_start >= '2026-05-01 04:00:00'
AND window_start < '2026-08-01 04:00:00'
AND volume > 0
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 960
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 1200
GROUP BY d, bucket
) AS b
INNER JOIN
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(close, window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SHOP'
AND window_start >= '2026-05-01 04:00:00'
AND window_start < '2026-08-01 04:00:00'
AND volume > 0
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY d
) AS c ON c.d = b.d
GROUP BY et_time
HAVING count() >= 10
ORDER BY et_timeIn the first quarter hour past the close, across 63 sessions, the average distance from the 4:00 p.m. mark measured 0.224%. By the 19:45 bucket it measured 0.404%. The Canadian extended session has exactly one price available to it for its whole 45 minutes, and no part of that curve has a Toronto counterpart.
Which holidays close the TSX but not the NYSE?
Both exchanges close for New Year's Day, Good Friday, Christmas Day, and the first Monday of September, which Canada spells Labour Day. Family Day in Ontario and Presidents Day in the US both land on the third Monday of February, so the two markets go dark on the same date under different names.
Five Canadian closures have no US counterpart.
- Victoria Day, the Monday before May 25.
- Canada Day, July 1, observed on the following Monday when July 1 falls on a weekend.
- The Civic Holiday, the first Monday of August.
- Thanksgiving Day, the second Monday of October. The US keeps its own Thanksgiving on the fourth Thursday of November.
- Boxing Day, December 26, observed on the next business day when December 26 falls on a weekend.
Running the other way, Toronto trades right through Martin Luther King Jr. Day, Memorial Day, Juneteenth, Independence Day, and US Thanksgiving. It also trades on two Canadian federal statutory holidays that never appear on the exchange calendar: National Day for Truth and Reconciliation on September 30, and Remembrance Day on November 11.
Early closes differ too. The TSX and TSX Venture Exchange shorten the day to a 1:00 p.m. ET close on Christmas Eve when December 24 is a business day. New York has its own set, including the 1:00 p.m. half day after US Thanksgiving, when Toronto runs a full session. Our guide to US market holidays and early closes lists the American ones ahead. TMX publishes the official trading calendar for both Canadian exchanges, and that page is the authority for any given year: observed dates shift, and one-off closures happen.
What happens to cross-listed stocks on a Canada-only holiday?
On a day Toronto is shut and New York is open, an interlisted company still has a live quote, and all of it is American. The Canadian order book never opens, the TSX closing price for that name does not update, and a Canadian-dollar price display carries the previous session's print for another day. Volume that usually splits across two countries has one venue left to go to.
The panel below pins five past sessions when the TSX was closed and US markets held a full day. For each one it measures the interlisted basket's New York volume against that same basket's average day over the year to mid-August 2026, next to the identical measurement for the US-only basket.
The exact SQL behind every number
SELECT
multiIf(
d.date = '2025-10-13', 'Thanksgiving (CA)',
d.date = '2025-12-26', 'Boxing Day',
d.date = '2026-05-18', 'Victoria Day',
d.date = '2026-07-01', 'Canada Day',
'Civic Holiday') AS label,
round(100 * sumIf(d.volume, d.ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP'))
/ sumIf(b.avg_volume, d.ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP')), 1) AS interlisted_volume_pct,
round(100 * sumIf(d.trades, d.ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP'))
/ sumIf(b.avg_trades, d.ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP')), 1) AS interlisted_prints_pct,
round(100 * sumIf(d.volume, d.ticker IN ('JPM','BAC','WFC','XOM','CVX','UNP','KO','PG','CAT'))
/ sumIf(b.avg_volume, d.ticker IN ('JPM','BAC','WFC','XOM','CVX','UNP','KO','PG','CAT')), 1) AS us_only_volume_pct
FROM
(
SELECT
ticker,
date,
max(toFloat64(volume)) AS volume,
max(toFloat64(transactions)) AS trades
FROM global_markets.stocks_daily_aggs
WHERE date IN ('2025-10-13','2025-12-26','2026-05-18','2026-07-01','2026-08-03')
AND ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP',
'JPM','BAC','WFC','XOM','CVX','UNP','KO','PG','CAT')
GROUP BY ticker, date
) AS d
INNER JOIN
(
SELECT
ticker,
avg(volume) AS avg_volume,
avg(trades) AS avg_trades
FROM
(
SELECT
ticker,
date,
max(toFloat64(volume)) AS volume,
max(toFloat64(transactions)) AS trades
FROM global_markets.stocks_daily_aggs
WHERE date >= '2025-09-02'
AND date < '2026-08-15'
AND date NOT IN ('2025-10-13','2025-12-26','2026-05-18','2026-07-01','2026-08-03')
AND ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP',
'JPM','BAC','WFC','XOM','CVX','UNP','KO','PG','CAT')
GROUP BY ticker, date
)
GROUP BY ticker
) AS b ON b.ticker = d.ticker
GROUP BY label
HAVING sumIf(b.avg_volume, d.ticker IN ('RY','TD','BNS','BMO','ENB','TRP','CNQ','SU','CP')) > 0
AND sumIf(b.avg_volume, d.ticker IN ('JPM','BAC','WFC','XOM','CVX','UNP','KO','PG','CAT')) > 0
ORDER BY interlisted_volume_pctThe thinnest of the 5 sessions was Boxing Day, when the interlisted names printed just 26.6% of their normal New York share volume, spread over 36.3% of their usual trade count. The US-only basket printed 39.6% of its own normal volume on the same date. Read the two sets of bars against each other in the chart.
Two things follow for anyone watching an interlisted name on one of these dates. A market order meeting a thinner book can fill further from the last print than it would on a two-country day. And a chart or a price alert built on the Canadian listing can sit unchanged for a full session while the US listing trades all the way through. The two listings quote in different currencies, and the distance between them moves with the Canadian dollar across the day.
Basket and method notes
The interlisted basket is RY, TD, BNS, BMO, ENB, TRP, CNQ, SU, and CP, each listed on both the TSX and a US exchange. The US-only basket is JPM, BAC, WFC, XOM, CVX, UNP, KO, PG, and CAT, matched loosely by sector and size. Each basket is measured against its own trailing-year average daily volume and trade count, with the five holiday dates excluded from that average. Those dates are real past sessions, so the panel's numbers stay put when the page regenerates. Daily rows are deduplicated by ticker and date before anything is averaged.
To check a specific date on the American calendar, is the stock market open today answers it for the current session, and US market hours around the world converts the same Eastern clock for readers outside North America.
FAQ
What time does the TSX open and close?
The Toronto Stock Exchange opens at 9:30 a.m. ET and closes at 4:00 p.m. ET, the same regular session hours as the NYSE and Nasdaq. Order entry begins at 7:00 a.m. ET in the pre-open, and an extended session runs from 4:15 p.m. to 5:00 p.m. ET.
Does the TSX have pre-market and after-hours trading like the US?
Not in the same form. The TSX pre-open accepts orders from 7:00 a.m. ET without executing any of them, and the 4:15 p.m. extended session fills orders only at the regular session's last sale price. US extended hours run continuously from 4:00 a.m. to 8:00 p.m. ET with prices free to move.
Is the TSX open on US holidays?
On several of them. Toronto trades through Martin Luther King Jr. Day, Memorial Day, Juneteenth, Independence Day, and US Thanksgiving. It takes its own days instead, including Victoria Day, Canada Day, the August civic holiday, October Thanksgiving, and Boxing Day.
Do cross-listed stocks trade when the TSX is closed?
Yes, on their US listing. An interlisted company keeps a live New York quote on a Canadian holiday that falls on a US trading day. The Canadian book stays shut for the session and its last price stays frozen until Toronto reopens.
Is the TSX closed on Boxing Day?
Yes. December 26 is a full TSX closure while US markets hold a regular session. When Boxing Day lands on a weekend the closure moves to the next business day, and TMX's calendar gives the observed date for each year.
Every panel here ships with the SQL that produced it, so expand one to see exactly which sessions and tickers went into the number. To run the same comparison on a different interlisted name, ask for it in plain English on the Strasmore terminal.