Vì sao lệnh quyền chọn của bạn không được khớp
Tìm hiểu vì sao lệnh quyền chọn không khớp: quy tắc ưu tiên của sở giao dịch, phân bổ pro-rata, khối lượng chờ đổi giá và định tuyến theo giá ròng cho spread.
Việc lệnh quyền chọn của bạn không được khớp thường liên quan đến những cơ chế mà màn hình giao dịch bán lẻ không hiển thị: vị trí của lệnh trong hàng đợi phân bổ của sở giao dịch, khối lượng bạn tham gia có còn ở đó hay không, độ rộng thực tế của thị trường và liệu giá ròng của lệnh nhiều chân có thể thực hiện được hay không. Báo giá hiển thị chỉ là ảnh chụp tại một thời điểm về mức giá mà ai đó sẵn sàng giao dịch. Đặt lệnh ở mức giá đó giúp lệnh vào hàng. Điều đó không đưa lệnh lên đầu hàng.
Báo giá quyền chọn có phải là cam kết rằng bạn có thể giao dịch ở mức giá đó không?
Không. Báo giá là một chào giá hai chiều. Bên đăng báo giá có thể hủy hoặc điều chỉnh giá bất cứ lúc nào, còn khối lượng đi kèm chỉ áp dụng tại thời điểm đó. Với tài sản cơ sở được báo giá tích cực, một hợp đồng đơn lẻ có thể cập nhật giá bid và ask nhiều lần mỗi giây. Hướng dẫn về chênh lệch bid-ask của quyền chọn của chúng tôi giải thích ý nghĩa của hai mức giá này. Yếu tố quyết định việc khớp lệnh là mỗi phiên bản của báo giá tồn tại trong bao lâu.
Biểu đồ dưới đây đếm mọi lần cập nhật báo giá mà feed ghi nhận đối với các hợp đồng quyền chọn Apple trong một cửa sổ 30 giây cố định, bắt đầu từ 2:00:00 chiều ET ngày 17 tháng 6 năm 2026, theo từng giây.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
formatDateTime(toTimeZone(sip_timestamp, 'America/New_York'), '%H:%i:%S') AS et_time,
round(count() / 1000, 1) AS quote_updates_k,
round(count() / uniqExact(ticker), 1) AS updates_per_contract
FROM global_markets.cache_options_quotes
WHERE ticker IN
(
SELECT ticker
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = '2026-06-17'
)
AND sip_timestamp >= toDateTime('2026-06-17 18:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-17 18:00:30', 'UTC')
GROUP BY et_time
ORDER BY et_timeTrong giây đầu tiên, feed ghi nhận khoảng 0.9 nghìn lần cập nhật báo giá trên các hợp đồng đó, tương đương khoảng 1.9 báo giá được đăng lại cho mỗi hợp đồng trong một giây. Phiếu lệnh không di chuyển với tốc độ đó. Khi một cú nhấp chuột trở thành thông điệp nằm tại sở giao dịch, sổ lệnh mà nó gia nhập đã thay đổi nhiều lần.
Đặt lệnh ở mức giá tốt nhất có đưa lệnh lên đầu hàng không?
Không, nếu chỉ dựa vào yếu tố đó. Sở giao dịch cổ phiếu chủ yếu áp dụng ưu tiên theo giá và thời gian: tại cùng một mức giá, lệnh đến trước được giao dịch trước. Sở giao dịch quyền chọn bổ sung hai quy tắc. Đây là nguyên nhân khiến các lệnh chờ có thể bị mắc lại.
Lệnh của khách hàng công chúng được ưu tiên trước. Hầu hết sở giao dịch quyền chọn tại Mỹ đều ưu tiên lệnh của khách hàng công chúng hơn lệnh của market maker và nhà giao dịch chuyên nghiệp đang chờ tại cùng mức giá. Quy tắc này có lợi cho nhà giao dịch bán lẻ.
Sau ưu tiên dành cho khách hàng, việc phân bổ thường theo tỷ lệ thay vì theo thời gian. Lệnh đến được chia cho các lệnh đang chờ theo tỷ lệ với khối lượng của chúng, thường kèm một mức ưu tiên nhỏ cho bên đăng giá trước. Khối lượng, chứ không phải thời điểm đến, quyết định phần được nhận.
Kết hợp hai quy tắc này, một lệnh 1 lot nằm cạnh lệnh 500 lot được tính là một hợp đồng trong tổng số 501 hợp đồng, chứ không phải là một trong hai lệnh của hàng đợi. Một lệnh 100 lot đến sau có thể quét mức giá đó nhưng chỉ một hợp đồng được phân bổ cho lệnh nhỏ.
Biểu đồ dưới đây phân nhóm mọi giao dịch quyền chọn Apple được thực hiện trong ngày 17 tháng 6 năm 2026 theo quy mô giao dịch. Sau đó, biểu đồ so sánh tỷ trọng của từng nhóm trong tổng số giao dịch với tỷ trọng trong tổng số hợp đồng được trao tay.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH
(
SELECT count()
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
) AS day_prints,
(
SELECT sum(size)
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
) AS day_contracts
SELECT
multiIf(size = 1, '1 contract',
size <= 5, '2 to 5',
size <= 20, '6 to 20',
size <= 100, '21 to 100',
'over 100') AS size_bucket,
round(100 * count() / day_prints, 2) AS share_of_trades_pct,
round(100 * sum(size) / day_contracts, 2) AS share_of_volume_pct
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-18 00:00:00', 'UTC')
GROUP BY size_bucket
ORDER BY min(size)Các giao dịch một hợp đồng chiếm 48.48% tổng số giao dịch trong ngày và 7.83% số hợp đồng được trao tay. Nhóm over 100 có cấu trúc ngược lại: 0.44% số giao dịch nhưng chiếm 16.67% khối lượng. Trong cơ chế phân bổ theo tỷ lệ, con số thứ hai quyết định bao nhiêu phần của lệnh đến được phân bổ cho từng lệnh đang chờ. Market maker liên tục báo giá hai chiều và đồng thời quản lý tồn kho. Hướng dẫn về cách market maker kiếm tiền của chúng tôi phân tích chi tiết cơ chế này.
Tại sao lệnh quyền chọn của tôi không được khớp tại mức mid?
Mid chỉ là phép tính số học: bid cộng ask rồi chia đôi. Không ai có nghĩa vụ giao dịch tại mức đó. Hai mức giá luôn tồn tại là mức giá tự nhiên: ask nếu bạn mua và bid nếu bạn bán. Mọi mức giá nằm giữa mức tự nhiên và mid đều là một cuộc thương lượng. Giao dịch chỉ hoàn tất khi mô hình định giá của phía đối diện định giá hợp đồng về phía của bạn so với midpoint, hoặc khi một lệnh công chúng thứ hai xuất hiện và muốn thực hiện giao dịch ngược chiều.
Phạm vi thương lượng phụ thuộc vào độ rộng của thị trường. Độ rộng này thay đổi rất lớn theo giá của hợp đồng. Biểu đồ dưới đây lấy cùng cửa sổ 30 giây, nhóm mọi báo giá quyền chọn Apple theo giá hợp đồng và báo cáo spread được báo giá trung vị theo cent, đồng thời thể hiện spread đó dưới dạng tỷ lệ phần trăm của mid.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
price_bucket,
round(quantileExact(0.5)(spread) * 100, 1) AS median_spread_cents,
round(quantileExact(0.5)(100 * spread / mid), 1) AS spread_pct_of_mid
FROM
(
SELECT
toFloat64(ask_price) - toFloat64(bid_price) AS spread,
(toFloat64(ask_price) + toFloat64(bid_price)) / 2 AS mid,
multiIf(mid < 0.50, 'under $0.50',
mid < 2.00, '$0.50 to $2',
mid < 5.00, '$2 to $5',
mid < 15.00, '$5 to $15',
'$15 and up') AS price_bucket,
multiIf(mid < 0.50, 1, mid < 2.00, 2, mid < 5.00, 3, mid < 15.00, 4, 5) AS bucket_order
FROM global_markets.cache_options_quotes
WHERE ticker IN
(
SELECT ticker
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = '2026-06-17'
)
AND sip_timestamp >= toDateTime('2026-06-17 18:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-17 18:00:30', 'UTC')
AND bid_price > 0
AND ask_price > bid_price
)
GROUP BY price_bucket
ORDER BY min(bucket_order)Các hợp đồng trong nhóm under $0.50 có spread trung vị 17 cent, tương đương 75% của mid. Các hợp đồng trong nhóm $15 and up có spread 170 cent, tương đương 3.8% của mid. Tính theo cent, hợp đồng đắt hơn có báo giá rộng hơn. Nhưng tính theo tỷ lệ phần trăm, hợp đồng rẻ hơn có thị trường rộng hơn đáng kể. Lệnh chờ tại midpoint của hợp đồng đó đang yêu cầu đối tác từ bỏ một phần lớn spread. Thanh khoản và biến động tác động đến độ rộng theo những hướng khác nhau. Hai hợp đồng trên cùng một tài sản cơ sở cũng có thể vận động hoàn toàn khác nhau.
Lệnh thị trường so với lệnh giới hạn loại bỏ câu hỏi về giá và thay bằng một câu hỏi khác. Lệnh thị trường giao dịch với bất kỳ thanh khoản nào đang có trong sổ lệnh tại thời điểm đó. Với một chuỗi quyền chọn có thanh khoản thấp, mức giá này có thể cách vài tick so với báo giá cuối cùng hiển thị trên màn hình.
Tại sao spread không được khớp dù cả hai chân đều có vẻ có thể thực hiện?
Lệnh nhiều chân không nằm trong hai sổ lệnh của từng chân riêng lẻ. Lệnh được chuyển vào sổ lệnh phức hợp và được khớp như một gói duy nhất, dựa trên giá ròng. Sở giao dịch sẽ khớp lệnh với một lệnh phức hợp khác hoặc với các sổ lệnh của từng chân khi giá kết hợp của chúng tốt hơn giá ròng của bạn. Lệnh chỉ được khớp khi toàn bộ gói có giá phù hợp.
Giả sử một call spread hai chân. Chân mua có bid $1.20 và ask $1.35. Chân bán có bid $0.60 và ask $0.72. Mua gói theo các mức giá tự nhiên sẽ tốn $1.35 trừ $0.60, tương đương khoản ghi nợ $0.75. Bán theo các mức giá tự nhiên mang về $1.20 trừ $0.72, tương đương khoản tín dụng $0.48. Thị trường ròng của gói là bid $0.48 và ask $0.75, với midpoint $0.615. Việc theo dõi riêng từng chân không cho biết mức $0.62 có thể thực hiện hay không. Sổ lệnh kết hợp có thị trường hai chiều riêng và các lệnh chờ riêng.
Có hai hệ quả. Một chân giao dịch tại mức giá của bạn trên màn hình đơn chân không khiến spread được khớp. Ngay từ đầu, lệnh của bạn chưa từng nằm trong sổ lệnh đó. Một spread được định giá theo từng chân thay vì theo giá ròng đang được đặt giá dựa trên một sổ lệnh không tồn tại.
Tại sao lệnh không được khớp ở strike có khối lượng bằng zero?
Không có gì bị hỏng. Phần lớn strike được niêm yết không giao dịch trong hầu hết các ngày. Một chain liệt kê mọi strike mà sở giao dịch đã mở. Phần lớn các strike chỉ có báo giá nhưng không có giao dịch, đôi khi kéo dài nhiều tuần. Volume đếm số hợp đồng đã đổi chủ trong ngày. Open interest đếm số vị thế vẫn còn tồn tại. Sự khác biệt giữa hai chỉ số này được giải thích trong Bài giải thích về volume và open interest của quyền chọn.
Biểu đồ dưới đây đo mức độ mỏng của các strike ở vùng biên. Biểu đồ lấy mọi hợp đồng Apple còn 20 đến 45 ngày trước khi đáo hạn trong tháng 5 và tháng 6 năm 2026, nhóm theo khoảng cách giữa strike và giá tài sản cơ sở trong ngày đó, rồi báo cáo volume hằng ngày trung vị cùng tỷ trọng số ngày của hợp đồng có giao dịch dưới 10 hợp đồng.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
moneyness_bucket,
round(quantileExact(0.5)(toFloat64(volume)), 0) AS median_daily_volume,
round(100 * countIf(volume < 10) / count(), 1) AS share_under_10_lots_pct
FROM
(
SELECT
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS gap,
multiIf(gap < 0.02, '0% to 2% from spot',
gap < 0.05, '2% to 5% from spot',
gap < 0.10, '5% to 10% from spot',
gap < 0.20, '10% to 20% from spot',
'more than 20% from spot') AS moneyness_bucket,
multiIf(gap < 0.02, 1, gap < 0.05, 2, gap < 0.10, 3, gap < 0.20, 4, 5) AS bucket_order,
volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= '2026-05-01'
AND date < '2026-07-01'
AND days_to_expiry BETWEEN 20 AND 45
AND underlying_close > 0
)
GROUP BY moneyness_bucket
ORDER BY min(bucket_order)Các hợp đồng 0% to 2% from spot có volume hằng ngày trung vị 354 hợp đồng, trong đó 2% số ngày của hợp đồng có giao dịch dưới 10 hợp đồng. Các hợp đồng more than 20% from spot ghi nhận trung vị 6 hợp đồng mỗi ngày. Tại nhóm này, 55.4% số ngày của hợp đồng có giao dịch dưới 10 hợp đồng. Lệnh chờ tại một trong các strike đó phải chờ dòng lệnh không xuất hiện. Đối tác duy nhất luôn có mặt là market maker đã đăng báo giá cho strike ngay từ đầu.
Cơ chế này thay đổi cách đặt lệnh như thế nào?
- Spread được định giá theo giá ròng. Sổ lệnh phức hợp khớp các gói lệnh, còn giá của một chân riêng lẻ không có vị trí chờ cố định trong sổ đó.
- Mid là một mức neo tham chiếu. Hai mức giá luôn có thể giao dịch trong một thị trường rộng là các mức giá tự nhiên: ask khi mua và bid khi bán.
- Khối lượng quyết định tỷ lệ được nhận khi khớp theo tỷ lệ. Một lệnh 1 lot nằm cạnh các lệnh lớn hơn nhiều chỉ nhận một phần tương ứng trong bất kỳ dòng lệnh nào đến.
- Strike ít giao dịch trước hết là vấn đề về báo giá, rồi mới là vấn đề về lệnh. Không có dòng lệnh nào đến để khớp.
Câu hỏi thường gặp
Tại sao lệnh giới hạn quyền chọn của tôi không được khớp dù đặt tại bid?
Đặt lệnh tại bid đưa lệnh của bạn vào hàng đợi ở mức giá đó. Sở giao dịch quyền chọn phân bổ khớp lệnh dựa trên trạng thái khách hàng và khối lượng, chứ không hoàn toàn dựa trên thời điểm đến. Một lệnh nhỏ nằm cạnh các lệnh lớn hơn nhiều chỉ nhận một phần tương ứng trong bất kỳ giao dịch nào. Phần được phân bổ có thể bị làm tròn xuống zero trong một giao dịch có quy mô vừa phải.
Sở giao dịch quyền chọn có khớp lệnh theo thứ tự lệnh đến không?
Phần lớn là không. Lệnh của khách hàng công chúng được ưu tiên hơn lệnh của market maker và nhà giao dịch chuyên nghiệp tại cùng mức giá. Phần khối lượng còn lại thường được phân bổ theo tỷ lệ, tương ứng với khối lượng của từng lệnh đang chờ. Một số sở giao dịch bổ sung ưu tiên cho bên đăng giá trước.
Trả mức giá tự nhiên khi đặt lệnh quyền chọn nghĩa là gì?
Mức giá tự nhiên là mức giá đã hiển thị ở phía bạn muốn giao dịch: ask khi bạn mua và bid khi bạn bán. Lệnh đặt tại mức giá tự nhiên có thể thực hiện ngay với báo giá hiện tại. Lệnh đặt tại mid phải chờ phía đối diện cải thiện giá.
Quyền chọn có volume bằng zero không bao giờ được khớp có phải là bình thường không?
Có. Phần lớn strike được niêm yết không giao dịch trong hầu hết các ngày. Lệnh chờ tại một trong các strike đó phải cạnh tranh để nhận dòng lệnh không xuất hiện. Báo giá hiển thị tại đó thường là nghĩa vụ của market maker. Việc khớp lệnh phụ thuộc vào việc market maker có muốn giao dịch tại mức giá đó vào thời điểm cụ thể hay không.
Cách xây dựng các biểu đồ này
Hai biểu đồ về báo giá sử dụng một cửa sổ 30 giây cố định, từ 2:00:00 chiều đến 2:00:30 chiều ET ngày 17 tháng 6 năm 2026. Dữ liệu chỉ bao gồm các hợp đồng quyền chọn Apple có bản ghi greeks hằng ngày vào ngày đó. Việc cố định cửa sổ giúp các con số ổn định mỗi khi bài viết được tạo lại. Phạm vi strike bao phủ tháng 5 và tháng 6 năm 2026, đồng thời cố ý giữ lại các hợp đồng hoàn toàn không có volume. Tần suất một strike được niêm yết nhưng không giao dịch chính là điều biểu đồ này đo lường. Timestamp được lưu theo UTC và được chuyển sang giờ miền Đông bên trong từng truy vấn.
Mỗi biểu đồ trên đều có câu lệnh SQL đầy đủ ở bên dưới. Để thực hiện cùng phép đo trên một hợp đồng bạn đang theo dõi, hãy đặt câu hỏi bằng tiếng Anh thông thường trên terminal Strasmore.