Trade Condition Codes: Paliwanag
Bakit magkakaiba ang daily high ng parehong stock sa tatlong platform? Trade condition codes ang nagtatakda kung aling prints ang nag-a-update sa high, low, close, at volume.
Ang trade condition codes ang dahilan kung bakit maaaring magpakita ang tatlong platform ng tatlong magkakaibang daily high para sa parehong stock, kahit walang mali sa alinman sa mga ito. May ganitong tag ang bawat print sa consolidated tape, at tinutukoy ng mga ito kung maaari bang i-update ng isang print ang last price, day's high at low, official open, official close, at kabuuang consolidated volume. Maaaring tunay na execution ang isang trade sa tunay na presyo, ngunit hindi pa rin ito maisama sa halos lahat ng field na iyon.
Ano ang trade condition codes?
Ang trade condition code, na tinatawag ding sale condition, ay isang tag na ikinakabit ng reporting venue sa trade report bago ito mapunta sa tape. Ipinapakita ng price at size kung ano ang na-trade. Ipinapakita naman ng condition kung anong uri ng report ito: kung nasa oras itong nai-report, kung ang presyo nito ay kinuwenta mula sa iba pang executions sa halip na napagkasunduan sa mismong sandaling iyon, kung nangyari ito sa labas ng regular hours, o kung mas kaunti ito sa 100 shares ng isang round lot.
May kalakip na set ng eligibility flags ang bawat code, at ito ang bahaging halos walang nakakakita. Minamarkahan ang bawat code bilang eligible o ineligible para sa last price, high at low, open, close, at consolidated volume. Malayang gumagalaw ang mga flag na ito sa isa't isa. Maraming print na hindi maaaring makaapekto sa high o low ang binibilang pa rin sa volume. Kaya ang naiulat na share count ng isang stock at ang naiulat nitong price extremes ay nagmumula sa magkakapatong ngunit magkakaibang set ng trades. May ikalawa ring set ng flags na kasabay ng una: ang isa ay para sa consolidated tape, at ang isa ay para sa indibidwal na market center, dahil ang sariling official close ng isang exchange ay kinukuwenta lamang mula sa sarili nitong prints.
Dumarating ang condition codes sa iba't ibang pamilya, ngunit iisang pamilya lamang ang tumutukoy kung ano ang maaaring i-update ng isang trade.
Ang eksaktong SQL sa likod ng bawat numero
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 DESCMay 8 pamilya ang stocks dictionary. Ang pinakamalaki ay ang sale condition family, na may 40 magkakaibang code. Inilalarawan ng quote conditions ang bid at offer, hindi ang trade. Minamarkahan ng indicator families ang mga estado gaya ng umiiral na short sale restriction. Ang sale condition family ang may dalang eligibility flags, at dito nagmumula ang bawat numerong nasa ibaba.
Ano ang aktuwal na nasa tape
Kinukuha ng panel sa ibaba ang isang fixed session mula June 2026: bawat AAPL print mula sa 4:00 a.m. premarket open hanggang sa 8:00 p.m. pagtatapos ng post-market trading, na pinangkat ayon sa sale condition na dala ng bawat print. Naka-fix ang window sa SQL, kaya para sa araw na iyon lamang ang mga figure na ito. Maaaring may ilang code ang isang print nang sabay, at maraming print ang walang code. Dahil dito, hindi umaabot sa 100 ang kabuuan ng mga column.
Ang eksaktong SQL sa likod ng bawat numero
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 12Ang pinakakaraniwang tag noong araw ay Odd Lot Trade, na nasa 65.83% ng mga print ng session at 6.37% ng mga share nito. Basahin ang dalawang column nang magkahanay, row by row. Kapag higit na mataas ang print share kaysa share ng volume, maliliit na execution ang minamarkahan ng code. Kapag kabaligtaran, iilang napakalalaking execution ang minamarkahan nito. Magkaibang tanong ang sinasagot ng bilang ng prints at bilang ng shares, at ang condition code ang naghihiwalay sa mga ito.
Bakit magkakaiba ang daily high sa dalawang platform?
Apat na uri ng print ang hindi isinasama sa magkakaibang subset ng mga field.
- Late reported at out of sequence. Ang trade na napagkasunduan sa 10:14 at nai-report sa 10:31 ay dumarating sa tape na may tag na out of sequence o priced off a prior reference. Binibilang ito sa volume. Hindi nito maaaring itakda ang last price at hindi nito maaaring itaas ang day's high kahit mas mataas ang presyo nito kaysa sa lahat ng iba pang trade sa session. Madalas kabilang dito ang mga negotiated block trades at prints na ipinadaan sa isang trade reporting facility mula sa mga venue ng dark pool trading.
- Derivatively priced. Ang average price trade o VWAP fill ay may presyong kinuwenta mula sa maraming iba pang execution, sa halip na napagkasunduan sa mismong sandaling iyon. Hindi ito isinasama sa last price at sa extremes dahil ang ipinapakita nitong presyo ay hindi kailanman umiral bilang live quote.
- Odd lot. Mas kaunti sa 100 shares. Ineligible ang odd lots para sa last price at high at low, ngunit buong binibilang sa consolidated volume. Hindi talaga nai-report ang mga ito sa consolidated tape hanggang huling bahagi ng 2013. Anumang volume comparison na umaabot sa panahong bago ang cutoff na iyon ay naghahambing ng dalawang magkaibang depinisyon ng salita, na detalyadong tinatalakay ng aming gabay sa average daily volume.
- Extended hours at form T. May tag ang mga print sa premarket at post-close, at hindi sila isinasama sa regular session open, high, low at close, ngunit binibilang pa rin sa consolidated volume. Magpapakita ang platform na nagcha-chart ng mga ito ng ibang daily range kaysa sa platform na hindi nagsasama sa mga ito. Ito ang dahilan kung bakit lumalabas ang after-hours at premarket trading sa isang chart ngunit hindi sa isa pa.
Narito kung gaano kalaking bahagi ng isang session ang kinakatawan ng bawat bucket sa limang kilalang pangalan, sa parehong fixed day.
Ang eksaktong SQL sa likod ng bawat numero
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 DESCAng odd lot prints ay nasa pagitan ng 46.8% at 85.14% ng lahat ng prints sa limang pangalan. Malapit na sumusunod ang column na ito sa share price dahil sa parehong dollar order, mas kaunting shares ang nabibili sa mas mataas na presyo. Nanguna ang NVDA, na may 2.4% ng prints na may tag na late o derivatively priced at 3.53% na may tag na extended hours. Tunay na trade sa tunay na presyo ang bawat print sa tatlong bucket, ngunit lahat ng ito ay hindi maaaring magtakda ng high at low.
Isang print na hindi nakapagtaas ng high
Kinukuha ng susunod na panel ang parehong fixed AAPL session, hinahati ang regular na 9:30 a.m. hanggang 4:00 p.m. window sa labinlimang-minutong bucket, at gumuguhit ng dalawang high para sa bawat bucket. Kinukuha ng isang linya ang pinakamataas na presyo ng anumang print. Kinukuha naman ng isa ang pinakamataas na presyo mula sa mga print na, batay sa kanilang conditions, ay eligible na magtakda ng high.
Ang eksaktong SQL sa likod ng bawat numero
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_timeNagbubukas ang session sa 09:30, na may tape high na $302.07 kumpara sa eligible high na $302.07, at dumaraan sa 26 bucket bago ang close. Hindi maaaring lumampas ang eligible line sa tape line dahil subset lamang ng lahat ng print ang eligible prints. Kapag eksaktong magkatapat ang dalawa, pinayagan ang bawat print sa quarter hour na magtakda ng high. Kapag lumalayo ang upper line, may kahit isang print sa window na nag-trade sa presyong mas mataas kaysa sa pinakamataas na eligible price. Hindi ito kailanman ipapakita ng chart na sumusunod sa eligibility rules.
Iyan ang tuwirang sagot sa discrepancy. Ang source na kumukuha ng maximum price ng bawat print ay nag-uulat ng isang high. Ang source na naglalapat ng eligibility flags ay nag-uulat ng iba. Ang source na nag-aalis din ng premarket at post-close sessions ay nag-uulat ng ikatlo. Pare-pareho nilang binabasa ang iisang tape.
Gaano katatag ang eligibility layer?
Hindi gaanong matatag. Reference data ang mga flag, at maaaring itama ang reference data. May isang commercial market data provider na naglabas ng fix sa sarili nitong condition dictionary at muling nag-classify sa eligibility ng isang sale condition para magtakda ng official open at official close. Walang trade na nagbago. Pareho ang tape para sa bawat apektadong araw bago at pagkatapos ng fix. Isang flag lamang sa lookup table ang nagbago, pati ang official open at close na naipiniprint ng bawat chart at backtest na gumagamit ng dictionary na iyon.
Ituring ang OHLC ng isang vendor bilang isang pagbasa lamang sa tape, hindi bilang ganap na katotohanan tungkol dito. Kapag hindi nagtutugma ang dalawang source, alamin kung anong eligibility rules ang inilapat ng bawat isa. Nagdaragdag ang Delayed at consolidated quote feeds ng ikalawang anyo ng parehong problema, ngunit sa timing naman at hindi sa eligibility.
Saan makikita ang authoritative trade condition code list
Gumagana ang mga tape sa ilalim ng dalawang national market system plan: ang CTA Plan para sa NYSE-listed securities at ang UTP Plan para sa Nasdaq-listed securities. Pareho silang naglalathala ng sale condition specification para sa tape na kanilang pinangangasiwaan. Ang mga specification na iyon ang awtoridad. Lahat ng downstream data, kabilang ang mga id number sa likod ng mga panel sa itaas, ay mapping ng vendor sa sarili nitong numbering. Hindi nangangahulugang pareho ang code id mula sa dalawang provider. Matutunan ang mga kategorya sa halip na ang mga numero. Matatag ang mga kategorya sa loob ng maraming taon. Lookup table ang mga numero, at maaaring baguhin ang lookup tables.
Mga tala sa data
Ang condition buckets sa mga panel sa itaas ay binuo mula mismo sa dictionary, hindi mula sa hardcoded id numbers. Ang bawat bucket ay name match sa loob ng sale condition family: odd lot, form T at extended trading hours, out of sequence, prior reference price, derivatively priced, average price, price variation, at seller. Buksan ang SQL sa ilalim ng anumang panel para makita ang eksaktong patterns. Hindi mutually exclusive ang mga code, at maaaring may ilang code ang isang print. Dahil dito, nagsasapawan ang bucket percentages at hindi umaabot sa kabuuan ng session. Parehong sumasaklaw ang dalawang AAPL panel at ang five-name panel sa isang fixed session noong June 2026, na naka-pin sa SQL. Kaya walang magbabago sa page na ito kapag may mga bagong session.
FAQ
Ano ang trade condition code?
Isa itong tag na ikinakabit sa trade report sa consolidated tape upang ilarawan kung anong uri ng report ito, gaya ng late reported, derivatively priced, odd lot, o extended hours. May flags ang bawat code na nagsasaad kung maaaring i-update ng trade ang last price, high at low, open, close, at consolidated volume.
Bakit magkakaiba ang daily high para sa parehong stock sa dalawang website?
Magkaibang set ng eligibility rules ang inilalapat ng bawat isa sa parehong prints. Maaaring kunin ng isa ang pinakamataas na presyo ng anumang naiulat na trade. Maaaring alisin ng isa pa ang mga print na, batay sa condition codes, ay hindi maaaring magtakda ng high. Maaari ring alisin ng ikatlo ang premarket at post-close sessions. Pare-pareho nilang binabasa ang iisang tape.
Binibilang ba sa volume ang odd lot trades?
Oo. Ang odd lot, na nangangahulugang mas kaunti sa 100 shares, ay binibilang sa consolidated volume ngunit hindi eligible na magtakda ng last price o day's high at low. Hindi talaga nai-report ang odd lots sa consolidated tape bago ang huling bahagi ng 2013. Kaya ang long-run volume comparisons ay dumaraan sa pagbabago ng depinisyon sa panahong iyon.
Binibilang ba ang after-hours trades sa daily high at low?
Hindi sa high at low ng regular session. May extended hours o form T condition ang mga print sa premarket at post-close, kaya hindi sila isinasama sa regular session open, high, low at close. Gayunman, binibilang pa rin sila sa day's consolidated volume.
Saan makikita ang official list ng sale condition codes?
Inilalathala ng CTA Plan at UTP Plan ang sale condition specifications para sa mga tape na kanilang pinangangasiwaan, at ang mga dokumentong iyon ang awtoridad. Nirerenumber ng vendor feeds ang mga condition ayon sa sarili nilang id space. Kaya hindi nangangahulugang katumbas ng parehong numero sa ibang provider ang numeric code mula sa isang provider.
May kasamang SQL ang bawat panel dito na siyang gumawa ng data nito. Buksan ang isang panel, palitan ang ticker o petsa, at patakbuhin ang parehong condition breakdown para sa anumang session sa Strasmore terminal.