Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-10-01

Tradegate vs Xetra: Hours and Prices Explained

Tradegate dey trade reach 22:00 CET, Xetra close 17:30. Compare both hours, official price, quote difference, and know where your order fit get better execution.

Tradegate vs Xetra na really question about time. Xetra dey run continuous trading from 09:00 to 17:30 CET and e dey end with closing auction, while Tradegate dey quote the same shares from 08:00 to 22:00 CET. Xetra closing auction dey set the official price wey index calculations, fund valuations and most data feeds dey carry for German listing. For the four and a half hours after that, trading dey continue for Tradegate and the other evening venues, with separate order books and prices wey each venue set.

Tradegate vs Xetra: the hours side by side

All the times below na German local time, CET for winter and CEST for summer.

  • Xetra order entry dey open at 07:30, and opening auction call dey continue until the 09:00 open.
  • Xetra continuous trading: 09:00 to 17:30, with short intraday auction around 13:00.
  • Xetra closing auction: from 17:30, and e dey end at randomised time within the minutes wey 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 before Xetra open, and 17:30 to 22:00 after Xetra close. Na five and a half hours when retail order fit execute while the reference market dey closed. Holiday and half-day details for the reference market dey our Xetra trading hours and holidays guide, while index options dey run for another venue and schedule, as we cover for DAX daily options.

Which venue's price na the official one?

Xetra na the Referenzmarkt, the reference market for German equities, and that status dey decide where the official numbers come from. The 17:30 closing auction price na the official close: na the price behind DAX closing level and the other Deutsche Börse index families, plus the price wey vendors dey carry as German close. The constituent list behind that index dey what stocks are in the DAX.

A Tradegate print at 21:45 na genuine, reported execution on regulated exchange. E no be official close, and DAX closing level don already get fixed hours earlier for Xetra auction. For evening trading, Deutsche Börse dey publish separate indicative value, X-DAX, wey come from Eurex futures instead of cash equity prints.

Why the same share fit show two prices for the same minute

Three mechanics dey explain almost every gap wey reader fit notice.

  • Separate order books. Order wey route to Xetra fit match only with other Xetra orders, while order wey route to Tradegate fit match only there. No shared queue dey.
  • Market-maker quote instead of central book. Xetra dey collect orders from many participants into one book. Tradegate and Gettex each dey use one specialist to quote two-sided price, so retail order dey meet that firm’s quote instead of the crowd’s.
  • No consolidated tape. United States dey publish one merged national best bid and offer across its venues. Europe no get equivalent today, and EU rules dey phase one in. Until e arrive, the price wey app show na whichever venue that app dey display.

Difference of few cents for the same minute na normal market structure, no be error.

What a thin evening book actually dey look like

Quote-level history for German venues no be wetin the panels below dey measure. The mechanic na wetin matter, and e fit get measured on US tape, wey dem build the same way: one central book with closing auction, plus long, thin extended sessions for both sides. Everything below na one fixed session, Wednesday 10 June 2026, for New York time. The equivalent German clock for US session dey US stock market hours in German time.

QuerySPY volume for ten-minute buckets across one full trading day
96 rows (showing 20)
ET timevolume millions
04:000.1
04:100.01
04:200.017
04:300.005
04:400.023
04:500.021
05:000.019
05:100.052
05:200.03
05:300.008
05:400.011
05:500.065
06:000.018
06:100.017
06:200.026
06:300.021
06:400.012
06:500.014
07:000.556
07:100.195
The exact SQL behind every number
SELECT
    formatDateTime(toStartOfInterval(if(has(conditions, 8),
                                        toTimeZone(sip_timestamp, 'America/New_York') - INTERVAL 10 MINUTE,
                                        toTimeZone(sip_timestamp, 'America/New_York')),
                                     INTERVAL 10 MINUTE), '%H:%i') AS et_time,
    round(sum(toFloat64(size)) / 1e6, 3) AS volume_millions
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
  AND sip_timestamp >= toDateTime('2026-06-10 08:00:00')
  AND sip_timestamp <  toDateTime('2026-06-11 00:00:00')
  AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY et_time
ORDER BY et_time
Run am yourself

The shape na the main point. The first bucket of the day, 04:00 New York time, carry 0.1 million shares. The last one, 19:50, carry 0.042 million. The session split into 96 ten-minute buckets altogether, and the tall ones dey sit inside narrow band for the middle.

QueryWhere one session volume really print, by phase
phasevolume millionspct of day
premarket 04:00 to 09:303.345.51
first 30 minutes5.028.28
midday 10:00 to 15:5037.4461.76
final 10 minutes and closing print7.1811.85
after hours 16:00 to 20:007.6412.59
The exact SQL behind every number
WITH
    (
        SELECT sum(toFloat64(size))
        FROM global_markets.stocks_trades
        WHERE ticker = 'SPY'
          AND sip_timestamp >= toDateTime('2026-06-10 08:00:00')
          AND sip_timestamp <  toDateTime('2026-06-11 00:00:00')
          AND NOT hasAny(conditions, [15, 16, 38])
    ) AS day_volume,
    (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
     + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) AS et_minutes
SELECT
    multiIf(has(conditions, 8), 'final 10 minutes and closing print',
            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 and closing print',
                              'after hours 16:00 to 20:00') AS phase,
    round(sum(toFloat64(size)) / 1e6, 2)              AS volume_millions,
    round(100 * sum(toFloat64(size)) / day_volume, 2) AS pct_of_day
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
  AND sip_timestamp >= toDateTime('2026-06-10 08:00:00')
  AND sip_timestamp <  toDateTime('2026-06-11 00:00:00')
  AND NOT hasAny(conditions, [15, 16, 38])
GROUP BY phase
ORDER BY min(et_minutes)
Run am yourself

When dem group the same session into phases, e put number on the auction. The last ten minutes of regular session, including the closing auction print wey end am, carry 11.85% of the day’s shares, equal to 7.18 million. The premarket 04:00 to 09:30 window carry 5.51%, while the after hours 16:00 to 20:00 window carry 12.59%. Closing auction dey pool the day’s resting interest into one print at one price. Na this service Xetra dey provide at 17:30, and no evening venue dey offer am.

QueryMedian quoted spread by clock hour, one symbol, one session
ET timemedian spread bpsregular hours median bpsquote count
04:0013.761.031478
05:007.231.032069
06:009.31.03518
07:0012.411.032204
08:0012.051.033486
09:001.381.03221100
10:001.041.03278714
11:001.381.03307205
12:001.031.03268189
13:001.021.03249935
14:000.681.03173988
15:000.681.03231589
16:006.511.031321
17:005.831.03340
18:008.941.031106
19:0015.151.031099
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_time
Run am yourself

Liquidity get cost, and quoted spread na where e dey show. This panel group every AAPL quote from that session by New York clock hour and read the median spread in basis points. One basis point na hundredth of one percent.

During regular session, the median reach 1.03 bps. For 04:00 hour, well before the open, e be 13.76 bps. For 19:00 hour, after the close, e be 15.15 bps. Same share, same day, but different cost to cross the spread depending only on when the order arrive.

QueryEvening volume share and the gap to the official close
symbolpost-close volume pctpost-close move pct
MSFT12.70.191
SPY12.590.352
KO7.210.633
NVDA7.050.616
AAPL6.920.237
JNJ4.790.038
The exact SQL behind every number
SELECT
    t.symbol                                                                      AS symbol,
    t.post_close_volume_pct                                                       AS post_close_volume_pct,
    round(abs(100 * (b.last_evening_close / t.closing_print_price - 1)), 3)       AS post_close_move_pct
FROM
(
    SELECT
        ticker                                                                        AS symbol,
        round(100 * sumIf(toFloat64(size), NOT has(conditions, 8)
                          AND toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
                            + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) >= 960)
                  / sum(toFloat64(size)), 2)                                          AS post_close_volume_pct,
        toFloat64(argMaxIf(price, size, has(conditions, 8)))                          AS closing_print_price
    FROM global_markets.stocks_trades
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
      AND sip_timestamp >= toDateTime('2026-06-10 08:00:00')
      AND sip_timestamp <  toDateTime('2026-06-11 00:00:00')
      AND NOT hasAny(conditions, [15, 16, 38])
    GROUP BY ticker
    HAVING countIf(has(conditions, 8)) > 0
) AS t
INNER JOIN
(
    SELECT
        ticker                                                                        AS symbol,
        toFloat64(argMaxIf(close, window_start,
                           toHour(toTimeZone(window_start, 'America/New_York')) * 60
                             + toMinute(toTimeZone(window_start, 'America/New_York')) >= 960)) AS last_evening_close
    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(toHour(toTimeZone(window_start, 'America/New_York')) * 60
                     + toMinute(toTimeZone(window_start, 'America/New_York')) >= 960) > 0
) AS b ON b.symbol = t.symbol
ORDER BY post_close_volume_pct DESC
Run am yourself

The last panel dey ask two questions about six widely held names from the same session: how much of the day’s volume print after 16:00 close, and how far the final evening print end from that close. MSFT lead the group, with 12.7% of its shares printing after 16:00, and its last print of the night sit 0.191% from the closing price. For the other end, JNJ print 4.79%. Volumes small, price differences real. Na this evening quote on German venue dey offer retail order: live, executable price wey no be reference price and no get the same depth behind am.

How dem build these panels

The session dey fixed to Wednesday 10 June 2026 and expressed in New York time, so the numbers no go change as new data dey arrive. The volume panels read the consolidated tape trade by trade across the full 04:00 to 20:00 trading day. The one-minute bars for this tape leave the closing auction print outside, so dem read the tape directly and count the print, stamped at the 16:00 bell, with the final ten minutes of the regular session wey e end. For the last panel, closing price na that auction print, while final evening price na the close of the last one-minute bar after 16:00. The spread panel read quote-level data for one symbol across the same day. E filter quotes to ones with positive bid, ask above the bid and usable sequence number, then calculate deterministic median for each clock hour, so rerun go reproduce the figure. Spreads dey measured in basis points of quote midpoint. German venue quote history no dey part of these panels, and nothing here na measurement of Tradegate or Xetra.

Limit order wey remain resting after 17:30

Order wey dey sit on Xetra stop being executable once closing auction end. Day order expire there, while longer-dated order queue until the next opening auction call at 09:00.

The same order wey route to evening venue remain live until 22:00, inside book with one market maker for the other side and no auction to pool opposite interest. Limit order priced close to 17:30 close fit remain unfilled for hours, then fill during one fast evening minute at the far edge of wide quote. Market order for that period go take whatever the single quote dey offer.

The safeguards too dey differ. Xetra dey interrupt continuous trading with volatility auction when the next print fit fall outside defined range around reference price. Evening venues dey use mistrade rules instead, and dem fit unwind bad print after e happen. Venue choice also dey determine wetin retail account fit do at all, and short selling for German retail investors na venue question before e become anything else.

Holidays, and where the calendars dey differ

Tradegate and Xetra dey observe the same full trading holidays for German securities: New Year's Day, Good Friday, Easter Monday, 1 May, Whit Monday and closure days around Christmas and New Year dey closed for both.

Na the half days be where the two fit differ. Each venue dey publish its own calendar for the coming year, and closing time on 24 and 31 December dey set venue by venue instead of inheriting am from Xetra. Date wey be full closure on one calendar fit be shortened session for the other, so the calendar wey the venue publish for that year na the only source worth trusting.

FAQ

Tradegate open pass Xetra?

Yes. Tradegate dey quote from 08:00 to 22:00 CET, compared with 09:00 to 17:30 for Xetra continuous trading. The extra time split into one hour before Xetra open and four and a half hours after e close.

Which price count as official close for German stock?

Xetra closing auction price from 17:30 CET. Na wetin index calculations use and wetin data vendors carry as German close. Later prints for Tradegate or another evening venue na real executions, but dem no replace am.

Why Tradegate price different from Xetra price for the same moment?

The two venues dey run separate order books, with no shared queue and no consolidated tape to merge dem. Xetra dey match orders from many participants, while Tradegate dey quote through one market maker. Gap of few cents inside same minute na normal.

Wetin happen to limit order after 17:30?

E depend on where the order dey rest. For Xetra, nothing happen to am until the next session’s opening auction. For evening venue, e remain executable until 22:00, inside thinner book with wider quote and no auction behind am.


Every panel here come with the SQL underneath, so anybody fit rebuild any number above line by line. To measure liquidity curve for one session, or spread through one hour, ask the question in plain English on the Strasmore terminal.

#xetra#tradegate#trading hours#german market#venues