取引条件コードを解説
同じ銘柄でも、三つのプラットフォームで日中高値が異なる理由を解説します。取引条件コードが高値、安値、終値、出来高を更新する約定を決めます。
取引条件コードがあるため、三つのプラットフォームが同じ銘柄について異なる日中高値を表示しても、どれも間違いとは限りません。コンソリデーテッドテープ上のすべての約定記録にはこれらのタグが付いています。タグによって、その記録が最終価格、日中高値・安値、公式始値、公式終値、コンソリデーテッド出来高の合計を更新できるかどうかが決まります。実際に約定した価格であっても、これらの項目のほとんどに反映されないことがあります。
取引条件コードとは何か
取引条件コードは、セールスコンディションとも呼ばれます。報告市場が取引報告をテープへ送る際に付けるタグです。価格と数量は何が取引されたかを示します。条件コードは、その報告がどのようなものかを示します。時間どおりに報告されたか、価格がその時点の合意価格ではなく他の約定から算出されたものか、通常取引時間外の約定か、100株未満の単元未満株の取引か、といった点を表します。
各コードには、適格性フラグが紐付いています。ほとんどの人が確認していないのはこの部分です。各コードには、最終価格、高値・安値、始値、終値、コンソリデーテッド出来高について、反映可能かどうかが設定されています。これらのフラグは互いに独立して動きます。高値や安値には反映できなくても、出来高には算入される記録は数多くあります。そのため、報告された株数と価格の極値は、重なりながらも異なる約定集合から構成されます。さらに別のフラグ群もあります。一方はコンソリデーテッドテープを管理し、もう一方は個別の市場センターを管理します。取引所の公式終値は、その取引所自身の約定記録だけで算出されるためです。
条件コードには複数のファミリーがあります。取引が何を更新できるかを決めるのは、そのうち一つだけです。
各数値の背後にある正確な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銘柄辞書には8のファミリーがあります。最大のファミリーはsale conditionで、固有コード数は40です。気配条件は取引ではなく、買い気配と売り気配を表します。インジケーターファミリーは、空売り規制が適用中であることなどの状態を示します。適格性フラグを持つのがセールスコンディション・ファミリーです。以下の数値はすべてこのファミリーから取得しています。
テープ上で実際に記録されているもの
下のパネルは、2026年6月の固定された一セッションを対象としています。午前4時のAAPLプレマーケット開始から午後8時の時間外取引終了まで、すべてのAAPLの約定記録を、付与されたセールスコンディション別に分類しています。対象時間はSQLで固定しているため、数値はその日だけを示します。約定記録には複数のコードが同時に付くことがあり、コードが一つも付かないものも多くあります。そのため、各列の合計は100になりません。
各数値の背後にある正確な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この日に最も多かったタグはOdd Lot Tradeで、セッション中の約定記録の65.83%、株数ベースでは6.37%を占めました。各行で二つの列を比較してください。約定記録の比率が出来高比率を大きく上回る場合、そのコードは小口約定を示します。逆の場合は、ごく少数の大口約定を示します。約定記録数と株数は異なる問いに答えます。その違いを分けるのが条件コードです。
なぜ二つのプラットフォームで日中高値が異なるのか
四種類の約定記録が、それぞれ異なる項目から除外されます。
- 遅延報告・時系列外。 午前10時14分に成立し、午前10時31分に報告された取引は、時系列外、または過去の基準価格に基づく価格としてテープに届きます。出来高には算入されますが、最終価格には反映されません。価格がそのセッションの他の約定をすべて上回っていても、日中高値を更新できません。交渉されたブロック取引や、ダークプール取引の市場から取引報告機関を経由して送られた約定記録は、ここに分類されることが多くあります。
- 派生価格。 平均価格取引やVWAP約定には、その時点で合意された価格ではなく、多数の約定から算出された価格が付いています。その価格はリアルタイムの気配として存在したものではないため、最終価格と高値・安値から除外されます。
- 単元未満株。 100株未満の取引です。単元未満株は、最終価格と高値・安値には反映されません。一方、コンソリデーテッド出来高には全量が算入されます。単元未満株は2013年後半まで、コンソリデーテッドテープに報告されていませんでした。この時点をまたぐ出来高比較では、「出来高」という言葉の定義が異なります。詳しくは平均日次出来高の解説をご覧ください。
- 時間外取引・フォーム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単元未満株の約定記録は、五銘柄すべてで全約定記録の46.8%から85.14%でした。この列は株価と密接に連動します。一定額の注文では、株価が高い銘柄ほど購入できる株数が少なくなるためです。NVDAが最も高く、約定記録の2.4%に遅延報告または派生価格のタグが付き、3.53%には時間外取引のタグが付きました。三つの区分に含まれる約定記録はすべて、実際の価格で成立した実取引です。それでも、すべて日中高値と安値の設定対象外です。
高値を更新しない約定記録
次のパネルでは、同じ固定されたAAPLのセッションを使います。通常取引時間の午前9時30分から午後4時までを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セッションは09:30で始まり、テープ上の高値は$302.07、適格な高値は$302.07でした。終値までに26区間あります。適格な約定記録は全約定記録の一部でしかないため、適格高値の線がテープ上の高値を上回ることはありません。二つの線が重なる区間では、その15分間のすべての約定記録が高値を更新できました。上の線が離れる区間では、その時間帯に適格な最高価格を上回る約定が少なくとも一つありました。適格性ルールに基づくチャートには、その価格は表示されません。
この差が、乖離に対する正確な答えです。すべての約定記録の最高価格を採用するデータソースは、一つの高値を報告します。適格性フラグを適用するデータソースは、別の高値を報告します。さらにプレマーケットと取引終了後のセッションを除外するデータソースは、三つ目の高値を報告します。三つとも同じテープを読み取っています。
適格性レイヤーの信頼性はどの程度か
高くありません。フラグは参照データであり、参照データは修正されることがあります。ある商用市場データ提供会社は、自社の条件辞書を修正し、特定のセールスコンディションについて、公式始値と公式終値を設定できるかどうかを変更しました。取引自体は変わっていません。影響を受けたすべての日について、修正前後でテープは同一でした。変わったのはルックアップテーブル内の一つのフラグだけです。その結果、その辞書を使うすべてのチャートとバックテストで表示される公式始値と公式終値が変わりました。
特定ベンダーのOHLCは、テープについての事実ではなく、テープの一つの読み方として扱ってください。二つの情報源が一致しない場合は、それぞれがどの適格性ルールを適用したかを確認します。遅延配信・コンソリデーテッド気配フィードでは、適格性ではなく配信タイミングを巡って、同じ問題がもう一つ重なります。
権威ある取引条件コード一覧の所在
テープは二つの全米市場システム・プランの下で運用されています。NYSE上場証券はCTA Plan、Nasdaq上場証券はUTP Planの対象です。それぞれが、管轄するテープのセールスコンディション仕様を公開しています。これらの仕様が権威ある情報源です。上のパネルの背後にあるID番号を含め、その下流の情報はすべて、ベンダーが仕様を独自の番号体系に変換したものです。あるプロバイダーのコードIDが、別のプロバイダーで同じ意味を持つとは限りません。数字ではなくカテゴリーを覚えてください。カテゴリーは長年安定しています。数字はルックアップテーブルであり、テーブルは編集されます。
データ注記
上のパネルの条件区分は、ハードコードされたID番号ではなく、辞書そのものから作成しています。各区分は、セールスコンディション・ファミリー内の名称一致で判定しています。対象は単元未満株、フォームTと時間外取引、時系列外、過去の基準価格、派生価格、平均価格、価格変動、売り手です。正確なパターンは、各パネルの下にあるSQLで確認できます。コードは相互排他的ではありません。一つの約定記録に複数のコードが付くことがあるため、区分の比率は重複し、セッション合計にはなりません。AAPLの二つのパネルと五銘柄のパネルは、SQLで固定した2026年6月の一セッションを対象としています。そのため、新しいセッションが追加されても、このページの数値は変わりません。
よくある質問
取引条件コードとは何ですか?
コンソリデーテッドテープ上の取引報告に付くタグです。遅延報告、派生価格、単元未満株、時間外取引など、報告の種類を示します。各コードには、その取引が最終価格、高値・安値、始値、終値、コンソリデーテッド出来高を更新できるかどうかを示すフラグが付いています。
なぜ同じ銘柄の日中高値がウェブサイトごとに異なるのですか?
同じ約定記録に対して、それぞれ異なる適格性ルールを適用するためです。あるサイトは報告されたすべての取引の最高価格を採用します。別のサイトは、高値を設定できない条件コードの約定記録を除外します。さらに別のサイトは、プレマーケットと取引終了後のセッションも除外することがあります。いずれも同じテープを読み取っています。
単元未満株の取引は出来高に算入されますか?
はい。単元未満株、つまり100株未満の取引は、最終価格や日中高値・安値の設定対象外ですが、コンソリデーテッド出来高には算入されます。2013年後半より前は、単元未満株はコンソリデーテッドテープに報告されていませんでした。そのため、長期の出来高比較では、その時点で定義の変更をまたぎます。
時間外取引は日中高値・安値に算入されますか?
通常取引時間の日中高値・安値には算入されません。プレマーケットと取引終了後の約定記録には、時間外取引またはフォームTの条件が付きます。これにより、通常取引時間の始値、高値、安値、終値から除外されます。一方、その日のコンソリデーテッド出来高には算入されます。
セールスコンディションの公式一覧はどこにありますか?
CTA PlanとUTP Planが、それぞれ管轄するテープのセールスコンディション仕様を公開しています。これらの文書が権威ある情報源です。ベンダーフィードは条件を独自のID体系に振り直すため、あるプロバイダーの数値コードが、別のプロバイダーで同じ番号に対応するとは限りません。
このページの各パネルには、作成に使ったSQLが付いています。パネルを開き、tickerまたは日付を変更して、Strasmore terminal上の任意のセッションで同じ条件別分析を実行できます。