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

Что такое коды условий сделок на бирже

Узнайте, почему торговые платформы показывают разные максимумы для одной акции. Коды условий сделок определяют, какие записи влияют на цену, объем и дневные показатели.

Коды условий сделок — это причина, по которой три разные платформы могут показывать три разных дневных максимума для одной и той же акции, при этом ни одна из них не будет ошибаться. Каждый принт (запись о сделке) в консолидированной ленте снабжается такими метками, и именно они определяют, может ли принт обновить последнюю цену, дневной максимум и минимум, официальное открытие, официальное закрытие и общий консолидированный объем. Сделка может быть реальным исполнением по реальной цене, но при этом быть исключенной почти из всех этих показателей.

Что такое коды условий сделок?

Код условия сделки, также называемый условием продажи, — это метка, которую торговая площадка присваивает отчету о сделке при его отправке в ленту. Цена и объем говорят о том, что именно было продано. Условие говорит о том, что это за отчет: был ли он подан вовремя, была ли его цена вычислена на основе других исполнений, а не согласована в моменте, произошла ли сделка вне регулярных торгов или объем составил менее ста акций (неполный лот).

К каждому коду прилагается набор флагов допустимости, и это та часть, которую почти никто не видит. Каждый код помечен как допустимый или недопустимый для обновления последней цены, максимума и минимума, открытия, закрытия и консолидированного объема. Эти флаги работают независимо друг от друга. Множество принтов, которые не могут повлиять на максимум или минимум, все равно учитываются в объеме. Именно поэтому сообщаемое количество акций и ценовые экстремумы акции формируются из пересекающихся, но разных наборов сделок. Второй набор флагов работает параллельно с первым: один набор регулирует консолидированную ленту, другой — конкретный торговый центр, поскольку официальное закрытие биржи рассчитывается только на основе ее собственных принтов.

Коды условий поступают группами, и только одна группа определяет, что именно может обновить сделка.

ЗапросКлассификация кодов условий для акций США
Точный 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 различных кодов. Условия котировок описывают бид и аск, а не сделку. Группы индикаторов помечают такие состояния, как действие ограничения на короткие продажи. Группа условий продажи — это та самая группа, которая несет флаги допустимости, и именно из нее взяты все цифры ниже.

Что на самом деле попадает в ленту

На панели ниже представлена одна зафиксированная сессия за июнь две тысячи двадцать шестого года: каждый принт AAPL с открытия премаркета в четыре утра до окончания постмаркета в восемь вечера, сгруппированный по условию продажи, которое нес каждый принт. Окно зафиксировано в 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% ее объема. Сравните два столбца друг с другом построчно. Там, где доля принтов значительно превышает долю объема, код отмечает мелкие исполнения. Там, где ситуация обратная, код отмечает небольшое количество очень крупных сделок. Подсчет принтов и подсчет акций отвечают на разные вопросы, и код условия — это то, что их разделяет.

Почему две платформы показывают разные дневные максимумы?

Четыре типа принтов исключаются из разных подмножеств полей.

  • Поздно сообщенные и вне последовательности. Сделка, согласованная в десять четырнадцать и сообщенная в десять тридцать один, попадает в ленту с пометкой «вне последовательности» или по цене, основанной на предыдущем ориентире. Она учитывается в объеме. Она не может установить последнюю цену и не может поднять дневной максимум, даже если ее цена выше любой другой сделки сессии. Сюда часто попадают согласованные блочные сделки и принты, направленные через механизм отчетности по сделкам от площадок dark pool.
  • Производное ценообразование. Сделка по средней цене или исполнение по VWAP несет цену, вычисленную на основе множества других исполнений, а не согласованную в этот момент. Она исключается из последней цены и экстремумов, так как цена, которую она показывает, никогда не существовала как живая котировка.
  • Неполный лот (odd lot). Менее ста акций. Неполные лоты не могут влиять на последнюю цену, максимум и минимум, но полностью учитываются в консолидированном объеме. До конца две тысячи тринадцатого года они вообще не сообщались в консолидированную ленту. Любое сравнение объемов, затрагивающее период до этой границы, сравнивает два разных определения этого термина, что подробно описано в нашем руководстве по среднедневному объему.
  • Внеурочные часы и форма 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

Доля принтов с неполными лотами составила от 46.8% до 85.14% всех принтов по пяти компаниям. Этот столбец тесно коррелирует с ценой акций, так как фиксированный денежный ордер покупает меньше акций в более дорогой компании. NVDA возглавил список: 2.4% его принтов помечены как поздние или с производным ценообразованием, а 3.53% — как внеурочные. Каждый принт во всех трех категориях — это реальная сделка по реальной цене, и каждому из них запрещено устанавливать максимум и минимум.

Принт, который не поднимает максимум

Следующая панель берет ту же зафиксированную сессию AAPL, разбивает регулярное окно с девяти тридцати до шестнадцати часов на пятнадцатиминутные интервалы и рисует два максимума для каждого интервала. Одна линия берет самую высокую цену любого принта вообще. Другая берет самую высокую цену среди принтов, условия которых позволяют им устанавливать максимум.

ЗапросСравнение двух версий максимума сессии 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 интервалов до закрытия. Линия допустимых максимумов никогда не может быть выше линии ленты, так как допустимые принты — это подмножество всех принтов. Там, где они совпадают, каждый принт в этой четверти часа имел право установить максимум. Там, где верхняя линия отрывается, как минимум один принт в этом окне торговался выше самой высокой допустимой цены, и ни один график, построенный по правилам допустимости, этого не покажет.

Этот разрыв — честный ответ на расхождение. Источник, который берет максимальную цену каждого принта, сообщает один максимум. Источник, который применяет флаги допустимости, сообщает другой. Источник, который также отбрасывает сессии премаркета и постмаркета, сообщает третий. Все трое читают одну и ту же ленту.

Насколько надежен уровень допустимости?

Ненадежно. Флаги — это справочные данные, а справочные данные исправляются. Один коммерческий поставщик рыночных данных выпустил исправление для своего словаря условий, которое переклассифицировало допустимость одного условия продажи для установки официального открытия и закрытия. Ни одна сделка не изменилась. Лента за каждый затронутый день была идентична до исправления и после него. Изменился один флаг в справочной таблице, а вместе с ним — официальное открытие и закрытие, которые печатал каждый график и бэктест, использующий этот словарь.

Относитесь к OHLC любого отдельного поставщика как к одной версии прочтения ленты, а не как к факту о ней. Когда два источника не согласны, спрашивайте, какие правила допустимости применял каждый из них. Задержанные и консолидированные ленты котировок накладывают вторую версию той же проблемы, связанную со временем, а не с допустимостью.

Где находится авторитетный список кодов условий сделок

Ленты работают в рамках двух планов национальной рыночной системы: план CTA для ценных бумаг, торгуемых на NYSE, и план UTP для ценных бумаг Nasdaq. Каждый из них публикует спецификацию условий продажи для ленты, которой управляет. Эти спецификации являются авторитетными. Все, что идет дальше, включая идентификационные номера на панелях выше, — это отображение поставщиком данных в свою собственную нумерацию, и код от одного провайдера не обязательно означает то же самое у другого. Изучайте категории, а не цифры. Категории остаются стабильными годами. Цифры — это справочная таблица, а справочные таблицы редактируются.

Примечания к данным

Категории условий на панелях выше построены на основе самого словаря, а не жестко закодированных идентификационных номеров. Каждая категория — это совпадение по названию внутри группы условий продажи (неполный лот, форма T и внеурочные часы, вне последовательности, цена по предыдущему ориентиру, производное ценообразование, средняя цена, ценовое отклонение, продавец). Откройте SQL под любой панелью, чтобы увидеть точные шаблоны. Коды не являются взаимоисключающими, и один принт может нести несколько, поэтому процентные доли категорий перекрываются и не суммируются до общего значения сессии. Обе панели AAPL и панель по пяти компаниям охватывают одну фиксированную сессию в июне две тысячи двадцать шестого года, закрепленную в SQL, поэтому на этой странице ничего не меняется с приходом новых сессий.

Часто задаваемые вопросы

Что такое код условия сделки?

Это метка, прикрепленная к отчету о сделке в консолидированной ленте, описывающая, что это за отчет, например: поздно сообщенный, с производным ценообразованием, неполный лот или внеурочные часы. Каждый код несет флаги, отмечающие, может ли эта сделка обновить последнюю цену, максимум и минимум, открытие, закрытие и консолидированный объем.

Почему два веб-сайта показывают разные дневные максимумы для одной и той же акции?

Каждый применяет свой набор правил допустимости к одним и тем же принтам. Один может брать самую высокую цену любой сообщенной сделки, другой может исключать принты, чьи коды условий запрещают им устанавливать максимум, а третий может также отбрасывать сессии премаркета и постмаркета. Все они читают одну и ту же ленту.

Учитываются ли сделки с неполными лотами в объеме?

Да. Неполный лот, то есть менее ста акций, учитывается в консолидированном объеме, оставаясь недопустимым для установки последней цены или дневного максимума и минимума. Неполные лоты вообще не сообщались в консолидированную ленту до конца две тысячи тринадцатого года, поэтому долгосрочные сравнения объемов пересекают изменение определения в этой точке.

Учитываются ли сделки после закрытия в дневном максимуме и минимуме?

Нет, в максимуме и минимуме регулярной сессии — нет. Принты премаркета и постмаркета несут условие внеурочных часов или формы T, которое исключает их из открытия, максимума, минимума и закрытия регулярной сессии, при этом они все равно учитываются в консолидированном дневном объеме.

Где находится официальный список кодов условий продажи?

Планы CTA и UTP публикуют спецификации условий продажи для лент, которыми они управляют, и эти документы являются авторитетными. Ленты поставщиков перенумеровывают условия в свое собственное пространство идентификаторов, поэтому числовой код от одного провайдера не обязательно совпадает с тем же номером у другого.


Каждая панель здесь поставляется с SQL, который ее создал. Откройте любую, замените тикер или дату и запустите тот же анализ условий для любой сессии на терминале Strasmore.

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