Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Giải thích mã điều kiện giao dịch

Ba nền tảng có thể hiển thị ba mức cao nhất khác nhau cho cùng một cổ phiếu. Mã điều kiện giao dịch quyết định giao dịch nào cập nhật giá cao, thấp, đóng cửa và khối lượng.

Mã điều kiện giao dịch là lý do ba nền tảng có thể hiển thị ba mức giá cao nhất trong ngày khác nhau cho cùng một cổ phiếu mà không nền tảng nào sai. Mỗi giao dịch khớp trên consolidated tape đều đi kèm các mã này. Chúng quyết định giao dịch đó có được cập nhật giá gần nhất, mức cao và thấp trong ngày, giá mở cửa chính thức, giá đóng cửa chính thức và tổng khối lượng consolidated hay không. Một giao dịch có thể là giao dịch khớp thực sự ở mức giá thực sự nhưng vẫn bị loại khỏi gần như tất cả các trường dữ liệu này.

Mã điều kiện giao dịch là gì?

Mã điều kiện giao dịch, còn gọi là sale condition, là nhãn mà địa điểm báo cáo gắn vào báo cáo giao dịch trước khi đưa lên tape. Giá và khối lượng cho biết giao dịch đã diễn ra như thế nào. Điều kiện cho biết đó là loại báo cáo nào: báo cáo có đến đúng thời điểm hay không, giá có được tính từ các giao dịch khác thay vì được thỏa thuận ngay lúc đó hay không, giao dịch có diễn ra ngoài giờ giao dịch thông thường hay không, và giao dịch có bao gồm ít hơn 100 cổ phiếu của một round lot hay không.

Mỗi mã đi kèm một tập hợp cờ xác định điều kiện được tính. Đây là phần hầu như không ai nhìn thấy. Mỗi mã được đánh dấu đủ điều kiện hoặc không đủ điều kiện để cập nhật giá gần nhất, mức cao và thấp, giá mở cửa, giá đóng cửa và consolidated volume. Các cờ này hoạt động độc lập với nhau. Nhiều giao dịch không được phép tác động đến mức cao hoặc thấp vẫn được tính vào volume. Vì vậy, tổng số cổ phiếu được báo cáo và các mức giá cực trị được báo cáo của một cổ phiếu được hình thành từ những tập hợp giao dịch có phần giao nhau nhưng không giống nhau. Có thêm một tập hợp cờ thứ hai: một tập hợp áp dụng cho consolidated tape, tập hợp còn lại áp dụng cho từng trung tâm thị trường, vì giá đóng cửa chính thức của một sàn chỉ được tính từ các giao dịch do chính sàn đó báo cáo.

Các mã điều kiện được chia thành nhiều nhóm. Chỉ một nhóm quyết định giao dịch có thể cập nhật dữ liệu nào.

Truy vấnCác nhóm mã điều kiện cho cổ phiếu Mỹ
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Từ điển cổ phiếu có 8 nhóm. Lớn nhất là nhóm sale condition, gồm 40 mã riêng biệt. Quote conditions mô tả bid và offer thay vì một giao dịch. Các nhóm indicator đánh dấu những trạng thái như lệnh hạn chế bán khống đang có hiệu lực. Nhóm sale condition là nhóm chứa các cờ xác định điều kiện được tính. Mọi con số bên dưới đều được lấy từ nhóm này.

Thực tế được đưa lên tape là gì

Bảng dưới đây lấy một phiên cố định trong tháng 6/2026: toàn bộ giao dịch AAPL từ lúc premarket mở cửa lúc 4:00 sáng đến khi post-market kết thúc lúc 8:00 tối, được nhóm theo sale condition của từng giao dịch. Khung thời gian được cố định trong SQL, nên các số liệu này chỉ mô tả phiên đó. Một giao dịch có thể mang nhiều mã cùng lúc, và nhiều giao dịch không mang mã nào. Vì vậy, các cột không cộng lại thành 100.

Truy vấnMột phiên AAPL, mọi giao dịch được nhóm theo điều kiện bán
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Nhãn phổ biến nhất trong ngày là Odd Lot Trade, xuất hiện trong 65.83% số giao dịch của phiên và chiếm 6.37% số cổ phiếu giao dịch. Hãy đọc hai cột theo từng dòng và so sánh với nhau. Khi tỷ trọng số giao dịch cao hơn nhiều so với tỷ trọng volume, mã đó cho thấy các giao dịch có quy mô nhỏ. Khi tỷ trọng volume cao hơn nhiều, mã đó cho thấy một số ít giao dịch rất lớn. Đếm số giao dịch và đếm số cổ phiếu trả lời hai câu hỏi khác nhau. Mã điều kiện là yếu tố phân biệt hai cách đo này.

Vì sao hai nền tảng hiển thị mức cao trong ngày khác nhau?

Bốn loại giao dịch bị loại khỏi các nhóm trường dữ liệu khác nhau.

  • Báo cáo trễ và không theo thứ tự. Một giao dịch được thỏa thuận lúc 10:14 nhưng được báo cáo lúc 10:31 sẽ lên tape với mã out of sequence hoặc mã cho biết giá được xác định theo một mức tham chiếu trước đó. Giao dịch này vẫn được tính vào volume. Tuy nhiên, nó không được cập nhật giá gần nhất và không thể thiết lập mức cao trong ngày, ngay cả khi giá của nó cao hơn mọi giao dịch khác trong phiên. Block trades được thương lượng và các giao dịch được định tuyến qua trade reporting facility từ các địa điểm dark pool trading thường thuộc nhóm này.
  • Định giá phái sinh. Một giao dịch theo giá bình quân hoặc một lệnh khớp theo VWAP có mức giá được tính từ nhiều giao dịch khớp khác, thay vì được thỏa thuận tại thời điểm đó. Giao dịch này không được tính vào giá gần nhất và các mức cực trị, vì mức giá hiển thị chưa từng tồn tại như một quote trực tiếp.
  • Odd lot. Ít hơn 100 cổ phiếu. Odd lot không đủ điều kiện cập nhật giá gần nhất, mức cao và thấp, nhưng vẫn được tính đầy đủ vào consolidated volume. Odd lot chỉ bắt đầu được báo cáo lên consolidated tape từ cuối năm 2013. Mọi so sánh volume lùi về trước mốc này đều đang so sánh hai cách định nghĩa khác nhau của cùng một khái niệm. Hướng dẫn của chúng tôi về average daily volume trình bày chi tiết vấn đề này.
  • Extended hours và form T. Các giao dịch premarket và sau giờ đóng cửa được gắn mã và bị loại khỏi giá mở cửa, mức cao, mức thấp và giá đóng cửa của phiên thông thường, nhưng vẫn được tính vào consolidated volume. Nền tảng đưa các giao dịch này vào biểu đồ sẽ hiển thị biên độ trong ngày khác với nền tảng không đưa vào. Đây là lý do after-hours and premarket trading xuất hiện trên biểu đồ này nhưng không xuất hiện trên biểu đồ khác.

Dưới đây là tỷ trọng của từng nhóm trong một phiên tại năm cổ phiếu quen thuộc, cùng ngày cố định.

Truy vấnTỷ trọng giao dịch trong phiên mang điều kiện không đủ điều kiện về giá
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Tỷ lệ giao dịch odd lot dao động từ 46.8% đến 85.14% tổng số giao dịch của năm cổ phiếu. Cột này biến động khá sát với thị giá, vì cùng một lệnh theo giá trị dollar sẽ mua được ít cổ phiếu hơn ở cổ phiếu có giá cao hơn. NVDA đứng đầu, với 2.4% số giao dịch mang mã báo cáo trễ hoặc định giá phái sinh và 3.53% mang mã extended hours. Mọi giao dịch trong cả ba nhóm đều là giao dịch thực ở mức giá thực. Tuy nhiên, tất cả đều không được phép thiết lập mức cao và mức thấp.

Một giao dịch không nâng mức cao

Bảng tiếp theo lấy cùng phiên AAPL cố định, chia khung giờ giao dịch thông thường từ 9:30 sáng đến 4:00 chiều thành các khoảng 15 phút và vẽ hai mức cao cho từng khoảng. Một đường lấy mức giá cao nhất của mọi giao dịch. Đường còn lại lấy mức giá cao nhất trong số các giao dịch có điều kiện cho phép thiết lập mức cao.

Truy vấnHai phiên bản của mức cao nhất cùng một phiên AAPL, theo từng 15 phút
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Phiên mở cửa tại 09:30, với mức cao trên tape là $302.07, trong khi mức cao đủ điều kiện là $302.07, và kéo dài 26 khoảng cho đến lúc đóng cửa. Đường đủ điều kiện không thể nằm cao hơn đường tape, vì các giao dịch đủ điều kiện chỉ là một tập con của tất cả giao dịch. Khi hai đường trùng nhau, mọi giao dịch trong 15 phút đó đều được phép thiết lập mức cao. Khi đường phía trên tách khỏi đường còn lại, ít nhất một giao dịch trong khoảng thời gian đó được thực hiện ở mức cao hơn mức giá cao nhất đủ điều kiện. Không biểu đồ nào áp dụng đúng các quy tắc về điều kiện được tính có thể hiển thị giao dịch đó như một mức cao hợp lệ.

Khoảng chênh này là câu trả lời chính xác cho sự khác biệt. Nguồn lấy giá cao nhất của mọi giao dịch sẽ báo cáo một mức cao. Nguồn áp dụng các cờ xác định điều kiện được tính sẽ báo cáo một mức cao khác. Nguồn đồng thời loại bỏ các phiên premarket và sau giờ đóng cửa sẽ báo cáo mức cao thứ ba. Cả ba đều đọc cùng một tape.

Lớp xác định điều kiện được tính đáng tin cậy đến đâu?

Không cao. Các cờ này là dữ liệu tham chiếu, và dữ liệu tham chiếu có thể được điều chỉnh. Một nhà cung cấp market data thương mại từng cập nhật từ điển điều kiện của chính mình, qua đó phân loại lại điều kiện đủ để thiết lập giá mở cửa chính thức và giá đóng cửa chính thức. Không có giao dịch nào thay đổi. Tape của mọi ngày bị ảnh hưởng vẫn giống hệt trước và sau khi cập nhật. Chỉ một cờ trong lookup table thay đổi. Cùng với đó, giá mở cửa và giá đóng cửa chính thức mà mọi biểu đồ và backtest sử dụng từ từ điển này đã được điều chỉnh.

Hãy xem OHLC của một nhà cung cấp là một cách đọc tape, không phải sự thật tuyệt đối về tape. Khi hai nguồn không thống nhất, hãy kiểm tra bộ quy tắc xác định điều kiện được tính mà mỗi nguồn áp dụng. Delayed and consolidated quote feeds tạo thêm một phiên bản khác của cùng vấn đề, nhưng liên quan đến thời điểm thay vì điều kiện được tính.

Danh sách mã điều kiện giao dịch chính thức nằm ở đâu?

Các tape hoạt động theo hai kế hoạch của hệ thống thị trường quốc gia: CTA Plan dành cho chứng khoán niêm yết trên NYSE và UTP Plan dành cho chứng khoán niêm yết trên Nasdaq. Mỗi kế hoạch công bố đặc tả sale condition cho tape do mình quản lý. Đây là các tài liệu có tính thẩm quyền. Mọi dữ liệu downstream, bao gồm các id đứng sau những bảng trên, đều là cách một nhà cung cấp ánh xạ các đặc tả đó vào hệ thống đánh số riêng. Vì vậy, code id của một nhà cung cấp không nhất thiết có cùng ý nghĩa tại nhà cung cấp khác. Hãy học các nhóm điều kiện thay vì học các con số. Các nhóm đã ổn định trong nhiều năm. Các con số chỉ là lookup table, và lookup table có thể được chỉnh sửa.

Ghi chú dữ liệu

Các nhóm điều kiện trong những bảng trên được xây dựng trực tiếp từ từ điển, không dựa trên các id được hardcode. Mỗi nhóm là kết quả so khớp tên trong nhóm sale condition, gồm odd lot, form T và extended trading hours, out of sequence, prior reference price, derivatively priced, average price, price variation và seller. Mở SQL bên dưới mỗi bảng để xem chính xác các mẫu được sử dụng. Các mã không loại trừ lẫn nhau. Một giao dịch có thể mang nhiều mã, nên tỷ lệ của các nhóm có thể chồng lấn và không cộng lại thành toàn bộ phiên. Cả hai bảng AAPL và bảng năm cổ phiếu đều bao phủ một phiên cố định trong tháng 6/2026, được ghim trong SQL. Vì vậy, không có nội dung nào trên trang này thay đổi khi xuất hiện các phiên mới.

Câu hỏi thường gặp

Mã điều kiện giao dịch là gì?

Đó là nhãn gắn vào báo cáo giao dịch trên consolidated tape để mô tả loại báo cáo, chẳng hạn báo cáo trễ, định giá phái sinh, odd lot hoặc extended hours. Mỗi mã đi kèm các cờ cho biết giao dịch đó có được phép cập nhật giá gần nhất, mức cao và thấp, giá mở cửa, giá đóng cửa và consolidated volume hay không.

Vì sao hai website hiển thị mức cao trong ngày khác nhau cho cùng một cổ phiếu?

Mỗi website áp dụng một bộ quy tắc khác nhau để xác định giao dịch nào đủ điều kiện, dù cùng sử dụng các giao dịch trên tape. Một nguồn có thể lấy mức giá cao nhất của mọi giao dịch được báo cáo. Nguồn khác có thể loại bỏ các giao dịch có mã điều kiện không cho phép thiết lập mức cao. Nguồn thứ ba có thể đồng thời loại bỏ các phiên premarket và sau giờ đóng cửa. Tất cả đều đang đọc cùng một tape.

Giao dịch odd lot có được tính vào volume không?

Có. Odd lot, tức giao dịch dưới 100 cổ phiếu, được tính vào consolidated volume nhưng không đủ điều kiện cập nhật giá gần nhất, mức cao và mức thấp trong ngày. Odd lot hoàn toàn không được báo cáo lên consolidated tape trước cuối năm 2013. Vì vậy, các so sánh volume dài hạn phải tính đến sự thay đổi định nghĩa tại thời điểm đó.

Giao dịch after-hours có được tính vào mức cao và mức thấp trong ngày không?

Không tính vào mức cao và mức thấp của phiên thông thường. Các giao dịch premarket và sau giờ đóng cửa mang điều kiện extended hours hoặc form T. Điều kiện này loại chúng khỏi giá mở cửa, mức cao, mức thấp và giá đóng cửa của phiên thông thường, nhưng chúng vẫn được tính vào consolidated volume trong ngày.

Danh sách chính thức về các mã sale condition nằm ở đâu?

CTA Plan và UTP Plan công bố đặc tả sale condition cho các tape do mình quản lý. Đây là các tài liệu có tính thẩm quyền. Các vendor feed đánh số lại các điều kiện trong hệ thống id riêng. Vì vậy, một mã số của nhà cung cấp này không nhất thiết tương ứng với cùng mã số tại nhà cung cấp khác.


Mọi bảng trên trang đều đi kèm SQL đã tạo ra bảng đó. Mở một bảng, thay ticker hoặc ngày, rồi chạy cùng phân tích điều kiện cho bất kỳ phiên nào trên terminal Strasmore.

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