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

Kody warunków transakcji na giełdzie wyjaśnienie

Kody warunków transakcji determinują sposób aktualizacji danych rynkowych. Wyjaśniamy, dlaczego te oznaczenia wpływają na raportowane maksima, minima oraz wolumen obrotu akcji.

Kody warunków transakcji są powodem, dla którego trzy różne platformy mogą wskazywać trzy różne dzienne maksima dla tej samej akcji, przy czym żadna z nich nie podaje błędnych danych. Każdy zapis (print) w skonsolidowanym taśmie (consolidated tape) zawiera te znaczniki, które decydują o tym, czy dany zapis może zaktualizować cenę ostatnią, dzienne maksimum i minimum, oficjalne otwarcie, oficjalne zamknięcie oraz całkowity skonsolidowany wolumen. Transakcja może być rzetelną egzekucją po rzetelnej cenie, a mimo to zostać wykluczona z niemal wszystkich tych pól.

Czym są kody warunków transakcji?

Kod warunku transakcji, zwany również warunkiem sprzedaży, to znacznik, który miejsce raportowania przypisuje do raportu o transakcji w drodze na taśmę. Cena i wielkość określają, co zostało przedmiotem obrotu. Warunek określa rodzaj raportu: czy dotarł na czas, czy jego cena została obliczona na podstawie innych egzekucji, a nie ustalona w danej chwili, czy miała miejsce poza regularnymi godzinami handlu, czy dotyczyła mniej niż stu akcji (tzw. odd lot).

Z każdym kodem powiązany jest zestaw flag kwalifikowalności i jest to część, której prawie nikt nie widzi. Każdy kod jest oznaczony jako kwalifikujący się lub niekwalifikujący się do ceny ostatniej, do maksimum i minimum, do otwarcia, do zamknięcia oraz do skonsolidowanego wolumenu. Flagi te zmieniają się niezależnie od siebie. Wiele zapisów, które nie mogą wpłynąć na maksimum lub minimum, nadal wlicza się do wolumenu, dlatego raportowana liczba akcji spółki i jej raportowane ekstrema cenowe budowane są z nakładających się, ale różnych zestawów transakcji. Drugi zestaw flag funkcjonuje równolegle do pierwszego: jeden zestaw reguluje skonsolidowaną taśmę, drugi reguluje poszczególne centra rynkowe, ponieważ oficjalne zamknięcie giełdy obliczane jest wyłącznie na podstawie jej własnych zapisów.

Kody warunków występują w rodzinach i tylko jedna rodzina reguluje to, co transakcja może zaktualizować.

ZapytanieKody warunków transakcji dla akcji w USA
Dokładny kod SQL dla każdej liczby
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

Słownik akcji zawiera 8 rodzin. Największą z nich jest rodzina sale condition, obejmująca 40 odrębnych kodów. Warunki kwotowań opisują ofertę kupna i sprzedaży, a nie transakcję. Rodziny wskaźników sygnalizują stany takie jak obowiązujące ograniczenie krótkiej sprzedaży. Rodzina warunków sprzedaży jest tą, która zawiera flagi kwalifikowalności i to z niej pochodzi każda liczba poniżej.

Co faktycznie trafia na taśmę

Poniższy panel przedstawia jedną wybraną sesję z czerwca 2026 roku: każdy zapis AAPL od otwarcia przedsesyjnego o 4:00 rano do zakończenia handlu pozasesyjnego o 20:00, pogrupowany według warunku sprzedaży, jaki zawierał każdy zapis. Okno czasowe jest ustalone w SQL, więc te dane opisują tylko ten konkretny dzień. Zapis może zawierać kilka kodów jednocześnie, a wiele z nich nie zawiera żadnego, dlatego kolumny nie sumują się do stu.

ZapytanieSesja AAPL: wolumen według warunków transakcji
Dokładny kod SQL dla każdej liczby
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

Najczęstszym znacznikiem w tym dniu był Odd Lot Trade, występujący w 65.83% zapisów sesji i obejmujący 6.37% jej wolumenu. Należy czytać obie kolumny w zestawieniu wiersz po wierszu. Tam, gdzie udział zapisów przewyższa udział w wolumenie, kod oznacza małe egzekucje. Tam, gdzie jest odwrotnie, kod oznacza garść bardzo dużych transakcji. Liczenie zapisów i liczenie akcji odpowiada na różne pytania, a kod warunku jest tym, co je rozróżnia.

Dlaczego dwie platformy pokazują różne dzienne maksima?

Cztery rodzaje zapisów są wykluczane z różnych podzbiorów pól.

  • Raportowane z opóźnieniem i poza kolejnością. Transakcja uzgodniona o 10:14 i zaraportowana o 10:31 trafia na taśmę z oznaczeniem „poza kolejnością” lub wyceniona na podstawie wcześniejszego odniesienia. Wlicza się do wolumenu. Nie może ustalić ceny ostatniej i nie może podnieść dziennego maksimum, nawet jeśli jej cena znajduje się powyżej każdej innej transakcji sesji. Negocjowane transakcje pakietowe i zapisy kierowane przez placówkę raportowania transakcji z miejsc dark pool trading często trafiają do tej kategorii.
  • Wyceniane pochodnie. Transakcja po cenie średniej lub realizacja VWAP posiada cenę obliczoną na podstawie wielu innych egzekucji, a nie uzgodnioną w danej chwili. Jest wykluczana z ceny ostatniej oraz z ekstremów, ponieważ cena, którą wykazuje, nigdy nie istniała jako bieżące kwotowanie.
  • Odd lot. Mniej niż 100 akcji. Transakcje typu odd lot nie kwalifikują się do ceny ostatniej oraz do maksimum i minimum, podczas gdy w pełni wliczają się do skonsolidowanego wolumenu. Do końca 2013 roku w ogóle nie były raportowane do skonsolidowanej taśmy. Każde porównanie wolumenu sięgające wstecz poza tę granicę porównuje dwie różne definicje tego słowa, co szczegółowo omawia nasz przewodnik po średnim dziennym wolumenie.
  • Godziny wydłużone i Form T. Zapisy przedsesyjne i pozasesyjne są oznaczane i wykluczane z otwarcia, maksimum, minimum i zamknięcia regularnej sesji, mimo że nadal wliczają się do skonsolidowanego wolumenu. Platforma, która je wykazuje, pokazuje inny dzienny zakres niż ta, która tego nie robi, i to jest mechanizm stojący za tym, że handel pozasesyjny i przedsesyjny pojawia się na jednym wykresie, a na innym nie.

Oto jak dużą część sesji stanowi każde z tych wiader danych dla pięciu znanych spółek, w tym samym dniu.

ZapytanieUdział transakcji wykluczonych z wyceny w sesji
Dokładny kod SQL dla każdej liczby
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

Zapisy typu odd lot stanowiły od 46.8% do 85.14% wszystkich zapisów dla tych pięciu spółek. Ta kolumna ściśle śledzi cenę akcji, ponieważ zlecenie o stałej wartości dolarowej kupuje mniej akcji w przypadku spółki o wyższej cenie. NVDA znalazło się na szczycie, z 2.4% zapisów oznaczonych jako opóźnione lub wycenione pochodnie oraz 3.53% oznaczonymi jako godziny wydłużone. Każdy zapis we wszystkich trzech kategoriach jest rzeczywistą transakcją po rzeczywistej cenie i każdy z nich ma zakaz ustalania maksimum i minimum.

Zapis, który nie podnosi maksimum

Kolejny panel wykorzystuje tę samą sesję AAPL, dzieli regularne okno od 9:30 do 16:00 na piętnastominutowe przedziały i wyznacza dwa maksima dla każdego z nich. Jedna linia przyjmuje najwyższą cenę spośród wszystkich zapisów. Druga przyjmuje najwyższą cenę spośród zapisów, których warunki kwalifikują je do ustalenia maksimum.

ZapytaniePorównanie maksimów sesji AAPL w interwałach 15-minutowych
Dokładny kod SQL dla każdej liczby
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

Sesja otwiera się o 09:30 z maksimum na taśmie na poziomie $302.07 wobec maksimum kwalifikowalnego na poziomie $302.07 i trwa przez 26 przedziałów do zamknięcia. Linia kwalifikowalna nigdy nie może znajdować się powyżej linii taśmy, ponieważ zapisy kwalifikowalne są podzbiorem wszystkich zapisów. Tam, gdzie obie linie pokrywają się, każdy zapis w tym kwadransie mógł ustalić maksimum. Tam, gdzie górna linia odchyla się, przynajmniej jeden zapis w tym oknie był powyżej najwyższej ceny kwalifikowalnej i żaden wykres zbudowany zgodnie z zasadami kwalifikowalności nigdy go nie pokaże.

Ta rozbieżność jest uczciwą odpowiedzią na różnice w danych. Źródło, które przyjmuje cenę maksymalną każdego zapisu, raportuje jedno maksimum. Źródło, które stosuje flagi kwalifikowalności, raportuje inne. Źródło, które dodatkowo odrzuca sesje przedsesyjne i pozasesyjne, raportuje trzecie. Wszystkie trzy czytają tę samą taśmę.

Jak solidna jest warstwa kwalifikowalności?

Słabo. Flagi to dane referencyjne, a dane referencyjne podlegają korektom. Jeden komercyjny dostawca danych rynkowych wprowadził poprawkę do własnego słownika warunków, która przeklasyfikowała kwalifikowalność pojedynczego warunku sprzedaży do ustalania oficjalnego otwarcia i zamknięcia. Żadna transakcja nie uległa zmianie. Taśma dla każdego dotkniętego dnia była identyczna przed poprawką i po niej. Zmieniła się jedna flaga w tabeli wyszukiwania, a wraz z nią oficjalne otwarcie i zamknięcie, które drukował każdy wykres i backtest korzystający z tego słownika.

Należy traktować OHLC dowolnego dostawcy jako jeden odczyt taśmy, a nie jako fakt o niej. Gdy dwa źródła się nie zgadzają, należy zapytać, jakie zasady kwalifikowalności zastosowało każde z nich. Opóźnione i skonsolidowane kanały kwotowań nakładają na to drugą wersję tego samego problemu, dotyczącą czasu, a nie kwalifikowalności.

Gdzie znajduje się autorytatywna lista kodów warunków transakcji

Taśmy działają w ramach dwóch planów krajowego systemu rynkowego: planu CTA dla papierów wartościowych notowanych na NYSE oraz planu UTP dla notowanych na Nasdaq, a każdy z nich publikuje specyfikację warunków sprzedaży dla administrowanej przez siebie taśmy. Te specyfikacje są autorytetem. Wszystko, co znajduje się poniżej, w tym numery ID za panelami powyżej, jest mapowaniem dostawcy na jego własną numerację, a kod ID od jednego dostawcy niekoniecznie oznacza to samo u innego. Należy uczyć się kategorii, a nie liczb. Kategorie są stabilne od lat. Liczby to tabela wyszukiwania, a tabele wyszukiwania są edytowane.

Uwagi do danych

Wiadra warunków w powyższych panelach są zbudowane na podstawie samego słownika, a nie zakodowanych na sztywno numerów ID. Każde wiadro to dopasowanie nazwy wewnątrz rodziny warunków sprzedaży (odd lot, form T i godziny wydłużone, poza kolejnością, cena odniesienia, wycenione pochodnie, cena średnia, zmienność ceny, sprzedający). Otwórz SQL pod dowolnym panelem, aby odczytać dokładne wzorce. Kody nie wykluczają się wzajemnie i pojedynczy zapis może zawierać kilka z nich, więc procenty w wiadrach nakładają się i nie sumują do całości sesji. Oba panele AAPL oraz panel dla pięciu spółek obejmują jedną ustaloną sesję w czerwcu 2026 roku, przypiętą w SQL, więc nic na tej stronie nie zmienia się wraz z nadejściem nowych sesji.

FAQ

Czym jest kod warunku transakcji?

To znacznik dołączony do raportu o transakcji na skonsolidowanej taśmie, opisujący rodzaj raportu, na przykład raportowany z opóźnieniem, wyceniony pochodnie, odd lot lub godziny wydłużone. Każdy kod zawiera flagi oznaczające, czy dana transakcja może zaktualizować cenę ostatnią, maksimum i minimum, otwarcie, zamknięcie oraz skonsolidowany wolumen.

Dlaczego dwie strony internetowe pokazują różne dzienne maksima dla tej samej akcji?

Każda z nich stosuje inny zestaw zasad kwalifikowalności do tych samych zapisów. Jedna może przyjmować najwyższą cenę każdej zaraportowanej transakcji, inna może wykluczać zapisy, których kody warunków zabraniają im ustalania maksimum, a trzecia może dodatkowo odrzucać sesje przedsesyjne i pozasesyjne. Wszystkie czytają tę samą taśmę.

Czy transakcje typu odd lot wliczają się do wolumenu?

Tak. Transakcja typu odd lot, oznaczająca mniej niż 100 akcji, wlicza się do skonsolidowanego wolumenu, pozostając niekwalifikowalną do ustalenia ceny ostatniej lub dziennego maksimum i minimum. Transakcje odd lot w ogóle nie były raportowane do skonsolidowanej taśmy przed końcem 2013 roku, więc długoterminowe porównania wolumenu przekraczają w tym punkcie zmianę definicji.

Czy transakcje pozasesyjne wliczają się do dziennego maksimum i minimum?

Nie w przypadku maksimum i minimum regularnej sesji. Zapisy przedsesyjne i pozasesyjne zawierają warunek godzin wydłużonych lub Form T, który wyklucza je z otwarcia, maksimum, minimum i zamknięcia regularnej sesji, mimo że nadal wliczają się do dziennego skonsolidowanego wolumenu.

Gdzie znajduje się oficjalna lista kodów warunków sprzedaży?

Plan CTA i plan UTP publikują specyfikacje warunków sprzedaży dla administrowanych przez siebie taśm i te dokumenty są autorytetem. Kanały dostawców zmieniają numerację warunków na własną przestrzeń ID, więc kod numeryczny od jednego dostawcy niekoniecznie pasuje do tego samego numeru u innego.


Każdy panel tutaj jest dostarczany z kodem SQL, który go wygenerował. Otwórz jeden, zmień ticker lub datę i uruchom to samo zestawienie warunków dla dowolnej sesji na terminalu Strasmore.

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