השוואה בין Tradegate ל-Xetra: שעות מסחר ומחירים
מה ההבדל בין Tradegate ל-Xetra? גלו את שעות המסחר, מדוע מכרז הנעילה ב-Xetra קובע את המחיר הרשמי וכיצד נוצרים פערי מחירים בין שתי זירות המסחר הגרמניות.
ההשוואה בין Tradegate ל-Xetra היא בראש ובראשונה שאלה של זמן. Xetra מפעילה מסחר רציף בין השעות 09:00 ל-17:30 (שעון מרכז אירופה, CET) ומסיימת במכרז נעילה, בעוד ש-Tradegate מציגה ציטוטים לאותן מניות בין 08:00 ל-22:00 CET. מכרז הנעילה ב-Xetra קובע את המחיר הרשמי המשמש לחישובי מדדים, הערכות שווי של קרנות ורוב הזנות הנתונים עבור ניירות ערך הנסחרים בגרמניה. בארבע השעות וחצי שלאחר מכן, המסחר נמשך ב-Tradegate ובזירות ערב אחרות, בספרי פקודות נפרדים ובמחירים משלהן.
Tradegate מול Xetra: השוואת שעות המסחר
כל השעות להלן הן לפי שעון מקומי בגרמניה (CET בחורף ו-CEST בקיץ).
- הזנת פקודות ל-Xetra נפתחת ב-07:30, כאשר מכרז הפתיחה מוביל לפתיחת המסחר ב-09:00.
- מסחר רציף ב-Xetra: 09:00 עד 17:30, עם מכרז תוך-יומי קצר בסביבות השעה 13:00.
- מכרז נעילה ב-Xetra: החל מ-17:30, ומסתיים ברגע אקראי בדקות שלאחר מכן.
- בורסת Tradegate: 08:00 עד 22:00, ציטוטים רציפים, ללא מכרזים.
- Börse Frankfurt ו-Gettex: 08:00 עד 22:00.
שני חלונות זמן שייכים אך ורק לזירות הערב: 08:00 עד 09:00 לפני פתיחת המסחר ב-Xetra, ו-17:30 עד 22:00 לאחר סגירת המסחר ב-Xetra. אלו חמש שעות וחצי שבהן פקודת מסחר קמעונאית יכולה להתבצע בזמן ששוק הייחוס סגור. פרטים על ימי חופשה וימי מסחר מקוצרים בשוק הייחוס זמינים במדריך שעות מסחר וחופשות ב-Xetra, ואופציות על מדדים נסחרות בזירה ובלוח זמנים שונים, המפורטים ב-אופציות יומיות על מדד DAX.
איזה מחיר נחשב למחיר הרשמי?
Xetra היא ה-Referenzmarkt, שוק הייחוס למניות גרמניות, ומעמד זה קובע מהיכן מגיעים הנתונים הרשמיים. מחיר מכרז הנעילה ב-17:30 הוא מחיר הסגירה הרשמי: המחיר העומד בבסיס רמת הסגירה של מדד DAX ומשפחות מדדים אחרות של Deutsche Börse, והמחיר שספקי נתונים מפיצים כסגירה הגרמנית. רשימת המניות המרכיבות את המדד מופיעה ב-אילו מניות כלולות במדד DAX.
ביצוע עסקה (print) ב-Tradegate בשעה 21:45 הוא ביצוע אמיתי ומדווח בבורסה מוסדרת. זהו אינו מחיר הסגירה הרשמי, ורמת הסגירה של מדד DAX נקבעה שעות קודם לכן במכרז ב-Xetra. עבור שעות הערב, Deutsche Börse מפרסמת ערך אינדיקטיבי נפרד, ה-X-DAX, הנגזר מחוזים עתידיים ב-Eurex ולא מביצועי עסקאות במניות.
מדוע אותה מניה יכולה להציג שני מחירים באותה דקה
שלושה מנגנונים מסבירים כמעט כל פער שהמשקיע מבחין בו.
- ספרי פקודות נפרדים. פקודה המופנית ל-Xetra מותאמת רק מול פקודות אחרות ב-Xetra, ופקודה המופנית ל-Tradegate מותאמת רק שם. אין תור פקודות משותף.
- ציטוט של עושה שוק במקום ספר פקודות מרכזי. Xetra אוספת פקודות ממשתתפים רבים לספר אחד, בעוד ש-Tradegate ו-Gettex פועלות כל אחת באמצעות עושה שוק יחיד המציג מחיר דו-צדדי; לכן, פקודה קמעונאית פוגשת את הציטוט של אותו גוף ולא את הציבור.
- היעדר "סרט" (tape) מאוחד. ארצות הברית מפרסמת מחיר לאומי מאוחד אחד (National Best Bid and Offer) לכל הזירות. באירופה אין כיום שירות מקביל, וכללי האיחוד האירופי נמצאים בתהליך הטמעה של שירות כזה. עד שיגיע, המחיר באפליקציה הוא המחיר של הזירה שהאפליקציה מציגה.
הפרש של כמה סנטים באותה דקה הוא מבנה שוק רגיל, לא טעות.
איך נראה ספר פקודות דליל בשעות הערב
היסטוריית הציטוטים של הזירות הגרמניות אינה מה שהלוחות להלן מודדים. המנגנון הוא מה שחשוב, והוא ניתן למדידה ב"סרט" המסחר האמריקאי, הבנוי באותו אופן: ספר מרכזי אחד עם מכרז נעילה, בתוספת מסחר מורחב ודליל משני הצדדים. כל הנתונים להלן מתייחסים ליום מסחר אחד, יום רביעי ה-10 ביוני 2026, לפי שעון ניו יורק. השעון הגרמני המקביל ליום מסחר אמריקאי מופיע ב-שעות מסחר במניות ארה"ב לפי שעון גרמניה.
| זמן ET | נפח (מיליונים) |
|---|---|
| 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.018 |
| 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 |
ה-SQL המדויק מאחורי כל מספר
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צורת המסחר היא העיקר. "דלי" (bucket) המסחר הראשון של היום, בשעה 04:00 לפי שעון ניו יורק, כלל 0.1 מיליון מניות. האחרון, 19:50, כלל 0.042 מיליון. יום המסחר מתחלק ל-96 דליים של עשר דקות בסך הכל, והדליים הגבוהים מרוכזים ברצועה צרה באמצע היום.
| שלב | נפח (מיליונים) | % מהיום |
|---|---|---|
| premarket 04:00 to 09:30 | 3.34 | 5.51 |
| first 30 minutes | 5.02 | 8.28 |
| midday 10:00 to 15:50 | 37.44 | 61.76 |
| final 10 minutes and closing print | 7.18 | 11.85 |
| after hours 16:00 to 20:00 | 7.64 | 12.59 |
ה-SQL המדויק מאחורי כל מספר
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)חלוקת יום המסחר לשלבים מדגישה את חשיבות המכרז. עשר הדקות האחרונות של המסחר הרגיל, כולל ביצוע מכרז הנעילה שחותם אותו, כללו 11.85% ממניות היום, שהם 7.18 מיליון מניות. חלון הזמן של premarket 04:00 to 09:30 כלל 5.51%, וחלון הזמן של after hours 16:00 to 20:00 כלל 12.59%. מכרז נעילה מרכז את כל הביקושים וההיצעים הממתינים של היום לביצוע אחד במחיר אחד. זהו השירות ש-Xetra מספקת ב-17:30, ואף זירת ערב אינה מציעה אותו.
| זמן ET | חציון מרווח (bps) | חציון שעות מסחר (bps) | מספר ציטוטים |
|---|---|---|---|
| 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 |
ה-SQL המדויק מאחורי כל מספר
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לנזילות יש מחיר, והמרווח המצוטט (spread) הוא המקום שבו הוא בא לידי ביטוי. לוח זה מקבץ כל ציטוט של AAPL מאותו יום מסחר לפי שעה בשעון ניו יורק ומציג את חציון המרווח בנקודות בסיס (basis points), כאשר נקודת בסיס היא מאית האחוז.
במהלך יום המסחר הרגיל, החציון עמד על 1.03 נקודות בסיס. בשעה 04:00, הרבה לפני הפתיחה, הוא היה 13.76 נקודות בסיס. בשעה 19:00, לאחר הסגירה, 15.15 נקודות בסיס. אותה מניה, אותו יום, עלות שונה לביצוע העסקה בהתאם לזמן הגעת הפקודה בלבד.
| סימול | % נפח לאחר סגירה | % תנועה לאחר סגירה |
|---|---|---|
| MSFT | 12.7 | 0.191 |
| SPY | 12.59 | 0.352 |
| KO | 7.21 | 0.633 |
| NVDA | 7.05 | 0.616 |
| AAPL | 6.92 | 0.237 |
| JNJ | 4.79 | 0.038 |
ה-SQL המדויק מאחורי כל מספר
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הלוח האחרון בוחן שתי שאלות לגבי שש מניות פופולריות מאותו יום מסחר: איזה חלק מנפח המסחר היומי בוצע לאחר הסגירה ב-16:00, וכמה רחוק היה הביצוע האחרון בערב ממחיר הסגירה. MSFT הובילה את הקבוצה עם 12.7% מהמניות שנסחרו לאחר 16:00, והביצוע האחרון שלה בלילה היה במרחק 0.191% ממחיר הסגירה. בקצה השני, JNJ רשמה 4.79%. נפחים קטנים, הבדלי מחיר אמיתיים. זה מה שציטוט ערב בזירה גרמנית מציע לפקודה קמעונאית: מחיר חי וניתן לביצוע שאינו מחיר הייחוס ואינו מגובה באותה עומק שוק.
כיצד נבנו לוחות אלו
יום המסחר מקובע ליום רביעי ה-10 ביוני 2026 ומוצג לפי שעון ניו יורק, כך שהמספרים אינם משתנים עם הגעת נתונים חדשים. לוחות הנפח קוראים את ה"סרט" המאוחד עסקה אחר עסקה לאורך כל יום המסחר מ-04:00 עד 20:00. עמודות הדקה האחת בסרט זה אינן כוללות את ביצוע מכרז הנעילה, לכן הסרט נקרא ישירות והביצוע, שנחתם בפעמון ה-16:00, נספר עם עשר הדקות האחרונות של המסחר הרגיל שהוא מסיים. בלוח האחרון, מחיר הסגירה הוא ביצוע המכרז, ומחיר הערב האחרון הוא הסגירה של עמודת הדקה האחרונה לאחר 16:00. לוח המרווחים קורא נתוני ציטוטים עבור מניה אחת לאורך אותו יום, מסונן לציטוטים עם Bid חיובי, Ask גבוה ממנו ומספר סידורי תקין, ומחשב חציון דטרמיניסטי לכל שעה, כך שהרצה חוזרת משחזרת את הנתון. המרווחים הם בנקודות בסיס של אמצע הציטוט. היסטוריית הציטוטים של זירות גרמניות אינה חלק מלוחות אלו, ואין כאן מדידה של Tradegate או Xetra.
פקודת לימיט שנותרה פתוחה לאחר 17:30
פקודה הממתינה ב-Xetra מפסיקה להיות ניתנת לביצוע במכרז הנעילה. פקודת "יום" פוקעת שם, ופקודה לטווח ארוך יותר ממתינה עד למכרז הפתיחה הבא ב-09:00.
אותה פקודה המופנית לזירת ערב נשארת פעילה עד 22:00, בספר פקודות עם עושה שוק אחד בצד השני וללא מכרז שירכז את הביקושים וההיצעים הנגדיים. פקודת לימיט שנקבעה קרוב למחיר הסגירה של 17:30 עלולה להישאר ללא ביצוע במשך שעות, ואז להתבצע בדקה מהירה בערב בקצה הרחוק של ציטוט רחב. פקודת שוק בחלון זמן זה מקבלת את מה שהציטוט היחיד מציע.
גם מנגנוני ההגנה שונים. Xetra קוטעת את המסחר הרציף עם מכרז תנודתיות כאשר הביצוע הבא עשוי לחרוג מטווח מוגדר סביב מחיר הייחוס. זירות הערב מפעילות במקום זאת כללים לביטול עסקאות שגויות (mistrade rules) בדיעבד. בחירת הזירה משפיעה גם על מה שחשבון קמעונאי יכול לעשות, ו-מכירה בחסר למשקיעים קמעונאיים בגרמניה היא שאלה של בחירת זירה לפני כל דבר אחר.
חופשות, והיכן לוחות השנה נפרדים
Tradegate ו-Xetra מציינות את אותם ימי חופשה מלאים עבור ניירות ערך גרמניים: ראש השנה האזרחית, יום שישי הטוב, יום שני של פסחא, ה-1 במאי, יום שני של חג השבועות (Whit Monday) וימי הסגירה סביב חג המולד וראש השנה האזרחית הם ימי שבתון בשתיהן.
ימי המסחר המקוצרים הם המקום שבו השתיים עשויות להיפרד. כל זירה מפרסמת לוח שנה משלה לשנה הקרובה, ושעת הסגירה ב-24 וב-31 בדצמבר נקבעת על ידי כל זירה בנפרד ולא בירושה מ-Xetra. תאריך שמהווה יום סגירה מלא בלוח שנה אחד עשוי להיות יום מסחר מקוצר בשני, לכן לוח השנה שפרסמה הזירה לאותה שנה הוא המקור היחיד שראוי לסמוך עליו.
שאלות נפוצות
האם Tradegate פתוחה יותר זמן מ-Xetra?
כן. Tradegate מציגה ציטוטים מ-08:00 עד 22:00 CET, לעומת 09:00 עד 17:30 למסחר הרציף ב-Xetra. הזמן הנוסף מתחלק לשעה אחת לפני פתיחת המסחר ב-Xetra וארבע שעות וחצי לאחר סגירתו.
איזה מחיר נחשב למחיר הסגירה הרשמי של מניה גרמנית?
מחיר מכרז הנעילה ב-Xetra בשעה 17:30 CET. זהו המחיר שחישובי מדדים משתמשים בו ומה שספקי נתונים מפיצים כסגירה הגרמנית. ביצועים מאוחרים יותר ב-Tradegate או בזירת ערב אחרת הם עסקאות אמיתיות, אך הם אינם מחליפים אותו.
מדוע המחיר ב-Tradegate שונה מהמחיר ב-Xetra באותה דקה?
השתיים מפעילות ספרי פקודות נפרדים, ללא תור משותף וללא "סרט" מאוחד. Xetra מתאימה פקודות ממשתתפים רבים, בעוד ש-Tradegate מצטטת דרך עושה שוק יחיד. פער של כמה סנטים בתוך אותה דקה הוא עניין שבשגרה.
מה קורה לפקודת לימיט לאחר 17:30?
זה תלוי היכן היא ממתינה. ב-Xetra לא קורה לה דבר עד למכרז הפתיחה של יום המסחר הבא. בזירת ערב היא נשארת ניתנת לביצוע עד 22:00, בספר פקודות דליל יותר עם ציטוט רחב יותר וללא מכרז מאחוריה.
כל לוח כאן מגיע עם קוד ה-SQL שמאחוריו, כך שניתן לשחזר כל מספר שורה אחר שורה. כדי למדוד את עקומת הנזילות של יום מסחר, או את המרווח לאורך שעה, ניתן לשאול את השאלה באנגלית פשוטה בטרמינל Strasmore.