Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-08-08

מהם קודי תנאי מסחר (Trade Condition Codes)?

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

קודי תנאי מסחר (trade condition codes) הם הסיבה לכך ששלוש פלטפורמות שונות יכולות להציג שלושה שיאים יומיים שונים לאותה מניה, מבלי שאף אחת מהן תהיה שגויה. כל ביצוע (print) בסרט המדידה המאוחד (consolidated tape) נושא תגיות אלו, והן הקובעות האם ביצוע מסוים רשאי לעדכן את המחיר האחרון, את שיא ושפל היום, את הפתיחה הרשמית, את הנעילה הרשמית ואת סך הנפח המאוחד. עסקה יכולה להיות ביצוע אמיתי במחיר אמיתי, ועדיין להיחסם מעדכון של כמעט כל השדות הללו.

מהם קודי תנאי מסחר?

קוד תנאי מסחר, המכונה גם תנאי מכירה (sale condition), הוא תגית שזירת הדיווח מצמידה לדוח עסקה בדרכו לסרט המדידה. המחיר והכמות מציינים מה נסחר. התנאי מציין באיזה סוג דוח מדובר: האם הוא הגיע בזמן, האם מחירו חושב מביצועים אחרים במקום שנקבע באותו רגע, האם הוא התרחש מחוץ לשעות המסחר הרגילות, או האם הוא כלל פחות מ-100 מניות (odd lot).

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

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

שאילתהמשפחות קודי מצב המוגדרות עבור מניות בארה'ב
ה-SQL המדויק מאחורי כל מספר
SELECT
    replaceAll(type, '_', ' ') AS condition_family,
    countDistinct(id)          AS codes
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
GROUP BY condition_family
ORDER BY codes DESC
Run this yourself

מילון המניות מכיל 8 משפחות. הגדולה שבהן היא משפחת sale condition, עם 40 קודים נפרדים. תנאי ציטוט (quote conditions) מתארים את הביד והאסק ולא את העסקה. משפחות האינדיקטורים מסמנות מצבים כמו הגבלת מכירה בחסר (short sale restriction) שנמצאת בתוקף. משפחת תנאי המכירה היא זו הנושאת את דגלי הכשירות, והיא המשפחה שממנה נגזר כל מספר המופיע להלן.

מה באמת עובר בסרט המדידה

הלוח להלן לוקח סשן מסחר אחד של AAPL מיוני 2026: כל ביצוע של AAPL החל מהפתיחה הקדם-שוקית ב-4:00 בבוקר ועד סיום המסחר לאחר הנעילה ב-20:00, מקובץ לפי תנאי המכירה שנשא כל ביצוע. החלון קבוע ב-SQL, לכן נתונים אלו מתארים את אותו יום בלבד. ביצוע יכול לשאת מספר קודים בו-זמנית ורבים אינם נושאים אף קוד, וזו הסיבה שהעמודות אינן מסתכמות למאה אחוזים.

שאילתהמסחר יומי ב-AAPL, כל הדפסה מקובצת לפי תנאי העסקה
ה-SQL המדויק מאחורי כל מספר
WITH
    (SELECT count()
       FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
        AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')) AS day_prints,
    (SELECT sum(size)
       FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
        AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')) AS day_shares
SELECT
    multiIf(t.code = -1,     'Regular way (no code)',
            c.code_name = '', concat('Unmapped code ', toString(t.code)),
            c.code_name)                        AS condition_name,
    round(100 * count() / day_prints, 2)        AS pct_of_prints,
    round(100 * sum(t.size) / day_shares, 2)    AS pct_of_shares
FROM
(
    SELECT
        size,
        arrayJoin(if(empty(conditions),
                     [toInt32(-1)],
                     arrayMap(x -> toInt32(x), conditions))) AS code
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
      AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')
) AS t
LEFT JOIN
(
    SELECT toInt32(id) AS code_id, any(name) AS code_name
    FROM global_markets.stocks_condition_codes
    WHERE asset_class = 'stocks'
      AND type = 'sale_condition'
    GROUP BY code_id
) AS c ON c.code_id = t.code
GROUP BY condition_name
ORDER BY pct_of_prints DESC
LIMIT 12
Run this yourself

התגית הנפוצה ביותר באותו יום הייתה Odd Lot Trade, שהופיעה ב-65.83% מהביצועים של הסשן וב-6.37% מהמניות שלו. קראו את שתי העמודות זו מול זו שורה אחר שורה. במקום שבו נתח הביצועים עולה על נתח הנפח, הקוד מסמן ביצועים קטנים. במקום שבו היחס הפוך, הקוד מסמן מספר קטן של עסקאות גדולות מאוד. ספירת ביצועים וספירת מניות עונות על שאלות שונות, וקוד התנאי הוא שמפריד ביניהן.

מדוע שתי פלטפורמות מציגות שיאים יומיים שונים?

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

  • דיווח מאוחר ומחוץ לרצף. עסקה שסוכמה ב-10:14 ודווחה ב-10:31 מגיעה לסרט המדידה עם תגית "מחוץ לרצף" (out of sequence), או מתומחרת לפי ייחוס קודם. היא נספרת בנפח. היא אינה יכולה לקבוע את המחיר האחרון, והיא אינה יכולה להעלות את שיא היום גם אם מחירה גבוה מכל עסקה אחרת בסשן. עסקאות בלוק מוסכמות וביצועים המנותבים דרך מתקן דיווח עסקאות (TRF) מתוך זירות דארק פול נוחתים כאן לעיתים קרובות.
  • תמחור נגזר. עסקת מחיר ממוצע או ביצוע VWAP נושאת מחיר שחושב על פני ביצועים רבים אחרים במקום מחיר שסוכם באותו רגע. היא מורחקת מהמחיר האחרון ומהקיצוניות, שכן המחיר שהיא מציגה מעולם לא היה קיים כציטוט חי.
  • Odd lot. פחות מ-100 מניות. עסקאות אלו אינן כשירות למחיר האחרון או לשיא ולשפל, אך נספרות במלואן בנפח המאוחד. הן לא דווחו לסרט המדידה המאוחד כלל עד סוף 2013. כל השוואת נפח שחוזרת אחורה מעבר לקו זה משווה בין שתי הגדרות שונות של המילה, נושא המכוסה בפירוט במדריך שלנו ל-נפח מסחר יומי ממוצע.
  • שעות מורחבות ו-Form T. ביצועים לפני הפתיחה ואחרי הנעילה מתויגים ומורחקים מהפתיחה, השיא, השפל והנעילה של הסשן הרגיל, בעודם נספרים בנפח המאוחד. פלטפורמה שמשרטטת אותם תציג טווח יומי שונה מזו שאינה עושה זאת, וזהו המנגנון שמאחורי הופעת מסחר לאחר שעות הפעילות ולפני הפתיחה בגרף אחד ולא באחר.

להלן החלק שתופס כל "דלי" בסשן עבור חמישה שמות מוכרים, באותו יום קבוע.

שאילתהשיעור ההדפסות ביום מסחר הנושאות תנאים שאינם כשירים למחיר
ה-SQL המדויק מאחורי כל מספר
WITH
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND name ILIKE '%odd lot%')                       AS odd_lot_codes,
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND multiSearchAnyCaseInsensitive(name,
              ['form t', 'extended trading hours']))      AS extended_codes,
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND multiSearchAnyCaseInsensitive(name,
              ['out of sequence', 'prior reference', 'derivatively priced',
               'average price', 'price variation', 'seller'])
        AND NOT multiSearchAnyCaseInsensitive(name,
              ['form t', 'extended trading hours']))      AS late_or_derived_codes
SELECT
    ticker,
    round(100 * countIf(hasAny(conditions, odd_lot_codes))         / count(), 2) AS odd_lot_pct,
    round(100 * countIf(hasAny(conditions, late_or_derived_codes)) / count(), 2) AS late_or_derived_pct,
    round(100 * countIf(hasAny(conditions, extended_codes))        / count(), 2) AS extended_hours_pct
FROM global_markets.stocks_trades
WHERE ticker IN ('AAPL', 'KO', 'MSFT', 'NVDA', 'SPY')
  AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')
GROUP BY ticker
ORDER BY odd_lot_pct DESC
Run this yourself

ביצועי Odd lot נעו בין 46.8% ל-85.14% מכלל הביצועים עבור חמשת השמות. עמודה זו עוקבת מקרוב אחר מחיר המניה, שכן פקודה דולרית קבועה קונה פחות מניות בשם יקר יותר. NVDA הובילה, עם 2.4% מהביצועים שלה מתויגים כמאוחרים או מתומחרים נגזרת, ו-3.53% מתויגים כשעות מורחבות. כל ביצוע בכל שלושת הדליים הוא עסקה אמיתית במחיר אמיתי, וכולם חסומים מלקבוע את השיא והשפל.

ביצוע שאינו מעלה את השיא

הלוח הבא לוקח את אותו סשן AAPL קבוע, מחלק את חלון המסחר הרגיל (9:30 עד 16:00) למקטעים של חמש-עשרה דקות, ומשרטט שני שיאים לכל מקטע. קו אחד לוקח את המחיר הגבוה ביותר של כל ביצוע שהוא. השני לוקח את המחיר הגבוה ביותר מבין ביצועים שתנאיהם מאפשרים להם לקבוע את השיא.

שאילתהשתי גרסאות של אותו שיא יומי ב-AAPL, במרווחים של 15 דקות
ה-SQL המדויק מאחורי כל מספר
WITH
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND multiSearchAnyCaseInsensitive(name,
              ['odd lot', 'form t', 'extended trading hours', 'out of sequence',
               'prior reference', 'derivatively priced', 'average price',
               'price variation', 'seller'])) AS not_high_low_codes
SELECT
    formatDateTime(toStartOfFifteenMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
    round(toFloat64(max(price)), 2)                                              AS tape_high,
    round(toFloat64(maxIf(price, NOT hasAny(conditions, not_high_low_codes))), 2) AS eligible_high
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
  AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')
  AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
       + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570
  AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
       + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 960
GROUP BY et_time
HAVING countIf(NOT hasAny(conditions, not_high_low_codes)) > 0
ORDER BY et_time
Run this yourself

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

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

עד כמה שכבת הכשירות יציבה?

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

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

היכן נמצאת רשימת קודי תנאי המסחר הרשמית

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

הערות נתונים

דליי התנאים בלוחות לעיל בנויים מהמילון עצמו ולא ממספרי זיהוי מקודדים. כל דלי הוא התאמת שם בתוך משפחת תנאי המכירה (odd lot, form T ושעות מסחר מורחבות, מחוץ לרצף, מחיר ייחוס קודם, תמחור נגזר, מחיר ממוצע, שינוי מחיר, מוכר). פתחו את ה-SQL תחת כל לוח כדי לקרוא את התבניות המדויקות. הקודים אינם מוציאים זה את זה וביצוע בודד יכול לשאת כמה מהם, לכן אחוזי הדליים חופפים ואינם מסתכמים לסשן. שני לוחות ה-AAPL ולוח חמשת השמות מכסים סשן אחד קבוע ביוני 2026, המקובע ב-SQL, כך ששום דבר בדף זה אינו משתנה עם הגעת סשנים חדשים.

שאלות נפוצות

מהו קוד תנאי מסחר?

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

מדוע שני אתרים מציגים שיאים יומיים שונים לאותה מניה?

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

האם עסקאות odd lot נספרות בנפח?

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

האם עסקאות לאחר שעות הפעילות נספרות בשיא ובשפל היומיים?

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

היכן נמצאת הרשימה הרשמית של קודי תנאי מכירה?

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


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

#market data#trade conditions#consolidated tape#volume#ohlc