Tradegate vs Xetra: Hours and Prices
Tradegate trades to 22:00 CET while Xetra closes at 17:30. Compare the hours, see which venue sets the official price, and why two quotes can differ.
Tradegate vs Xetra is really a question about the clock. Xetra runs continuous trading from 09:00 to 17:30 CET and ends with a closing auction, while Tradegate quotes the same shares from 08:00 to 22:00 CET. The Xetra closing auction sets the official price that index calculations, fund valuations and most data feeds carry for a German listing. For the four and a half hours after it, trading continues on Tradegate and the other evening venues, in separate order books, at prices of their own.
Tradegate vs Xetra: the hours side by side
All times below are German local time, CET in winter and CEST in summer.
- Xetra order entry opens at 07:30, with the opening auction call running into the 09:00 open.
- Xetra continuous trading: 09:00 to 17:30, with a short intraday auction around 13:00.
- Xetra closing auction: from 17:30, ending at a randomised moment in the minutes that follow.
- Tradegate Exchange: 08:00 to 22:00, continuous quoting, no auctions.
- Börse Frankfurt and Gettex: 08:00 to 22:00.
Two windows belong only to the evening venues: 08:00 to 09:00 ahead of the Xetra open, and 17:30 to 22:00 after the Xetra close. That is five and a half hours in which a retail order can execute while the reference market is dark. Holiday and half-day detail for the reference market sits in our Xetra trading hours and holidays guide, and index options run on a different venue and schedule again, covered in DAX daily options.
Which venue's price is the official one?
Xetra is the Referenzmarkt, the reference market for German equities, and that status decides where the official numbers come from. The 17:30 closing auction price is the official close: the price behind the DAX closing level and the other Deutsche Börse index families, and the price vendors carry as the German close. The constituent list behind that index is in what stocks are in the DAX.
A Tradegate print at 21:45 is a genuine, reported execution on a regulated exchange. It is not the official close, and the DAX closing level was fixed hours earlier in the Xetra auction. For the evening, Deutsche Börse publishes a separate indicative value, the X-DAX, derived from Eurex futures rather than cash equity prints.
Why the same share can show two prices at the same minute
Three mechanics account for almost every gap a reader notices.
- Separate order books. An order routed to Xetra matches only against other Xetra orders, and one routed to Tradegate matches only there. There is no shared queue.
- A market-maker quote instead of a central book. Xetra collects orders from many participants into one book, while Tradegate and Gettex each run on a single specialist quoting a two-sided price, so a retail order meets that firm's quote rather than the crowd's.
- No consolidated tape. The United States publishes one merged national best bid and offer across its venues. Europe has no equivalent today, and EU rules are phasing one in. Until it arrives, the price in an app is whichever venue that app displays.
A difference of a few cents at the same minute is ordinary market structure, not an error.
What a thin evening book actually looks like
Quote-level history for the German venues is not what the panels below measure. The mechanic is what travels, and it is measurable on the US tape, built the same way: one central book with a closing auction, plus long, thin extended sessions either side. Everything below is one pinned session, Wednesday 10 June 2026, in New York time. The equivalent German clock for a US session is in US stock market hours in German time.
| et_time | volume_millions |
|---|---|
| 04:00 | 0.1 |
| 04:10 | 0.01 |
| 04:20 | 0.017 |
| 04:30 | 0.005 |
| 04:40 | 0.023 |
| 04:50 | 0.021 |
| 05:00 | 0.019 |
| 05:10 | 0.052 |
| 05:20 | 0.03 |
| 05:30 | 0.008 |
| 05:40 | 0.011 |
| 05:50 | 0.065 |
| 06:00 | 0.017 |
| 06:10 | 0.017 |
| 06:20 | 0.026 |
| 06:30 | 0.021 |
| 06:40 | 0.012 |
| 06:50 | 0.014 |
| 07:00 | 0.556 |
| 07:10 | 0.195 |
The exact SQL behind every number
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 10 MINUTE), '%H:%i') AS et_time,
round(sum(volume) / 1e6, 3) AS volume_millions
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-10 08:00:00')
AND window_start < toDateTime('2026-06-11 00:00:00')
GROUP BY et_time
ORDER BY et_timeThe shape is the point. The first bucket of the day, 04:00 New York time, carried 0.1 million shares. The last one, 19:50, carried 0.042 million. The session splits into 96 ten-minute buckets in all, and the tall ones sit in a narrow band in the middle.
| phase | volume_millions | pct_of_day |
|---|---|---|
| premarket 04:00 to 09:30 | 3.34 | 5.7 |
| first 30 minutes | 5.02 | 8.57 |
| midday 10:00 to 15:50 | 37.26 | 63.62 |
| final 10 minutes | 5.96 | 10.17 |
| after hours 16:00 to 20:00 | 6.99 | 11.94 |
The exact SQL behind every number
WITH
(
SELECT sum(volume)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-10 08:00:00')
AND window_start < toDateTime('2026-06-11 00:00:00')
) AS day_volume,
(toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) AS et_minutes
SELECT
multiIf(et_minutes < 570, 'premarket 04:00 to 09:30',
et_minutes < 600, 'first 30 minutes',
et_minutes < 950, 'midday 10:00 to 15:50',
et_minutes < 960, 'final 10 minutes',
'after hours 16:00 to 20:00') AS phase,
round(sum(volume) / 1e6, 2) AS volume_millions,
round(100 * sum(volume) / day_volume, 2) AS pct_of_day
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-10 08:00:00')
AND window_start < toDateTime('2026-06-11 00:00:00')
GROUP BY phase
ORDER BY min(et_minutes)Grouping the same session into phases puts a number on the auction. The final 10 minutes of the regular session carried 10.17% of the day's shares, 5.96 million of them. The premarket 04:00 to 09:30 window carried 5.7%, and the after hours 16:00 to 20:00 window carried 11.94%. A closing auction pools the day's resting interest into one print at one price. That is the service Xetra performs at 17:30, and no evening venue offers it.
| et_time | median_spread_bps | regular_hours_median_bps | quote_count |
|---|---|---|---|
| 04:00 | 13.76 | 1.03 | 1478 |
| 05:00 | 7.23 | 1.03 | 2069 |
| 06:00 | 9.3 | 1.03 | 518 |
| 07:00 | 12.41 | 1.03 | 2204 |
| 08:00 | 12.05 | 1.03 | 3486 |
| 09:00 | 1.38 | 1.03 | 221100 |
| 10:00 | 1.04 | 1.03 | 278714 |
| 11:00 | 1.38 | 1.03 | 307205 |
| 12:00 | 1.03 | 1.03 | 268189 |
| 13:00 | 1.02 | 1.03 | 249935 |
| 14:00 | 0.68 | 1.03 | 173988 |
| 15:00 | 0.68 | 1.03 | 231589 |
| 16:00 | 6.51 | 1.03 | 1321 |
| 17:00 | 5.83 | 1.03 | 340 |
| 18:00 | 8.94 | 1.03 | 1106 |
| 19:00 | 15.15 | 1.03 | 1099 |
The exact SQL behind every number
WITH
(
SELECT round(quantileDeterministic(0.5)(
10000 * (toFloat64(ask_price) - toFloat64(bid_price))
/ ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
toUInt64(sequence_number)), 2)
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-10 13:30:00')
AND sip_timestamp < toDateTime('2026-06-10 20:00:00')
AND bid_price > 0
AND ask_price > bid_price
AND sequence_number > 0
) AS regular_session_median
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
round(quantileDeterministic(0.5)(
10000 * (toFloat64(ask_price) - toFloat64(bid_price))
/ ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),
toUInt64(sequence_number)), 2) AS median_spread_bps,
regular_session_median AS regular_hours_median_bps,
count() AS quote_count
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-10 08:00:00')
AND sip_timestamp < toDateTime('2026-06-11 00:00:00')
AND bid_price > 0
AND ask_price > bid_price
AND sequence_number > 0
GROUP BY et_time
ORDER BY et_timeLiquidity has a price, and the quoted spread is where it shows. This panel groups every AAPL quote from that session by New York clock hour and reads the median spread in basis points, a basis point being a hundredth of a percent.
Through the regular session the median came to 1.03 bps. In the 04:00 hour, well ahead of the open, it was 13.76 bps. In the 19:00 hour, after the close, 15.15 bps. Same share, same day, a different cost to cross the spread depending only on when the order arrives.
| symbol | post_close_volume_pct | post_close_move_pct |
|---|---|---|
| SPY | 11.94 | 0.35 |
| MSFT | 9.28 | 0.189 |
| NVDA | 3.83 | 0.577 |
| AAPL | 2.6 | 0.202 |
| JNJ | 1.39 | 0.008 |
| KO | 0.62 | 0.639 |
The exact SQL behind every number
WITH (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) AS et_minutes
SELECT
ticker AS symbol,
round(100 * sumIf(volume, et_minutes >= 960) / sum(volume), 2) AS post_close_volume_pct,
round(abs(100 * (toFloat64(argMaxIf(close, et_minutes, et_minutes >= 960))
/ toFloat64(argMaxIf(close, et_minutes, et_minutes < 960)) - 1)), 3) AS post_close_move_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND window_start >= toDateTime('2026-06-10 08:00:00')
AND window_start < toDateTime('2026-06-11 00:00:00')
GROUP BY ticker
HAVING countIf(et_minutes >= 960) > 0
AND countIf(et_minutes < 960) > 0
ORDER BY post_close_volume_pct DESCThe last panel asks two questions of six widely held names from the same session: how much of the day's volume printed after the 16:00 close, and how far the final evening print ended up from that close. SPY topped the set with 11.94% of its shares printing after 16:00, and its last print of the night sat 0.35% from the closing price. At the other end, KO printed 0.62%. Small volumes, real price differences. That is what an evening quote on a German venue offers a retail order: a live, executable price that is not the reference price and is not backed by the same depth.
How these panels were built
The session is pinned to Wednesday 10 June 2026 and expressed in New York time, so the numbers do not move as new data arrives. The volume panels read one-minute bars covering the full 04:00 to 20:00 trading day. The spread panel reads quote-level data for one symbol across the same day, filtered to quotes with a positive bid, an ask above it and a usable sequence number, and takes a deterministic median per clock hour, so a rerun reproduces the figure. Spreads are in basis points of the quote midpoint. German venue quote history is not part of these panels, and nothing here is a measurement of Tradegate or Xetra.
A limit order left resting after 17:30
An order sitting on Xetra stops being executable at the closing auction. A day order expires there, and a longer-dated order queues until the next opening auction call at 09:00.
The same order routed to an evening venue stays live until 22:00, in a book with one market maker on the other side and no auction to pool the opposite interest. A limit priced tightly against the 17:30 close can go unfilled for hours, then fill in a fast evening minute at the far edge of a wide quote. A market order in that window takes whatever the single quote offers.
The safeguards differ too. Xetra interrupts continuous trading with a volatility auction when the next print would fall outside a defined range around the reference price. Evening venues run mistrade rules instead, unwinding a bad print after the fact. Venue choice also shapes what a retail account can do at all, and short selling for German retail investors is a venue question before it is anything else.
Holidays, and where the calendars part
Tradegate and Xetra observe the same full trading holidays for German securities: New Year's Day, Good Friday, Easter Monday, 1 May, Whit Monday and the closure days around Christmas and New Year are dark on both.
The half days are where the two can part. Each venue publishes its own calendar for the coming year, and the closing time on 24 and 31 December is set venue by venue rather than inherited from Xetra. A date that is a full closure on one calendar can be a shortened session on the other, so the calendar a venue published for that year is the only source worth trusting.
FAQ
Is Tradegate open longer than Xetra?
Yes. Tradegate quotes from 08:00 to 22:00 CET, against 09:00 to 17:30 for Xetra continuous trading. The extra time splits into an hour before the Xetra open and four and a half hours after its close.
Which price counts as the official close for a German stock?
The Xetra closing auction price from 17:30 CET. It is what index calculations use and what data vendors carry as the German close. Later prints on Tradegate or another evening venue are real executions, and they do not replace it.
Why is the Tradegate price different from the Xetra price at the same moment?
The two run separate order books, with no shared queue and no consolidated tape merging them. Xetra matches orders from many participants, while Tradegate quotes through a single market maker. A gap of a few cents inside the same minute is ordinary.
What happens to a limit order after 17:30?
It depends on where it rests. On Xetra nothing happens to it until the next session's opening auction. On an evening venue it stays executable until 22:00, in a thinner book with a wider quote and no auction behind it.
Every panel here ships with the SQL underneath it, so any number above can be rebuilt line by line. To measure a session's own liquidity curve, or the spread through one hour, ask the question in plain English on the Strasmore terminal.