Strasmore Research
למידה Matt Connorמאת Matt Connor

מדוע ציטוטי מניות מושהים ב-15 דקות?

מדוע קיימת השהיה של רבע שעה בנתוני מניות באתרים חינמיים? הסבר על רישוי נתוני בורסה, תפקיד ה-SIP וכיצד פערי זמן אלו משפיעים על מחיר המניה בפועל עבור המשקיע.

630
ציטוטי מניות ברוב האתרים החינמיים מושהים ב-15 דקות מסיבות של רישוי. התשתית הטכנית אינה איטית: מחיר עוזב את מנוע ההתאמה של הבורסה ומגיע למסך בתוך שבריר שנייה. השהיית 15 הדקות היא תנאי חוזי, המעוגן בהסכמים הקובעים מי רשאי להציג מחירים בזמן אמת וכמה עליו לשלם עבורם.

מקור מחירי המניות לפני שהם מגיעים אליך

מניה אמריקאית בודדת נסחרת ביותר מתריסר זירות מסחר ציבוריות בו-זמנית, לצד זנב ארוך של מסחר מחוץ לבורסה (off-exchange) המדווח על ה-prints שלו בנפרד. כל זירה מפרסמת את הציטוטים והעסקאות שלה. תוכניות התעשייה מאחדות את כל הנתונים הללו לסרט אחד (tape), תוכנית אחת המכסה מניות הרשומות ב-NYSE ואחרת המכסה מניות הרשומות ב-Nasdaq, והמעבדים המריצים אותן הם ה-SIPs, קיצור של securities information processors. אותו סרט מאוחד מייצר את ה-NBBO, צמד המחירים הטוב ביותר הזמין בכל מקום באותו רגע, המוסבר במלואו במדריך שלנו ל-מהו ה-NBBO.

בורסות מוכרות גם הזנות נתונים ישירות משלהן, שהן מהירות ומפורטות יותר מהסרט המאוחד ומורשות בנפרד ממנו.

מדוע ציטוטי מניות מתעכבים ב-15 דקות: התשובה הרישוי

נתוני שוק הם אפיק הכנסה עבור הבורסות. כל מפיץ של מחירים – ברוקר, אתר אינטרנט, טרמינל או אפליקציה לטלפון – חותם על הסכמים עם הבורסות ועם תוכניות הדיווח (tape plans), והסכמים אלו מפצלים את אותם נתונים לשני מוצרים. נתונים בזמן אמת כרוכים בתשלום ומדווחים לפי משתמש בכל חודש. נתונים מושהים, ברגע שהם בני חמש-עשרה דקות לפחות, יוצאים מלוח הזמנים של זמן אמת, ומפיץ יכול להציע אותם בחינם מבלי לספור ראשים.

לוחות התעריפים כוללים מספר חיובים מצטברים: דמי גישה עבור התשתית, תשלום חודשי לכל משתמש שיכול לראות מחיר חי, ודמי "אי-תצוגה" (non-display fees) עבור מכונות שצורכות מחירים ללא צפייה אנושית. התעריפים מוגשים לציבור ומשתנים ברוב השנים, לכן המבנה חשוב יותר מהמספרים של השנה הנוכחית. מישהו משלם עבור כל אדם בכל חודש עבור מחירים חיים. איש אינו משלם עבור מחיר שאיבד מרעננותו רבע שעה.

זוהי התשובה המלאה לשאלה מדוע הגרסה החינמית היא בחינם. נפח המסחר הוא החצי השני של עלות העברת מחירים חיים: ה-tape מזרים רצף מתמשך של עדכוני ציטוטים לאורך יום המסחר, ואופציות הן המקרה הקיצוני, כפי שניתן לראות ב-גודל הזנת ציטוטי האופציות.

מהו הערך האמיתי של עיכוב של 15 דקות

עיכוב משמעותי במידה שבה המחיר נע בתוכו, וזהו נתון שניתן למדידה. הלוח להלן בוחן כל נר של דקה במסחר הרציף ב-SPY, קרן הסל העוקבת אחר ה-S&P 500, עד יוני 2026, ומשווה כל אחד מהם לנר שהופיע 15 דקות לאחר מכן, בחלוקה לפי השעה שבה נרשם הנר המוקדם.

שאילתהטווח התנועה של SPY ב-15 דקות, לפי שעות המסחר (יוני 2026)
ה-SQL המדויק מאחורי כל מספר
WITH regular_bars AS
(
    SELECT
        toTimeZone(window_start, 'America/New_York')                      AS et,
        toTimeZone(window_start, 'America/New_York') + INTERVAL 15 MINUTE AS et_later,
        toFloat64(close)                                                  AS px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND close > 0
      AND window_start >= '2026-06-01 00:00:00'
      AND window_start <  '2026-07-01 00:00:00'
      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
)
SELECT
    formatDateTime(toStartOfHour(a.et), '%H:%i')                                                       AS et_time,
    round(quantileDeterministic(0.5)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3)   AS median_gap_pct,
    round(quantileDeterministic(0.95)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3)  AS p95_gap_pct,
    count()                                                                                            AS sample_count
FROM regular_bars AS a
INNER JOIN regular_bars AS b ON b.et = a.et_later
GROUP BY et_time
ORDER BY et_time
Run this yourself

נרות שנרשמו בשעת הפתיחה, המתחילה ב-9:30 בבוקר (שעון מזרח ארה"ב), נעו בחציון של 0.125% במהלך 15 הדקות העוקבות, עם אחוזון 95 של 0.556%. בשעה 15:00 החציון עמד על 0.065%. כל קבוצה מרכזת 630 זוגות דקות חופפים, כך שמדובר בנתונים מייצגים ולא במקרה חד-פעמי. העקומה אינה שטוחה, ועיכוב קבוע מסתיר יותר בשעות מסוימות מאשר באחרות.

היקף ההסתרה תלוי גם בנייר הערך עצמו. אותה מדידה, שישה טיקרים מוכרים, אותו חודש.

שאילתהטווח 15 דקות עבור שישה טיקרים מובילים (יוני 2026)
ה-SQL המדויק מאחורי כל מספר
WITH regular_bars AS
(
    SELECT
        ticker,
        toTimeZone(window_start, 'America/New_York')                      AS et,
        toTimeZone(window_start, 'America/New_York') + INTERVAL 15 MINUTE AS et_later,
        toFloat64(close)                                                  AS px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'AMD')
      AND close > 0
      AND window_start >= '2026-06-01 00:00:00'
      AND window_start <  '2026-07-01 00:00:00'
      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
)
SELECT
    a.ticker                                                                                           AS ticker,
    round(quantileDeterministic(0.5)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3)   AS median_gap_pct,
    round(quantileDeterministic(0.99)(abs(b.px / a.px - 1) * 100, toUInt64(toUnixTimestamp(a.et))), 3)  AS p99_gap_pct
FROM regular_bars AS a
INNER JOIN regular_bars AS b ON b.ticker = a.ticker AND b.et = a.et_later
GROUP BY ticker
ORDER BY median_gap_pct DESC
Run this yourself

AMD הציג את הפער המייצג הרחב ביותר מבין השישה, עם 0.361%, ו-SPY את הצר ביותר, עם 0.071%. עמודת האחוזון ה-99 היא זו שיש לקרוא פעמיים: בתוך אחוז אחד של חלונות זמן של 15 דקות שהיו הגרועים ביותר באותו חודש, AMD נע בשיעור של 2.532%.

להלן אותו רעיון ביום מסחר בודד. הלוח מאתר את יום המסחר ביוני 2026 שבו נרשם טווח התנודה התוך-יומי הרחב ביותר ב-SPY, ולאחר מכן משרטט שני קווים: ה-tape החי בכל נקודת זמן של עשר דקות, ומה שהציג דף עם עיכוב של 15 דקות באותו רגע.

שאילתהמחיר בזמן אמת מול תצוגה בעיכוב של 15 דקות, יום מסחר אחד ב-SPY
ה-SQL המדויק מאחורי כל מספר
WITH
    widest_session AS
    (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND close > 0
          AND window_start >= '2026-06-01 00:00:00'
          AND window_start <  '2026-07-01 00:00:00'
          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
        ORDER BY (max(toFloat64(high)) - min(toFloat64(low))) / min(toFloat64(low)) DESC
        LIMIT 1
    ),
    session_bars AS
    (
        SELECT
            toTimeZone(window_start, 'America/New_York')                      AS et,
            toTimeZone(window_start, 'America/New_York') - INTERVAL 15 MINUTE AS et_earlier,
            toFloat64(close)                                                  AS px
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND close > 0
          AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM widest_session)
          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
    )
SELECT
    formatDateTime(a.et, '%H:%i')  AS et_time,
    round(a.px, 2)                 AS live_price,
    round(b.px, 2)                 AS delayed_price,
    round(abs(a.px - b.px), 2)     AS gap_delta,
    formatDateTime(a.et, '%b %e')  AS session_label
FROM session_bars AS a
INNER JOIN session_bars AS b ON b.et = a.et_earlier
WHERE toMinute(a.et) % 10 = 0
ORDER BY a.et
Run this yourself

ב-Jun 9, בשעה 09:50 (שעון מזרח ארה"ב), מחיר ה-SPY החי היה 746.13 בעוד התצוגה המעוכבת הראתה 744.22, פער של $1.91. עד השעה 15:50 הראו השניים 735.29 ו-734.49. הקווים חופפים כאשר ה-tape שקט ונפרדים כאשר הוא נע. עיכוב אינו עולה דבר בשוק דומם, ועולה ביוקר ברגעים שבהם כולם צופים.

כלל התצוגה: מה אתר אינטרנט מחויב להציג בפניך

תקנה Regulation NMS כוללת דרישת תצוגה מאוחדת, הידועה כ-Rule 603(c). ספק נתונים המציג נתוני ציטוטים לציבור מחויב להציג מידע מאוחד – ה-NBBO (הצעת המחיר והביקוש הטובים ביותר ברמה הלאומית) לצד נתוני העסקה האחרונה המאוחדים – ולא להציג ציטוט של זירת מסחר אחת בלבד כ"מחיר השוק". על ספקים לסמן נתונים מושהים ככאלה, וזהו המקור לאותיות הקטנות המופיעות בתחתית כל עמוד פיננסי. עבור כל מי שקורא ציטוט בחינם, נובעים מכך שני דברים:

  • ציטוט חינמי בזמן אמת מזירת מסחר בודדת הוא מחיר אמיתי, אך הוא אינו ה-NBBO. הוא מציג את ספר הפקודות של זירה אחת בלבד, שעשוי להיות רחב יותר מהמחיר הטוב ביותר הזמין בשוק.
  • עמוד המציג עסקה אחרונה בזמן אמת ללא נתוני ביקוש או היצע הוא דבר שבשגרה. נתוני העסקה האחרונה ונתוני הציטוטים הם מוצרים ברישוי נפרד, כאשר נתוני העסקה האחרונה הם הזולים מביניהם.

למידע על המתרחש כאשר שתי זירות מסחר נפגשות בראש ספר הפקודות, ראו שווקים נעולים ומוצלבים.

מקצועי או לא מקצועי: המבחן שקובע את גובה החיוב שלך

העלות של נתונים בזמן אמת עבור משקיע פרטי תלויה בסיווג, והסיווג תלוי בעיסוק שלך ולא בהון שברשותך. במונחים של הבורסות, אתה נחשב למנוי "לא מקצועי" (non-professional) כאשר כל התנאים הבאים מתקיימים:

  • אתה אדם פרטי הצורך את הנתונים לשימוש אישי, ולא בשם חברה או כל ישות אחרת.
  • אינך רשום או מוסמך כבעל רישיון על ידי ה-SEC, ה-CFTC, רשות ניירות ערך מדינתית, בורסה לניירות ערך או איגוד מקצועי, או שוק חוזים עתידיים.
  • אינך עוסק כיועץ השקעות או כמנהל נכסים, ואינך מועסק בעבודה המחייבת רישום מסוג זה.
  • אינך עושה בנתונים כל שימוש עסקי, לרבות במסגרת מעסיק שמחזיר לך את עלות המנוי.

אי-עמידה באחד מהתנאים הללו תגרום לבורסות לסווג אותך כ"מקצועי". במקרה כזה, החיוב מתבצע לפי בורסה, לפי משתמש ולפי חודש, והוא גבוה פי כמה מהתעריף הלא-מקצועי. אנליסט זוטר בקרן שמחזיק חשבון אישי קטן נחשב למקצועי; משקיע בדימוס בעל תיק גדול, הסוחר בכספו הפרטי בלבד, אינו נחשב לכזה. מפיצי הנתונים מחויבים לגבות ממך הצהרה ולדווח עליה, וזו הסיבה שכל תהליך הרשמה לנתונים בזמן אמת כולל שאלות על המעסיק שלך ועל הרישיונות שברשותך.

מהו ציטוט מסוג snapshot?

Snapshot הוא קריאה בודדת המתבצעת ברגע הבקשה: המחיר האחרון, או ה-bid וה-ask הנוכחיים, המוחזרים פעם אחת ללא עדכון נוסף. לעומת זאת, stream הוא מנוי פעיל, שבו כל שינוי נדחף בזמן אמת. הרישוי מתמחר את השניים באופן שונה, לרוב לפי שאילתה לעומת תשלום חודשי למשתמש, וזו הסיבה ש-API חינמי יספק לכם נקודת קצה של snapshot מושהה ללא stream חי. רענון של snapshot בכל שנייה שקול לבנייה מחדש של stream, והסכמי הרישוי מנוסחים כך שיזהו פעילות מסוג זה.

כיצד לזהות אם המחיר שלפניך מושהה

  • חותמת הזמן היא האינדיקטור האמין היחיד. ציטוט חי נושא חותמת זמן של שנייה או שתיים לכל היותר ביחס לשעון ה-ET הנוכחי.
  • המחיר הגבוה היומי ונפח המסחר המצטבר הופכים גם הם ללא מעודכנים, כך שדף מושהה עלול להחמיץ שיא שנקבע ב-tape לפני עשר דקות.
  • ב-15 הדקות הראשונות לאחר הפתיחה בשעה 9:30 בבוקר לפי שעון ET, דף מושהה אינו מציג נתונים מהמסחר השוטף, אלא את מחיר הסגירה הקודם או עסקה שבוצעה בטרום-מסחר.
  • מבחן הקיפאון, כלומר מעקב אחר תנודתיות המספר, עובד רק במניות פעילות.

הנקודה האחרונה דורשת גיבוי נתונים.

שאילתהתדירות עדכון המחיר האחרון, דקה אחר דקה (יוני 2026)
ה-SQL המדויק מאחורי כל מספר
WITH regular_bars AS
(
    SELECT
        ticker,
        toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
        toTimeZone(window_start, 'America/New_York')         AS et,
        toFloat64(close)                                     AS px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'AMD')
      AND close > 0
      AND window_start >= '2026-06-01 00:00:00'
      AND window_start <  '2026-07-01 00:00:00'
      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
),
stepped AS
(
    SELECT
        ticker,
        et,
        px,
        lagInFrame(px) OVER (PARTITION BY ticker, session_date ORDER BY et
                             ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_px
    FROM regular_bars
)
SELECT
    ticker,
    round(100 * countIf(px != prev_px) / count(), 1)                                                       AS minutes_price_moved_pct,
    round(quantileDeterministic(0.5)(abs(px / prev_px - 1) * 10000, toUInt64(toUnixTimestamp(et))), 1)      AS median_move_bps
FROM stepped
WHERE prev_px > 0
GROUP BY ticker
HAVING count() > 0
ORDER BY minutes_price_moved_pct DESC
Run this yourself

עד יוני 2026, AMD הציגה מחיר שונה מהדקה הקודמת ב-99.8% מדקות המסחר הרגיל, עם תנועה חציונית מדקה לדקה של 9.6 נקודות בסיס, כאשר נקודת בסיס היא מאית האחוז. KO הציגה נתונים חדשים בתדירות הנמוכה ביותר מבין השישה, בשיעור של 94.1%. במניות פעילות כאלו, מחיר אחרון שלא השתנה במשך מספר דקות באמצע יום המסחר הוא רמז הוגן לכך שאתה צופה במספר מושהה או שמור במטמון. במניה בעלת סחירות נמוכה, אותה סטטיות היא עניין שבשגרה, וזו הסיבה שחותמת הזמן נותרת המבחן הקובע.

אילו ציטוטי מניות בחינם הם באמת בזמן אמת

שני מקורות מספקים נתונים אמינים בזמן אמת עבור משקיע פרטי, ותווית אחת נפוצה דורשת בחינה נוספת.

  • חשבון מסחר ממומן. ברוקרים מחזיקים בהרשאה לשימוש לא-מקצועי עבור לקוחותיהם ומעבירים ציטוטים חיים דרך האפליקציה; זו הסיבה שבטופס פתיחת החשבון נשאלת על המעסיק שלך.
  • אתר האינטרנט של מפעיל הבורסה, עבור המניות הנסחרות באותה בורסה. הנתונים הם בזמן אמת ומגיעים מזירה אחת בלבד, ולכן מדובר בספר פקודות בודד ולא ב-NBBO מאוחד.
  • כל שירות המפרסם ציטוטים בחינם בזמן אמת ללא צורך בהתחברות או בהצהרה עצמית. בדוק את חותמת הזמן על הציטוט לפני שאתה מסתמך עליו.

כאשר היעד הוא תוכנה ולא מסך, הסיווג משתנה שוב: צריכת נתונים על ידי מכונה מורשית תחת תנאי non-display, לוח תעריפים נפרד מזה המבוסס על משתמש. הסקירות שלנו בנושא ממשקי API לנתוני שוק מניות בחינם ו-שאילתות נתוני שוק באמצעות SQL מכסות את השכבות הללו.

שאלות נפוצות

מדוע ציטוטי מניות מתעכבים בדיוק 15 דקות?

חמש-עשרה דקות הוא פרק הזמן שלאחריו מחירי מניות בארה"ב מפסיקים להיחשב כמוצר בזמן אמת הכרוך בתשלום על פי הסכמי נתוני בורסה. מפיץ רשאי לפרסם כל נתון שגילו לפחות כזה מבלי לדווח על מספר המשתמשים.

מה הופך אדם למנוי נתוני שוק מקצועי?

רישום אצל רגולטור ניירות ערך או חוזים עתידיים, העסקה בתפקיד השקעות, קבלת הנתונים בשם ישות עסקית, או כל שימוש עסקי במחירים. לשווי נקי ולגודל חשבון אין כל חלק בכך.

כיצד אוכל לדעת אם ציטוט מניה מתעכב?

יש לבדוק את חותמת הזמן של הציטוט מול שעון ה-ET הנוכחי, ולחפש את תווית העיכוב שספקים מחויבים להציג. במניה פעילה במהלך שעות המסחר הרגילות, מחיר שאינו משתנה במשך דקות ארוכות הוא רמז נוסף.

האם ציטוטים בחינם בזמן אמת זהים ל-NBBO?

לרוב לא. ציטוט חינם מבורסה בודדת מציג את ספר הפקודות של אותה זירה בלבד. ה-NBBO הוא המחיר הטוב ביותר לקנייה ומכירה (Best Bid and Offer) בכל הזירות, המחושב מתוך ה-consolidated tape.

האם עיכוב של 15 דקות משנה עבור נתוני סוף יום?

לא. ברגע שיום המסחר ננעל, הגרסה המעוכבת והגרסה בזמן אמת של מחיר הסגירה או נתון נפח המסחר היומי הן זהות. העיכוב משפיע רק בתוך שעות המסחר.


כל פאנל כאן מגיע עם ה-SQL שיצר אותו, כך שניתן לחשב מחדש כל מספר לעיל עבור טיקר אחר או חודש אחר. כדי למדוד מה שוויין של 15 דקות עבור מניה שאתה עוקב אחריה, בקש זאת באנגלית פשוטה בטרמינל Strasmore.

#market data#quotes#sip#exchange fees#nbbo