เปรียบเทียบ Price-time priority กับ Pro-rata
อธิบายความแตกต่างของกลไกการจับคู่คำสั่งซื้อขายในตลาดหลักทรัพย์ ระหว่างระบบ Price-time priority และ Pro-rata โดยวิเคราะห์ผลลัพธ์ผ่านข้อมูลจริงในสมุดคำสั่งซื้อขายเดียวกัน
Price-time priority และ pro-rata คือกฎสองข้อที่ตลาดหลักทรัพย์ใช้ตัดสินว่าคำสั่งซื้อขายที่รออยู่ในระบบ (resting order) รายการใดจะได้รับการจับคู่เมื่อมีหลายคำสั่งเสนอราคาเดียวกัน ภายใต้ Price-time priority หรือที่เรียกว่า FIFO คำสั่งที่เข้ามาถึงก่อนจะได้รับการจับคู่ก่อนจนครบจำนวนที่ต้องการ ส่วนภายใต้ pro-rata คำสั่งซื้อขายทุกรายการที่ราคาเดียวกันจะได้รับส่วนแบ่งตามสัดส่วนของขนาดคำสั่ง โดยเวลาที่เข้ามาถึงแทบไม่มีผล ทั้งที่ใช้สมุดคำสั่ง (book) เดียวกันและเป็นการซื้อขายเดียวกัน แต่ผลลัพธ์การจับคู่กลับแตกต่างกันอย่างสิ้นเชิง
การเปรียบเทียบ Price-time priority กับ pro-rata ในสมุดคำสั่งซื้อขาย
สมมติให้ระดับราคาหนึ่งคงที่ มีคำสั่งซื้อ (bid) 5 รายการที่ราคา 100.00 โดยเรียงลำดับการเข้ามาดังนี้: 10 ล็อต, 200 ล็อต, 5 ล็อต, 50 ล็อต และ 35 ล็อต รวมเป็น 300 ล็อตที่ราคาเดียวกัน จากนั้นมีผู้ขายส่งคำสั่งซื้อขายแบบ market order เข้ามา 100 ล็อต ราคาไม่สามารถตัดสินได้ว่าคำสั่งใดควรได้สิทธิก่อน อัลกอริทึมการจับคู่ของระบบจึงเป็นตัวตัดสิน ซึ่งอัลกอริทึมนี้เป็นกฎของแต่ละตลาด ไม่ใช่กฎธรรมชาติ
นี่คือวิธีการแบ่งคำสั่งขาย 100 ล็อตภายใต้ 3 รูปแบบ โดยสมุดคำสั่งและผลการจับคู่เป็นตัวอย่างสมมติ:
- Bid 1, 10 ล็อต, คิวแรก: 10 ล็อตภายใต้ FIFO, 4 ล็อตภายใต้ pro-rata, 10 ล็อตภายใต้แบบผสม
- Bid 2, 200 ล็อต, คิวที่สอง: 90 ล็อตภายใต้ FIFO, 67 ล็อตภายใต้ pro-rata, 63 ล็อตภายใต้แบบผสม
- Bid 3, 5 ล็อต, คิวที่สาม: ไม่ได้รับเลยภายใต้ทั้ง 3 รูปแบบ
- Bid 4, 50 ล็อต, คิวที่สี่: ไม่ได้รับเลยภายใต้ FIFO, 17 ล็อตภายใต้ pro-rata, 16 ล็อตภายใต้แบบผสม
- Bid 5, 35 ล็อต, คิวที่ห้า: ไม่ได้รับเลยภายใต้ FIFO, 12 ล็อตภายใต้ pro-rata, 11 ล็อตภายใต้แบบผสม
Bid 1 เป็นคำสั่งขนาดเล็กที่เข้ามาเป็นลำดับแรก FIFO จัดสรรให้เต็มจำนวนก่อนคำสั่งขนาด 200 ล็อตที่อาจพลาดไปเพียงเสี้ยววินาที ส่วน pro-rata จัดสรรให้ 4 ล็อต โดยคำนวณจากสัดส่วน 10 จาก 300 ล็อต ซึ่งคิดเป็น 3.33 ล็อตต่อการซื้อขาย 100 ล็อต ปัดเศษลงเหลือ 3 และรับเศษที่เหลืออีก 1 ล็อตตามลำดับเวลา ส่วน Bid 4 และ 5 เป็นภาพสะท้อนกลับกัน คือไม่ได้อะไรเลยภายใต้ FIFO แต่ได้รับจัดสรรภายใต้ pro-rata
Bid 3 ควรค่าแก่การสังเกต สัดส่วนที่ควรได้รับคือ 1.67 ล็อต ปัดเศษลงเหลือ 1 ตลาดที่ใช้ pro-rata มักกำหนดการจัดสรรขั้นต่ำไว้ที่ 1 หรือ 2 ล็อต ดังนั้นคำสั่งที่มีส่วนแบ่งต่ำกว่าเกณฑ์จะไม่ได้รับอะไรเลย หากกำหนดขั้นต่ำไว้ที่ 2 ล็อต Bid 3 จะได้รับศูนย์จากทั้งสองรูปแบบที่เป็นสัดส่วน คำสั่งขนาดเล็กในคิวแบบ pro-rata จึงแทบจะมองไม่เห็น
สิ่งที่รูปแบบผสมเพิ่มเข้ามา: การแบ่งส่วนจากยอดบน
Pro-rata แบบบริสุทธิ์นั้นพบได้ยาก คอลัมน์ที่สามคือแบบผสมระหว่าง Price-time และ pro-rata โดยจะมีคำสั่งที่กำหนดไว้หนึ่งรายการได้รับส่วนแบ่งคงที่ก่อนที่จะนำส่วนที่เหลือไปแบ่งกัน Bid 1 ซึ่งเป็นคิวแรกจะได้รับสูงสุดร้อยละ 40 ของคำสั่งที่เข้ามา โดยจำกัดไว้ไม่เกิน 10 ล็อตตามขนาดคำสั่งของตน ส่วนอีก 90 ล็อตที่เหลือจะถูกแบ่งตามสัดส่วนให้คำสั่งอื่นอีก 4 รายการ โดยใช้การปัดเศษและเกณฑ์ขั้นต่ำเดียวกัน ตลาดมักกำหนดส่วนแบ่งนี้ให้กับคำสั่ง TOP ซึ่งหมายถึงคำสั่งที่เสนอราคาที่ดีที่สุดใหม่ โดยมักจำกัดขนาดไว้ไม่มาก ภายใต้ pro-rata แบบบริสุทธิ์ การเสนอราคาที่ดีขึ้นไม่ได้รับผลตอบแทนพิเศษใดๆ จึงไม่มีใครอยากเป็นเทรดเดอร์ที่ทำให้ตลาดตึงตัว การให้ส่วนแบ่งคงที่แก่ผู้เสนอราคาจึงช่วยฟื้นฟูแรงจูงใจแบบ FIFO กลับมาบางส่วน
ภายใต้ FIFO ตำแหน่งในคิวคือสินทรัพย์
ในสมุดคำสั่งแบบ Price-time คำถามไม่ใช่ว่าคุณเสนอราคาถูกหรือไม่ แต่คือมีกี่หุ้นที่อยู่ข้างหน้าคุณที่ราคานั้น และคิวข้างหน้ากำลังถูกจับคู่เร็วแค่ไหน การจับคู่จะเกิดขึ้นทีละส่วนเล็กๆ
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
ticker AS symbol,
round(sum(volume) / sum(transactions), 1) AS avg_shares_per_print
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ', 'T', 'F')
AND date >= '2026-06-01'
AND date < '2026-07-01'
GROUP BY ticker
HAVING sum(transactions) > 0
ORDER BY avg_shares_per_print DESCในบรรดาชื่อหุ้น 8 รายการ F มีขนาดการซื้อขายเฉลี่ยใหญ่ที่สุดที่ 336.5 หุ้น และ MSFT มีขนาดเล็กที่สุดที่ 53.2 หุ้น ด้วยขนาดดังกล่าว คำสั่ง limit order ที่รออยู่ 500 หุ้นจะถูกจับคู่โดยคู่สัญญาขนาดเล็กจำนวนมาก และทุกหุ้นที่อยู่ข้างหน้าจะถูกจับคู่ไปก่อน
ความเร็วมีค่า เพราะการส่งคำสั่งถึงก่อนเพียงหนึ่งข้อความจะทำให้คุณอยู่หน้าทุกคนที่เสนอราคาเดียวกัน การยกเลิกและส่งคำสั่งใหม่มีต้นทุนสูง: ในตลาดแบบ Price-time แทบทุกแห่ง การเปลี่ยนราคาหรือเพิ่มขนาดคำสั่งจะทำให้เสียลำดับเวลาและถูกส่งไปอยู่ท้ายคิว การลดขนาดคำสั่งมักจะยังคงลำดับความสำคัญเดิมไว้ เทรดเดอร์จึงถือว่าตำแหน่งในคิวเป็นสินค้าคงคลังด้วยเหตุผลนี้
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
ticker AS symbol,
round(count() / 600.0, 1) AS quote_updates_per_second,
round(avg(toFloat64(ask_price) - toFloat64(bid_price))
/ avg(toFloat64(bid_price)) * 10000, 2) AS avg_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO')
AND sip_timestamp >= '2026-06-17 14:00:00'
AND sip_timestamp < '2026-06-17 14:10:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY quote_updates_per_second DESCตำแหน่งในคิวเป็นสิ่งที่เสื่อมค่าได้ เพราะระดับราคานั้นอาจคงอยู่ไม่นาน SPY ปรับปรุงราคาเสนอซื้อขายของตน 296.4 ครั้งต่อวินาทีในช่วงเวลาสิบนาทีนั้น เทียบกับ 28.8 ครั้งสำหรับ KO ค่าสเปรดเสนอซื้อขายเฉลี่ยอยู่ที่ 0.32 basis points โดยหนึ่ง basis point คือหนึ่งในร้อยของหนึ่งเปอร์เซ็นต์ มูลค่าของคิวที่ราคาคงอยู่สองวินาทีก็มีค่าเพียงสองวินาที ความผันผวนนี้เป็นกลไกเบื้องหลัง วิธีที่ผู้ดูแลสภาพคล่องทำกำไร
ภายใต้ pro-rata ขนาดคือสินทรัพย์
เมื่อสลับกฎ แรงจูงใจก็จะกลับด้าน หากการจับคู่ของคุณเป็นสัดส่วนกับขนาดที่แสดงไว้ วิธีที่จะได้รับมากขึ้นคือการแสดงขนาดให้มากขึ้น เทรดเดอร์ฟิวเจอร์สที่ต้องการ 20 ล็อต โดยคาดว่าจะได้รับส่วนแบ่งประมาณหนึ่งในสาม จึงเสนอราคาที่ 60 ล็อต ทุกคนที่อยู่ในระดับเดียวกันก็คำนวณแบบเดียวกัน ระดับราคานั้นจึงขยายตัวขึ้น และสัดส่วนของแต่ละคนก็ลดลงอีก ความลึกที่แสดงบนสมุดคำสั่งแบบ pro-rata จึงเกินจริงจากความต้องการที่แท้จริง การเสนอราคาเกินจริงเป็นภาวะสมดุลของกฎนี้ไม่ใช่กลโกง และมีต้นทุนที่แท้จริง: ผู้ขายรายใหญ่สามารถกวาดทั้งระดับราคา และทุกคำสั่งที่เสนอเกินจริงจะถูกจับคู่พร้อมกันหมด
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
multiIf(size = 1, '1 contract',
size <= 5, '2 to 5 contracts',
size <= 25, '6 to 25 contracts',
size <= 100, '26 to 100 contracts',
'over 100 contracts') AS size_bucket,
round(100.0 * count() / sum(count()) OVER (), 1) AS share_pct
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= '2026-06-17 13:30:00'
AND sip_timestamp < '2026-06-17 20:00:00'
GROUP BY size_bucket
ORDER BY share_pct DESCสมุดคำสั่งออปชันเป็นที่ที่เทรดเดอร์รายย่อยส่วนใหญ่พบกับกฎการจัดสรรที่ไม่ใช่ FIFO แบบปกติ ตลาดออปชันหลายแห่งให้คำสั่งลูกค้าอยู่ก่อนคำสั่งอื่นทั้งหมด จากนั้นจึงใช้ pro-rata หรือ parity กับส่วนที่เหลือ ขนาดคำสั่งในตลาดนี้มีขนาดเล็ก และกฎการจัดสรรขั้นต่ำส่งผลกระทบมากที่สุดต่อคำสั่งขนาดเล็ก 48.5 เปอร์เซ็นต์ของรายการซื้อขายออปชัน AAPL ในรอบนั้นอยู่ในช่วง 1 contract จากทั้งหมด 5 ช่วง เมื่อเทียบกับขนาดที่รออยู่ในระบบซึ่งอาจสูงถึงหลายพันสัญญาที่ราคาใช้สิทธิหนึ่งๆ สัดส่วนการจัดสรรสำหรับหนึ่งสัญญาจะถูกปัดเศษเป็นศูนย์ ลำดับความสำคัญของลูกค้าและการจัดสรรขั้นต่ำคือสิ่งที่ทำให้คำสั่งขนาดเล็กได้รับการจับคู่ และนั่นเป็นส่วนสำคัญของ เหตุผลที่คำสั่งออปชันไม่ได้รับการจับคู่ ในขณะที่ราคาของคุณยังคงซื้อขายอยู่บนหน้าจอ
Price-broker-time และสถานที่ที่ใช้แต่ละรูปแบบ
รูปแบบที่สามอยู่กึ่งกลางระหว่างสองแบบแรก ภายใต้ Price-broker-time หรือที่มักเรียกว่า parity ระบบจะแบ่งการซื้อขายระหว่างโบรกเกอร์ที่เสนอราคาที่ราคานั้น จากนั้นจึงใช้ลำดับความสำคัญด้านเวลาภายในคำสั่งของโบรกเกอร์แต่ละราย NYSE ใช้รูปแบบ parity แบบนี้มานาน โบรกเกอร์ที่มีคำสั่งเดียวที่ราคานั้นอาจได้รับส่วนแบ่งเท่ากับโบรกเกอร์ที่มีสิบคำสั่ง ดังนั้นการที่โบรกเกอร์ของคุณส่งคำสั่งไปที่ใดจึงมีมูลค่าที่รูปแบบบริสุทธิ์ทั้งสองแบบไม่ได้คำนวณไว้
โดยสรุป: ตลาดหุ้นสหรัฐฯ ใช้ Price-time โดยมีลำดับความสำคัญในการแสดงผลและบางแห่งมีการใช้ parity เสริม ตลาดออปชันสหรัฐฯ ส่วนใหญ่ใช้ Price-time โดยให้ลำดับความสำคัญกับลูกค้าก่อน และหลายแห่งเพิ่ม pro-rata หรือ parity ไว้ด้านล่าง ฟิวเจอร์สดัชนีหุ้นโดยทั่วไปใช้ FIFO ในขณะที่ผลิตภัณฑ์อัตราดอกเบี้ยของ CME หลายรายการใช้ pro-rata หรือแบบผสมที่มีการจัดสรร TOP อัลกอริทึมเหล่านี้ถูกกำหนดตามผลิตภัณฑ์และปรับปรุงเมื่อเวลาผ่านไป ดังนั้นกฎสำหรับสัญญาที่คุณซื้อขายจึงควรตรวจสอบในกฎระเบียบปัจจุบัน
ขนาดที่ซ่อนอยู่และ iceberg จะเสียลำดับความสำคัญในการแสดงผล
ทุกรูปแบบข้างต้นจัดสรรขนาดที่แสดงไว้ก่อน คำสั่งที่ซ่อนอยู่หรือส่วนที่เหลือที่ไม่ได้แสดงของ iceberg order จะอยู่หลังคำสั่งที่แสดงไว้ทั้งหมดที่ราคาเดียวกันในตลาดส่วนใหญ่ ไม่ว่าจะเข้ามาเร็วแค่ไหนก็ตาม คำสั่ง iceberg ที่แสดง 100 จาก 5,000 หุ้น จะจัดคิว 100 หุ้นที่มองเห็นได้ตามเวลา จากนั้นจะปรับปรุงส่วนถัดไปด้วยลำดับเวลาใหม่ที่ท้ายคิว การแสดงขนาดคำสั่งคือการซื้อลำดับความสำคัญ และการปกปิดคำสั่งต้องแลกมาด้วยตำแหน่งในคิว
เหตุผลที่คำสั่งที่ตลาดต้องการที่ NBBO อาจยังพลาดการจับคู่
NBBO คือราคาเสนอซื้อและเสนอขายที่ดีที่สุดในทุกตลาดของสหรัฐฯ และเป็นภาพรวมที่อาจล้าสมัยไปแล้วเมื่อคำสั่งของคุณไปถึง
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
multiIf(size < 100, 'under 100 shares',
size = 100, 'exactly 100 shares',
size <= 500, '101 to 500 shares',
size <= 1000, '501 to 1,000 shares',
'over 1,000 shares') AS size_bucket,
round(100.0 * count() / sum(count()) OVER (), 1) AS share_pct
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-17 13:30:00'
AND sip_timestamp < '2026-06-17 20:00:00'
GROUP BY size_bucket
ORDER BY share_pct DESCรายการซื้อขายเดียวที่พบบ่อยที่สุดสำหรับ AAPL ในรอบนั้นคือ under 100 shares ที่ 88.9 เปอร์เซ็นต์ของรายการซื้อขายใน 5 ช่วงขนาด ขนาดที่แสดงไว้ที่ราคาที่ดีที่สุดมักอยู่ที่ไม่กี่ร้อยหุ้น คำสั่งที่ใหญ่กว่าขนาดที่แสดงจะจับคู่กับส่วนที่มีอยู่ จากนั้นจะขยับไปที่ราคาถัดไปหรือรออยู่ในระบบ ขึ้นอยู่กับ ประเภทคำสั่งที่คุณส่ง คำสั่ง limit ที่ราคาตรงกับ NBBO ซึ่งมาถึงหลังจากระดับราคานั้นถูกจับคู่ไปหมดแล้ว จะไปต่อท้ายคิวและรอ
หมายเหตุข้อมูล
สมุดคำสั่งซื้อขายที่ด้านบนเป็นตัวอย่างสมมติ ขนาดคำสั่งซื้อ, คำสั่งขาย 100 ล็อต, เกณฑ์ขั้นต่ำ 2 ล็อต และส่วนแบ่ง TOP 40 เปอร์เซ็นต์ ถูกเลือกมาเพื่อให้เห็นความแตกต่างของการจัดสรรได้ชัดเจน และไม่ได้อ้างอิงถึงพารามิเตอร์ของตลาดใดๆ ทุกตารางถูกตรึงไว้กับช่วงเวลาที่กำหนด: มิถุนายน 2026 สำหรับขนาดการซื้อขายเฉลี่ย และหนึ่งรอบการซื้อขายในวันที่ 17 มิถุนายน 2026 สำหรับอีกสามตารางที่เหลือ ขนาดคำสั่งเป็นไปตามที่รายงานใน consolidated tape
คำถามที่พบบ่อย
Price-time priority คืออะไร?
Price-time priority จัดลำดับคำสั่งที่รออยู่ในระบบโดยพิจารณาจากราคาเป็นอันดับแรก ตามด้วยเวลาที่เข้ามาถึง ในบรรดาคำสั่งที่ราคาเดียวกัน คำสั่งที่มีลำดับเวลาเร็วที่สุดจะได้รับการจับคู่จนครบก่อนที่คำสั่งถัดไปจะได้รับส่วนแบ่ง ตลาดหุ้นสหรัฐฯ ใช้กฎนี้เป็นกฎพื้นฐาน
การจัดสรรแบบ pro-rata คืออะไร?
Pro-rata ให้ส่วนแบ่งของคำสั่งที่เข้ามาแก่ทุกคำสั่งที่ราคาดีที่สุดตามสัดส่วนของขนาดคำสั่ง โดยเวลาที่เข้ามาถึงจะใช้สำหรับล็อตที่เหลือเท่านั้น ตลาดที่ใช้ pro-rata ส่วนใหญ่กำหนดการจัดสรรขั้นต่ำ ดังนั้นคำสั่งที่มีส่วนแบ่งต่ำกว่าเกณฑ์จะไม่ได้รับอะไรเลย
ทำไมเทรดเดอร์ฟิวเจอร์สถึงเสนอราคาขนาดใหญ่กว่าที่ต้องการซื้อขายจริง?
ในสมุดคำสั่งแบบ pro-rata การจัดสรรจะขึ้นอยู่กับขนาดที่แสดงไว้ ดังนั้นเทรดเดอร์ที่คาดว่าจะได้รับส่วนแบ่งเพียงเศษเสี้ยวของคำสั่งที่เสนอ จึงโพสต์ขนาดเป็นทวีคูณของจำนวนที่ต้องการ ทุกคนในระดับราคานั้นก็ทำเช่นเดียวกัน และความลึกที่แสดงไว้จึงสูงกว่าความต้องการที่แท้จริง
การยกเลิกและส่งคำสั่งใหม่ทำให้เสียตำแหน่งในคิวหรือไม่?
ในตลาดแบบ Price-time การเปลี่ยนราคาหรือเพิ่มจำนวนคำสั่งจะทำให้คำสั่งนั้นได้รับลำดับเวลาใหม่ที่ท้ายคิวของราคานั้น การลดจำนวนคำสั่งมักจะยังคงตำแหน่งเดิมไว้ แต่ละตลาดจะเป็นผู้กำหนดพฤติกรรมที่แน่นอน
ทุกตารางด้านบนมี SQL ที่ใช้สร้างข้อมูล คุณจึงสามารถเปลี่ยนสัญลักษณ์หรือช่วงเวลาและเรียกใช้ใหม่ได้ คำถามเดียวกันนี้สามารถถามเป็นภาษาอังกฤษทั่วไปได้ที่เทอร์มินัล Strasmore