ความได้เปรียบทางการแข่งขันหลักของตลาดซื้อขายแบบรวมศูนย์สามารถสรุปได้ในสามคำ ได้แก่ ความลึก ความเร็ว และความแน่นอน ความลึกเกิดจากความหนาแน่นของราคาเสนอจากผู้สร้างตลาดและผู้ใช้จริง ความเร็วเกิดจากระบบจับคู่และเส้นทางเครือข่าย ส่วนความแน่นอนเกิดจากกฎการจับคู่ที่โปร่งใสและระบบสำรองที่สามารถตรวจสอบได้ ตลาดแลกเปลี่ยนที่ล่มลงในช่วงตลาดขาขึ้น, ทำให้สมุดคำสั่งซื้อขายสับสนในช่วงตลาดล่มแบบฉับพลัน (flash crash), หรือสร้างคำสั่งซื้อขายซ้ำหลังจากมีการจดทะเบียนสินทรัพย์ใหม่ จะไม่สามารถรักษาผู้ใช้มืออาชีพไว้ได้ ไม่ว่าจะลงทุนในด้านการตลาดมากเพียงใดก็ตาม ระบบจับคู่คำสั่งซื้อขายและระบบย่อยสมุดคำสั่งซื้อขายของตลาดแลกเปลี่ยนแบบศูนย์กลาง (CEX) แบบไวท์เลเบลจาก SoonTech เปลี่ยนคุณสมบัติทั้งสามนี้ให้เป็นตัวชี้วัดทางวิศวกรรมที่วัดได้: ความล่าช้าในการจับคู่ในสภาวะคงที่ต่อคู่ (per-pair steady-state matching latency) ในระดับไมโครวินาที, เวลาไป-กลับแบบ end-to-end (end-to-end round-trip) ในระดับมิลลิวินาทีต่ำ, และการสลับระบบสำรองแบบแอคทีฟ-สแตนด์บาย (active-standby failover) ในระดับวินาที โดยไม่มีการสูญเสียหรือคำสั่งซ้ำซ้อน บทความนี้นำเสนอการอธิบายอย่างละเอียดเกี่ยวกับหลักการจับคู่ ประเภทคำสั่ง โครงสร้างสมุดคำสั่ง การจับคู่ในหน่วยความจำ การเก็บข้อมูลและการกู้คืน การสตรีมข้อมูลตลาด การป้องกันการซื้อขายกับตัวเอง มาตรฐานประสิทธิภาพ การกู้คืนจากภัยพิบัติ การเข้าถึงสำหรับสถาบัน และคำแนะนำด้านการดำเนินงาน

หากเปรียบเทียบตลาดหลักทรัพย์กับอาคาร เครื่องมือจับคู่คำสั่งซื้อขายก็คือพื้นที่ซื้อขายหลักของอาคารนั้น ทุกคำสั่งซื้อและขายจะเข้าสู่ที่นั่นเพื่อถูกจับคู่; ทุกราคา ปริมาณ และระดับความลึกของตลาดถูกสร้างขึ้นที่นั่น; ทุกการตัดสินใจเกี่ยวกับการเคลียร์ริ่ง การตั้งบัญชี และการจัดการความเสี่ยงล้วนขึ้นอยู่กับรายงานการดำเนินการที่มันส่งออกมา เมื่อเครื่องจับคู่หยุดทำงาน ตลาดทั้งระบบก็จะหยุดตามไปด้วย เมื่อมันให้ผลลัพธ์ที่ผิดพลาด การเคลียร์ริ่ง การตั้งบัญชี การควบคุมความเสี่ยง และการแสดงข้อมูลตลาดในขั้นตอนถัดไปจะทั้งหมดถูกทำลาย
ความแตกต่างที่สำคัญที่สุดระหว่าง CEX และ DEX อยู่ที่จุดนี้พอดี DEX เขียนกฎการจับคู่ไว้ในสัญญาอัจฉริยะ (smart contracts) ที่ถูกดำเนินการโดยนักขุดหรือผู้ตรวจสอบความถูกต้องตามลำดับความเห็นพ้อง ซึ่งทำให้กฎเหล่านี้สามารถตรวจสอบได้ แต่ก่อให้เกิดความล่าช้าสูง ต้นทุนสูง และประเภทคำสั่งซื้อขายที่จำกัด CEX ดำเนินการจับคู่บนเซิร์ฟเวอร์ประสิทธิภาพสูงที่ดำเนินการโดยตลาด ซึ่งให้เวลาตอบสนองต่ำและประเภทคำสั่งที่หลากหลาย แต่บังคับให้ผู้ดำเนินการต้องชดเชยความไว้วางใจแบบรวมศูนย์ด้วยความเคร่งครัดทางวิศวกรรมและการตรวจสอบอิสระ
สำหรับผู้ดำเนินการ CEX แบบไวท์เลเบล เครื่องมือจับคู่ยังกำหนดด้วยว่าสามารถให้บริการกลุ่มลูกค้าใดได้ ผู้ใช้รายย่อยไม่ไวต่อความล่าช้าหลายสิบหรือแม้กระทั่งหลายร้อยมิลลิวินาที ผู้สร้างตลาด (market makers), ทีมซื้อขายความถี่สูง (high-frequency desks), และบริษัทอาร์บิทราจ (arbitrage firms) มีความไวต่อความล่าช้าอย่างละเอียดมาก พวกเขาใช้เครื่องมือวัดความล่าช้าของตนเองเพื่อวัดเวลาไป-กลับ (round-trip time), ช่วงเวลาการอัปเดตข้อมูลตลาด (market-data intervals), และความล่าช้าในการยืนยันการยกเลิกคำสั่ง (cancel-ack latency) และตัดสินใจว่าจะเชื่อมต่อหรือไม่ รวมถึงปริมาณคำสั่งที่จะเสนอราคา (quote size) ตามตัวเลขเหล่านั้น ระบบจับคู่ที่ยังไม่ได้รับการปรับแต่งประสิทธิภาพจะไม่สามารถดึงดูดผู้ให้บริการสภาพคล่องที่จริงจังได้ และตลาดจะตกอยู่ในวงจรอุบาทว์ของความลึกของสภาพคล่องที่บาง ผู้ใช้ที่เลิกใช้บริการ และความลึกของสภาพคล่องที่บางลงอีก
ตลาดแบบสมุดคำสั่งสมัยใหม่ใช้หลักการลำดับความสำคัญตามราคา-เวลาอย่างแพร่หลาย กฎนี้มีสองชั้น ขั้นแรก ราคาซื้อที่สูงกว่าราคาซื้อที่ต่ำกว่าจะได้รับการจัดลำดับก่อน และราคาขายที่ต่ำกว่าจะได้รับการจัดลำดับก่อนราคาขายที่สูงกว่า เนื่องจากราคาที่ดีที่สุดคือราคาที่เอื้อประโยชน์ต่อคู่สัญญาที่สุด ขั้นที่สอง เมื่อมีคำสั่งซื้อขายหลายรายการอยู่ที่ราคาเดียวกัน คำสั่งที่เข้ามาถึงก่อนจะได้รับการจับคู่ก่อน
หลักการลำดับความสำคัญด้านราคาช่วยรับประกันการค้นพบราคาอย่างมีประสิทธิภาพ ส่วนหลักการลำดับความสำคัญด้านเวลาช่วยรับประกันความยุติธรรมตามหลัก "มาก่อนได้ก่อน" เมื่อรวมกันแล้ว ทั้งสองหลักการจะสร้างลำดับการจับคู่ที่แน่นอน: การที่คำสั่งจะได้รับการจับคู่หรือไม่ ที่ราคาเท่าใด และกับคู่สัญญาใด สามารถคำนวณได้อย่างแม่นยำทันทีที่ทราบสถานะของสมุดคำสั่ง ความแน่นอนนี้มีความสำคัญต่อผู้ใช้มืออาชีพ เนื่องจากกลยุทธ์ของพวกเขาถูกสร้างขึ้นบนความคาดหวังว่าคำสั่งที่รออยู่จะถูกจับคู่เมื่อใด หากกระบวนการจับคู่คำสั่งไม่โปร่งใส พวกเขาจะไม่สามารถทำการทดสอบย้อนหลังได้ และจะไม่จัดหาสภาพคล่องอย่างต่อเนื่อง
ระบบจับคู่ของ SoonTech บังคับใช้หลักการลำดับความสำคัญด้านราคาและเวลาอย่างเคร่งครัด เมื่อคำสั่งซื้อขายเข้าสู่ระบบจับคู่หลัก จะมีการบันทึกเวลาสองครั้ง: ครั้งแรกเมื่อเกตเวย์รับคำสั่งซื้อขาย ซึ่งใช้สำหรับการควบคุมความเสี่ยงและการตรวจสอบ และครั้งที่สองเมื่อคำสั่งซื้อขายเข้าสู่คิวจับคู่จริง ซึ่งใช้สำหรับการจัดอันดับในสมุดคำสั่งทั้งสองเวลาประทับมีระดับความละเอียดเป็นไมโครวินาที และถูกบันทึกไว้ในสมุดบันทึกการซื้อขาย ในกรณีที่มีข้อพิพาท ผู้ดำเนินการสามารถเล่นซ้ำวงจรชีวิตทั้งหมดตั้งแต่การรับคำสั่งจนถึงการดำเนินการ แทนที่จะต้องคาดเดาจากบันทึกที่กระจัดกระจาย ทั้งสองเวลาประทับมีระดับความละเอียดไมโครวินาที และถูกบันทึกไว้ในสมุดบันทึกการซื้อขาย (trade journal) อย่างถาวร ในกรณีมีข้อพิพาท ผู้ดำเนินการสามารถเล่นซ้ำวงจรชีวิตทั้งหมดตั้งแต่การรับคำสั่งจนถึงการดำเนินการ แทนที่จะต้องคาดเดาจากบันทึกที่กระจัดกระจาย
บางตลาดหลักทรัพย์ให้สิทธิความสำคัญแบบลับๆ แก่คำสั่งของผู้สร้างตลาดหรือลูกค้า VIP ซึ่งอาจทำให้ลูกค้าบางกลุ่มพอใจในระยะสั้น แต่ทำลายภาพลักษณ์ความยุติธรรมของตลาด และก่อให้เกิดวิกฤตความเชื่อมั่นในช่วงที่ตลาดมีความผันผวนสูง SoonTech ไม่ตั้งสิทธิความสำคัญแบบลับๆ สำหรับบัญชีใดก็ตามเป็นค่าเริ่มต้น ผู้สร้างตลาดจะได้รับข้อได้เปรียบจากการเสนอราคาที่แน่นกว่าและการยกเลิกคำสั่งที่เร็วกว่า ไม่ใช่จากการให้สิทธิพิเศษในระดับกฎเกณฑ์
ความสามารถในการแสดงออกของระบบจับคู่คำสั่งสะท้อนผ่านประเภทคำสั่งที่ระบบรองรับ ประเภทคำสั่งพื้นฐานสองประเภทคือคำสั่งจำกัด (Limit) และคำสั่งตลาด (Market) คำสั่งจำกัดต้องถูกจับคู่ที่ราคาที่กำหนดหรือดีกว่า โดยส่วนที่เหลือที่ยังไม่ถูกจับคู่จะยังคงอยู่ในสมุดคำสั่ง ส่วนคำสั่งตลาดต้องการการจับคู่ทันทีที่ราคาใดก็ตามที่มีอยู่ โดยจะกวาดสมุดคำสั่งจากระดับราคาที่ดีที่สุดลงมา
นอกเหนือจากสองประเภทนี้ การซื้อขายระดับมืออาชีพยังต้องการกลุ่มประเภทคำสั่งขั้นสูงเพื่อควบคุมต้นทุนการดำเนินการและความเสี่ยง SoonTech รองรับประเภทคำสั่งทั่วไปดังต่อไปนี้
แรกคือ Immediate or Cancel (IOC) คำสั่งนี้จะพยายามจับคู่ทันทีที่ส่งเข้ามา และส่วนที่ยังไม่ถูกจับคู่จะถูกยกเลิกทันทีแทนที่จะคงอยู่ในสมุดคำสั่ง IOC เหมาะสำหรับนักเทรดที่ต้องการการจับคู่ที่รวดเร็ว แต่ไม่ต้องการให้คำสั่งที่คงอยู่ในสมุดคำสั่งเปิดเผยเจตนา
ที่สอง Fill or Kill (FOK) คำสั่งนี้จะถูกจับคู่ทั้งหมดและทันที หรือถูกยกเลิกทั้งหมด; ไม่มีการจับคู่บางส่วน FOK มีประโยชน์สำหรับคำสั่งซื้อขายขนาดใหญ่ที่การจับคู่บางส่วนอาจเปิดเผยเจตนาของกลยุทธ์
ที่สาม Post-Only (โพสต์เท่านั้น) หากคำสั่งที่เข้ามาจะจับคู่กับคำสั่งที่รออยู่ทันที คำสั่งนั้นจะถูกยกเลิกโดยอัตโนมัติ Post-Only รับประกันสถานะผู้สร้างตลาด (maker) และส่วนลดสำหรับผู้สร้างตลาดที่เกี่ยวข้อง และถูกใช้อย่างแพร่หลายโดยผู้สร้างตลาด
ที่สี่ คือ Stop Orders (คำสั่งหยุด) ผู้ใช้กำหนดราคาทริกเกอร์ เมื่อตลาดแตะราคาดังกล่าว ระบบจะแปลงคำสั่งหยุดเป็นคำสั่งตลาดหรือคำสั่งจำกัด และส่งเข้าสู่กระบวนการจับคู่ คำสั่งหยุดไม่ปรากฏในสมุดคำสั่ง แต่ถูกเก็บไว้ในคิวทริกเกอร์แยกต่างหาก
ที่ห้า คำสั่ง Iceberg (คำสั่งภูเขาน้ำแข็ง) คำสั่งขนาดใหญ่จะแสดงปริมาณที่มองเห็นได้เพียงเล็กน้อยบนสมุดคำสั่ง ในขณะที่ซ่อนส่วนที่เหลือไว้ เมื่อส่วนที่มองเห็นได้ถูกจับคู่เสร็จสิ้น ส่วนที่มีขนาดเท่ากันจะถูกปล่อยออกมาจากส่วนที่ซ่อนอยู่ คำสั่ง Iceberg ช่วยให้ผู้ค้าขนาดใหญ่สร้างหรือลดตำแหน่งได้โดยไม่ทำให้สมุดคำสั่งเกิดการกระแทก
ที่หก คำสั่งอัลกอริทึม TWAP และ VWAP คำสั่งเหล่านี้ถูกจัดการโดยโมดูลการดำเนินการอัลกอริทึม ซึ่งจะแบ่งคำสั่งหลักออกเป็นคำสั่งย่อยตามช่วงเวลาหรือตารางการมีส่วนร่วมของปริมาณ เพื่อลดผลกระทบต่อตลาดลงอีก
ทุกประเภทคำสั่งจะผ่านวงจรการจับคู่เดียวกัน แต่จะเชื่อมต่อกับเหตุการณ์ต่าง ๆ ในวงจรชีวิตของคำสั่ง: ก่อนการเข้าตลาด ระหว่างการจับคู่ และหลังการจับคู่ การทำให้ประเภทคำสั่งขั้นสูงสามารถติดตั้งได้แทนที่จะเขียนโค้ดแบบคงที่ลงในวงจรการจับคู่ คือวิธีที่ระบบยังคงพัฒนาต่อไป
สมุดคำสั่งคือชุดรวมของคำสั่งจำกัดทั้งหมดที่ยังไม่ได้รับการจับคู่ จัดเรียงตามระดับราคา แต่ละระดับราคาเก็บคำสั่งที่รออยู่ที่ราคานั้น โดยจัดเรียงตามลำดับการมาถึง เมื่อมีคำสั่งตลาดหรือคำสั่งจำกัดที่สามารถซื้อขายได้เข้ามา ระบบจะสแกนจากระดับราคาที่ดีที่สุดไปเรื่อย ๆ จนกว่าปริมาณจะได้รับการจับคู่ครบถ้วน หรือสมุดคำสั่งจะหมด
ประสิทธิภาพของสมุดคำสั่งขึ้นอยู่กับสามกระบวนการหลัก ได้แก่ การเพิ่มคำสั่ง การยกเลิกคำสั่ง และการลบคำสั่งระหว่างการจับคู่ การใช้ array แบบพื้นฐานอาจทำงานได้ในเชิงฟังก์ชัน แต่จะกลายเป็นจุดคอขวดเมื่อมีกระบวนการเกิดขึ้นหลายหมื่นหรือหลายแสนครั้งต่อวินาที SoonTech ได้นำการปรับปรุงโครงสร้างหลายอย่างมาใช้
ก่อนอื่น ระดับราคาซื้อและราคาขายถูกจัดเรียงด้วย skip list แบบ lock-free หรือ bucket ราคาที่ใช้ดัชนีอาร์เรย์ สำหรับเครื่องมือการเงินที่มีขนาด tick คงที่ การใช้ดัชนีอาร์เรย์จะเร็วที่สุด ส่วนสำหรับ tick ที่เปลี่ยนแปลงได้ สกิปลิสต์หรือต้นไม้สีแดง-ดำจะค้นหาระดับได้ในเวลา O(log n) ภายในแต่ละระดับ คำสั่งซื้อขายจะถูกจัดเก็บในลิสต์เชื่อมโยงสองทางที่รักษาลำดับเวลาและอนุญาตให้ลบคำสั่งได้ในเวลา O(1) เมื่อมีการยกเลิก
ประการที่สอง ทุกคำสั่งมีรหัสคำสั่ง (order ID) ที่ไม่ซ้ำกันทั่วโลก และตารางแฮช (hash table) จะแมปรหัสนั้นไปยังอ็อบเจ็กต์คำสั่งในหน่วยความจำโดยตรง การยกเลิกคำสั่งจะค้นหาคำสั่งตาม ID ในเวลา O(1) และอ็อบเจ็กต์คำสั่งเก็บตัวชี้กลับไปยังระดับราคาและโหนดในรายการเชื่อมโยง ดังนั้นการลบออกจึงใช้เวลา O(1) เช่นกัน หากไม่มีกลไกนี้ การยกเลิกคำสั่งความถี่สูงจะกลายเป็นการสแกนสมุดคำสั่งทั้งหมด
ประการที่สาม เครื่องยนต์รักษามุมมองภาพสแนปช็อตในหน่วยความจำ ซึ่งได้รับการอัปเดตแบบเพิ่มทีละน้อยหลังการจับคู่ทุกครั้ง โมดูลข้อมูลตลาดสร้างข้อมูลความลึก ราคาสูงสุดในสมุดคำสั่ง และราคาเฉลี่ยจากภาพสแนปช็อตนี้ แทนที่จะสแกนสมุดคำสั่งใหม่ทุกครั้ง ภาพสแนปช็อตนี้สอดคล้องอย่างเคร่งครัดกับสถานะการจับคู่ ดังนั้นแพลตฟอร์มจึงไม่มี "แหล่งข้อมูลความจริงสองแหล่ง"
ประสิทธิภาพสูงสุดของเครื่องจับคู่คำสั่งซื้อขายขึ้นอยู่กับข้อเท็จจริงง่ายๆ คือ การทำงานในหน่วยความจำเร็วกว่าการทำงานบนดิสก์หลายเท่าตัว หากสมุดคำสั่งซื้อขายถูกเก็บไว้ในฐานข้อมูลบนดิสก์ การจับคู่แต่ละครั้งจะก่อให้เกิด I/O ในระดับมิลลิวินาที ซึ่งไม่มีฮาร์ดแวร์ใดสามารถแก้ไขได้ ดังนั้น เครื่องจับคู่คำสั่งซื้อขายที่จริงจังทุกเครื่องจึงใช้การจับคู่ในหน่วยความจำร่วมกับบันทึกการเขียนล่วงหน้า (write-ahead log) และภาพสแนปช็อตเป็นระยะ
การจับคู่ในหน่วยความจำหมายความว่าสมุดคำสั่ง วัตถุคำสั่ง และการจับคู่ทั้งหมดอยู่ในหน่วยความจำของกระบวนการ วงจรการจับคู่เป็นกระบวนการ CPU ล้วนๆ ที่ไม่สัมผัสกับดิสก์หรือเครือข่าย และคำสั่งโดยทั่วไปจะเสร็จสิ้นเส้นทางผ่านสมุดคำสั่งภายในเวลาน้อยกว่าสิบไมโครวินาที
อย่างไรก็ตาม หน่วยความจำเป็นแบบไม่ถาวร (volatile) หากไม่มีการเก็บข้อมูลแบบถาวร (persistence) การเกิดข้อผิดพลาดหรือการสูญเสียพลังงานจะทำให้สถานะสูญหาย ดังนั้น เครื่องมือจับคู่จึงเพิ่มบันทึกเข้าไปในล็อกเขียนล่วงหน้า (write-ahead log) ทุกครั้งที่มีการเปลี่ยนแปลงสถานะ การเพิ่มข้อมูลแบบต่อเนื่อง (sequential appends) เป็นหนึ่งในรูปแบบ I/O ของดิสก์ที่เร็วที่สุด เนื่องจากไม่มีการค้นหาตำแหน่ง (seek) และระบบปฏิบัติการกับดิสก์สามารถรวมการเขียนข้อมูลขนาดใหญ่ที่ต่อเนื่องกันเป็นชุดได้ เมื่อรวมกับกลไก group commit ที่รวมการเปลี่ยนแปลงสถานะหลายครั้งเป็นครั้งเดียวในการ flush ข้อมูล ค่าใช้จ่ายในการเก็บรักษาข้อมูลจะลดลงเหลือเพียงเศษส่วนของไมโครวินาทีต่อคำสั่ง
แต่เพียงบันทึก (log) อย่างเดียวไม่เพียงพอ มันจะเติบโตอย่างไม่มีขีดจำกัด และการเริ่มต้นใหม่โดยการรีเพลย์จากต้นจะช้ามาก ดังนั้น เครื่องยนต์จึงสร้างสแนปช็อตของสมุดคำสั่งทั้งหมดลงบนดิสก์เป็นระยะๆ เมื่อเริ่มต้นใหม่ สแนปช็อตล่าสุดจะถูกโหลด และบันทึกหลังจากสแนปช็อตนั้นจะถูกเล่นซ้ำ เพื่อกู้คืนสถานะจนถึงการดำเนินการที่ยืนยันล่าสุด SoonTech กำหนดให้สร้างภาพถ่ายทุกวินาทีหรือทุกหลายหมื่นครั้งของการเติมคำสั่ง และจัดเก็บภาพถ่ายและบันทึกบนดิสก์ทางกายภาพหรือโซนความพร้อมใช้งานที่แยกกัน เพื่อหลีกเลี่ยงการสูญเสียข้อมูลที่เกี่ยวข้องกัน
การเก็บข้อมูลแบบถาวรยังเกี่ยวข้องกับการตัดสินใจทางวิศวกรรมด้วย การบังคับให้ fsync หลังการจับคู่ทุกครั้งจะทำให้ปริมาณงานลดลงอย่างมาก ส่วนการข้าม fsync จะเสี่ยงต่อการสูญเสียบันทึกไม่กี่รายการสุดท้ายเมื่อเกิดการสูญเสียพลังงาน SoonTech ใช้ group commit ร่วมกับการล้างข้อมูลตามเวลาที่กำหนด: บันทึกในล็อกจะเข้าสู่แคชหน้า และเธรดพื้นหลังจะเรียกใช้ fsync ทุก 50 มิลลิวินาที หรือเมื่อถึงเกณฑ์จำนวนไบต์ที่กำหนด การเกิดข้อผิดพลาดภายในช่วงเวลาดังกล่าวอาจทำให้บันทึกที่ล่าสุดซึ่งยังไม่ถูกฟลัชสูญหาย แต่คำสั่งเหล่านั้นยังคงมีอยู่ที่เกตเวย์และสามารถเล่นซ้ำได้หลังการกู้คืน ดังนั้นยอดคงเหลือของผู้ใช้จึงไม่เคยคลาดเคลื่อน
ระบบจับคู่ไม่เพียงสร้างการจับคู่เท่านั้น แต่ยังส่งชุดข้อมูลตลาดที่ครบถ้วน ได้แก่ ราคาซื้อขายล่าสุด ราคาสูงสุดและต่ำสุดรายวัน ปริมาณการซื้อขายใน 24 ชั่วโมง ราคาสูงสุดในสมุดคำสั่ง ความลึกหลายระดับ และกราฟแท่งเทียน ข้อมูลเหล่านี้ถูกส่งไปยังอินเทอร์เฟซการซื้อขาย การเสนอราคาของผู้สร้างตลาด และกลยุทธ์เชิงปริมาณ จึงต้องมีความเร็วและเสถียรภาพสูง
การสร้างข้อมูลตลาดเป็นแบบขับเคลื่อนด้วยเหตุการณ์ (event-driven) ทุกการเปลี่ยนแปลงสถานะหรือการจับคู่คำสั่งในสมุดคำสั่งจะก่อให้เกิดเหตุการณ์ภายใน ซึ่งโมดูลข้อมูลตลาดจะรับข้อมูลนี้เพื่ออัปเดตมุมมองของตนแบบเพิ่มทีละน้อย การอัปเดตแบบเพิ่มทีละน้อยแทนการคำนวณใหม่ทั้งหมดช่วยให้โมดูลยังคงตอบสนองได้ดีแม้มีธุรกรรมหลายหมื่นครั้งต่อวินาที
มีสามกลุ่มผู้รับข้อมูลสตรีมนี้ ข้อมูลตลาดสาธารณะ เช่น ราคาล่าสุดและกราฟแท่งเทียน จะส่งไปยังผู้สมัครรับข้อมูลทุกคน ส่วนข้อมูลส่วนตัว เช่น สถานะคำสั่งซื้อขาย การจับคู่คำสั่ง และยอดคงเหลือ จะส่งไปยังบัญชีที่เกี่ยวข้องเท่านั้น สตรีมระดับความลึกจะแตกต่างกันตามสิทธิ์การใช้งาน: ผู้ใช้ฟรีอาจเห็นระดับบนสุดของสมุดคำสั่งซื้อขาย ในขณะที่ผู้ใช้แบบชำระเงินหรือผู้ใช้สถาบันจะเห็น 20 ระดับหรือความลึกเต็มรูปแบบ
การส่งข้อมูลใช้การเชื่อมต่อ WebSocket แบบยาว (long connections) พร้อมการเข้ารหัส Protobuf หรือ MessagePack เพื่อลดการใช้แบนด์วิดท์และค่าใช้จ่ายในการวิเคราะห์ข้อมูล เกตเวย์ข้อมูลตลาดของ SoonTech ใช้การปรับแต่งโปรโตคอลหลายอย่าง: การมัลติเพล็กซ์การเชื่อมต่อเพื่อให้การสมัครสมาชิกหลายรายการใช้ซ็อกเก็ตเดียว, การบีบอัดเดลต้าเพื่อไม่ให้ส่งข้อมูลฟิลด์ที่ไม่เปลี่ยนแปลงซ้ำ, การส่งสัญญาณชีพเพื่อตรวจจับการเชื่อมต่อที่ขาดหาย, และระบบแบ็คเพรสเชอร์เพื่อตัดการเชื่อมต่อของผู้บริโภคที่ช้า แทนที่จะทำให้คลัสเตอร์ทั้งหมดทำงานช้าลง
ปัญหาการสตรีมข้อมูลที่พบบ่อยที่สุดไม่ใช่ความช้า แต่เป็นความผิดปกติ รายงานการเติมคำสั่งซื้ออาจถูกสร้างขึ้นก่อนการอัปเดตสถานะคำสั่งซื้อ แต่ถึงปลายทางหลังการอัปเดต เนื่องจากความไม่เสถียรของเครือข่าย (network jitter) ทำให้ไคลเอนต์อยู่ในสถานะที่ไม่สอดคล้องกัน SoonTech ติดแท็กทุกข้อความด้วยหมายเลขลำดับสองชุด: ลำดับที่เพิ่มขึ้นอย่างต่อเนื่องต่อการเชื่อมต่อหนึ่ง และลำดับเหตุการณ์ระดับโลกจากบันทึกเหตุการณ์ที่ตรงกัน ลูกค้าใช้ลำดับเหตุการณ์ระดับโลกเพื่อตรวจหาช่องว่าง และใช้ลำดับการเชื่อมต่อเฉพาะเพื่อตรวจหาการจัดเรียงใหม่ และเมื่อพบความผิดปกติใดๆ พวกเขาจะดึงภาพรวม REST แบบเต็มเพื่อปรับการซิงโครไนซ์ใหม่
การซื้อขายกับตัวเอง (self-trade) เกิดขึ้นเมื่อคำสั่งซื้อและคำสั่งขายจากบัญชีเดียวกันหรือบัญชีที่เกี่ยวข้องจับคู่กัน การซื้อขายกับตัวเองอาจเกิดจากความขัดแย้งของกลยุทธ์โดยไม่ได้ตั้งใจ เช่น สองส่วนในโปรแกรมอาร์บิทราจที่พบกันที่ราคาเดียวกัน หรือพฤติกรรมที่มุ่งร้ายเพื่อเพิ่มปริมาณการซื้อขาย กำหนดราคาปิด หรือทำให้ตลาดเข้าใจผิด ตลาดที่พัฒนาแล้วจะจัดการปัญหานี้ที่ระบบจับคู่หลักด้วยระบบป้องกันการซื้อขายกับตัวเอง (STP)
SoonTech รองรับนโยบาย STP หลายแบบ นโยบายที่เข้มงวดที่สุดคือ Cancel Newest: หากคำสั่งซื้อใหม่ที่จะเข้ามาตรงกับคำสั่งที่รออยู่ (resting order) ในกลุ่ม STP เดียวกัน คำสั่งใหม่จะถูกยกเลิก Cancel Oldest จะยกเลิกคำสั่งที่รออยู่ฝั่งตรงข้ามแทน และให้คำสั่งใหม่ดำเนินการต่อกับสภาพคล่องอื่น ๆ Cancel Both จะยกเลิกทั้งสองฝั่ง Decrement จะยกเลิกเฉพาะปริมาณที่ทับซ้อนกัน และให้ส่วนที่เหลือยังคงรออยู่หรือดำเนินการต่อ
กลุ่ม STP มีความยืดหยุ่นในระดับบัญชี โดยค่าเริ่มต้น บัญชีหลักและบัญชีย่อยจะอยู่ในกลุ่มเดียวกัน แต่ลูกค้าสถาบันสามารถขอตั้งกลุ่มอิสระสำหรับบัญชีย่อยที่มีกลยุทธ์ต่างกัน เพื่อให้กลยุทธ์ที่ไม่เกี่ยวข้องกันไม่ยกเลิกกันเอง ทุกการดำเนินการ STP จะถูกบันทึกลงในสมุดบัญชีเพื่อตรวจสอบความเสี่ยงและการปฏิบัติตามกฎระเบียบ
นอกเหนือจาก STP เครื่องมือต้องจัดการกับปัญหาความยุติธรรมอื่น ๆ การสปูฟิง (Spoofing) คือการวางคำสั่งซื้อขายขนาดใหญ่แล้วยกเลิกอย่างรวดเร็วเพื่อสร้างความลึกของตลาดปลอม การเลเยอร์ (Layering) คือการวางคำสั่งซื้อขายข้ามระดับราคาหลายระดับเพื่อกระตุ้นการเคลื่อนไหวของราคา การซื้อขายแบบ Momentum ignition ดำเนินการอย่างก้าวร้าวเพื่อกระตุ้นอัลกอริทึมอื่น ๆ สิ่งเหล่านี้ไม่สามารถป้องกันได้ด้วยกฎการจับคู่เพียงอย่างเดียว แต่จำเป็นต้องให้บันทึกธุรกรรมป้อนข้อมูลเข้าสู่โมเดลความเสี่ยงและการเฝ้าระวัง ซึ่งจะแจ้งเตือนทีมการปฏิบัติตามกฎระเบียบเกี่ยวกับอัตราส่วนการยกเลิกต่อคำสั่งที่ผิดปกติ ผลกระทบต่อราคาในระยะสั้น และรูปแบบที่เกี่ยวข้อง
การอภิปรายประสิทธิภาพการจับคู่คำสั่งซื้อขายโดยใช้เพียงค่า TPS สูงสุดเพียงอย่างเดียวอาจทำให้เข้าใจผิดได้ เนื่องจาก TPS ขึ้นอยู่กับองค์ประกอบของคำสั่งซื้อขาย ความลึกของสมุดคำสั่งซื้อขาย และอัตราส่วนการยกเลิกคำสั่งซื้อขาย ระบบสาธิตที่เพียงจับคู่คำสั่งซื้อขายโดยไม่มีการสตรีมข้อมูลตลาดหรือตรวจสอบความเสี่ยงอาจบรรลุ TPS ได้ถึงหนึ่งล้าน แต่ระบบผลิตที่ทำงานเต็มกำลังและรักษา TPS ไว้ที่หลายหมื่นนั้นถือเป็นระดับชั้นนำในอุตสาหกรรม SoonTech วัดตัวชี้วัดที่มีความหมายเพิ่มเติมอีกสี่ตัว
แรกคือ ความล่าช้าในการจับคู่ (matching latency) ซึ่งเป็นเวลา CPU ที่แท้จริงตั้งแต่การส่งคำสั่งซื้อขายจนถึงรายงานการจับคู่ภายในแกนหลักการจับคู่ นี่คือความล่าช้าภายในของระบบ ซึ่งโดยทั่วไปอยู่ที่ 5 ถึง 20 ไมโครวินาที
ที่สอง คือ เวลาไป-กลับ (round-trip time) ตั้งแต่ผู้ใช้ส่งคำสั่งซื้อขายจนถึงการรับรายงานการจับคู่ ซึ่งรวมถึงการเข้าถึงเครือข่าย การยืนยันตัวตน การตรวจสอบความเสี่ยง การแปลงเป็นรูปแบบอนุกรม (serialization) การจับคู่ การจัดเก็บข้อมูล และการสตรีมมิ่ง สำหรับระบบที่ตั้งอยู่ในสถานที่เดียวกัน (co-located) เวลาไป-กลับนี้อยู่ที่ 1 ถึง 5 มิลลิวินาที ส่วนผู้ใช้ระยะไกลจะถูกจำกัดโดยปัจจัยทางฟิสิกส์
ที่สาม คือ อัตราการประมวลผลต่อเนื่อง (sustained throughput) ซึ่งหมายถึงจำนวนคำสั่งต่อวินาทีที่ระบบสามารถประมวลผลได้อย่างต่อเนื่องโดยไม่เกิดการคิว (queuing), ไทม์เอาต์ (timeouts) หรือการเสื่อมสภาพของความหน่วงเวลา คู่ระบบเดียวสามารถรองรับคำสั่งได้หลายหมื่นคำสั่งต่อวินาที และการขยายระบบแบบแนวนอน (horizontal scaling) ของคลัสเตอร์จะเพิ่มอัตราการประมวลผลรวมตามจำนวนคู่ระบบ
ที่สี่ คือ ความล่าช้าส่วนท้าย (tail latency) สิ่งที่สำคัญสำหรับกลยุทธ์การสร้างตลาดไม่ใช่ค่าเฉลี่ย แต่เป็น P99 และ P999 เครื่องยนต์ที่ทำงานได้ดีจะรักษา P99 ไว้ที่ระดับสิบไมโครวินาที การเพิ่มขึ้นอย่างกะทันหันมักชี้ถึงการหยุดชั่วคราวของ GC (GC pauses), การเกิด IRQ storms, การเข้าถึงข้ามโหนด NUMA หรือการบล็อกจากการล้างล็อก (log flush blocking) และต้องตรวจสอบทันที
ความล่าช้าต้องถูกวัดอย่างต่อเนื่องในระบบผลิตจริง ไม่ใช่เพียงตอนเริ่มต้นเท่านั้น ทุกการติดตั้ง SoonTech จะมีบัญชีทดสอบที่ส่งคำสั่งสังเคราะห์ขนาดเล็กมากไปยังคู่สินทรัพย์จริงด้วยอัตราคงที่ และบันทึกความล่าช้าแบบ end-to-end ผลลัพธ์จากบัญชีทดสอบจะถูกส่งไปยังแดชบอร์ดและแจ้งเตือนเมื่อ P99 เกินค่าขีดจำกัด การตรวจสอบสุขภาพระบบด้วยตนเองนี้จะตรวจพบการลดลงของประสิทธิภาพก่อนที่ระบบตรวจสอบภายนอกจะตรวจพบ
เครื่องยนต์จับคู่เป็นองค์ประกอบสุดท้ายที่อาจหยุดทำงาน แต่เครื่องทุกเครื่องล้วนมีความเสี่ยงที่จะล้มเหลว การออกแบบการกู้คืนจากภัยพิบัติตั้งคำถามหลักหนึ่งข้อ: เมื่อเครื่อง, แร็ก, โซนความพร้อมใช้งาน หรือภูมิภาคทั้งหมดล้มเหลว การจับคู่จะสามารถกลับมาทำงานได้ภายในไม่กี่วินาทีได้อย่างไร โดยไม่มีการสูญเสียคำสั่ง ไม่มีการซ้ำซ้อน และไม่เกิดภาวะสมองแยก?
สถาปัตยกรรมพื้นฐานคือแบบ active-standby (หลัก-สำรอง). เครื่องหลักดำเนินการจับคู่ตามปกติและส่งบันทึกการทำงานไปยังเครื่องสำรองที่เล่นซ้ำข้อมูลอย่างต่อเนื่องและรักษาความสอดคล้องเกือบสมบูรณ์ เมื่อเครื่องหลักล้มเหลว ระบบตรวจสอบจะตรวจพบการสูญเสียสัญญาณชีพภายในไม่กี่วินาที ยกระดับเครื่องสำรองให้เป็นเครื่องหลัก และเปลี่ยนทิศทางการรับส่งข้อมูลผ่านเกตเวย์ กุญแจสำคัญของสถาปัตยกรรม active-standby คือความสอดคล้องกันในการเปลี่ยนผ่านเมื่อเกิดข้อผิดพลาด: เครื่องหลักเดิมต้องถูกกักกันเพื่อไม่ให้สามารถกลับเข้าร่วมระบบได้หลังการกู้คืนและสร้างมาสเตอร์สองตัว และเครื่องหลักใหม่ต้องไม่ล้าหลังกว่าสถานะที่ได้รับการยืนยันล่าสุด
สถาปัตยกรรมที่ขั้นสูงกว่าคือแบบ active-active หรือ multi-active การจับคู่สำหรับคู่เดียวกันทำงานแบบซ้ำซ้อนบนโหนดหลายตัวที่ตกลงกันเกี่ยวกับลำดับและผลลัพธ์ผ่านโปรโตคอลการบรรลุฉันทามติ เช่น Raft หรือ Paxos และลูกค้าสามารถเชื่อมต่อกับโหนดใดก็ได้ ในหลักการแล้ว multi-active ให้การ failover ที่ไม่มีเวลาหยุดทำงาน แต่เพิ่มความล่าช้าในการบรรลุฉันทามติ (consensus latency) ประมาณไม่กี่ร้อยไมโครวินาทีถึงหนึ่งมิลลิวินาที และความซับซ้อนทางวิศวกรรมที่มากขึ้น คู่ระบบที่ให้ความสำคัญกับความล่าช้ายังคงนิยมใช้ active-standby ส่วนคู่ระบบที่ทนต่อความล่าช้าเพิ่มเติมจะใช้ multi-active เพื่อเพิ่มความพร้อมใช้งาน
SoonTech ตั้งค่าเริ่มต้นเป็น active-standby แบบซิงโครนัสอย่างเข้มงวดข้ามโซนความพร้อมใช้งาน เซิร์ฟเวอร์หลักและเซิร์ฟเวอร์สำรองอย่างน้อยหนึ่งเครื่องตั้งอยู่ในแร็คต่างกันภายในศูนย์ข้อมูลเดียวกันเพื่อการจำลองข้อมูลในระดับมิลลิวินาที และเซิร์ฟเวอร์กู้ภัยเพิ่มเติมตั้งอยู่ในภูมิภาคห่างไกลพร้อมการจำลองข้อมูลแบบอะซิงโครนัสเพื่อรับมือกับความล้มเหลวระดับไซต์ ผู้นำการเลือกตั้งอิสระ (leader-elector) จะประสานงานการเปลี่ยนผ่าน (failover) เพื่อป้องกันการเกิด split brain ในแต่ละไตรมาส จะมีการจัดวันทดสอบ (game days) โดยเจตนาปิดระบบหลัก (primary) ตัดการเชื่อมต่อเกตเวย์ และสร้างการแบ่งเครือข่าย (network partitions) เพื่อตรวจสอบว่าเป้าหมาย RTO ยังคงเป็นไปตามที่คาดการณ์ในทางปฏิบัติ
สถาบันมืออาชีพไม่ทำการซื้อขายผ่านเว็บ UI แต่พวกเขาดำเนินการระบบซื้อขายของตนเอง ระบบ OMS/EMS และเกตเวย์จัดการความเสี่ยง และต้องการการเชื่อมต่อที่เป็นมาตรฐาน มาตรฐานหลักในตลาดการเงินคือโปรโตคอล FIX (Financial Information eXchange) ซึ่งเป็นโปรโตคอลที่เข้ารหัสแบบข้อความหรือไบนารีแบบเซสชัน ครอบคลุมการส่งคำสั่ง การยกเลิก รายงานการดำเนินการ สอบถามสถานะตำแหน่ง และการควบคุมความเสี่ยง
SoonTech ให้บริการเกตเวย์ FIX เฉพาะสำหรับสถาบัน ซึ่งสอดคล้องกับมาตรฐานฟิลด์ของ FIX 4.4 และสนับสนุนการกู้คืนเซสชัน การซิงโครไนซ์ลำดับใหม่ การเข้ารหัสแบบสมมาตรและอสมมาตร รายการอนุญาต IP แหล่งที่มา และใบรับรองลูกค้า เกตเวย์ FIX นี้ไม่ดำเนินการจับคู่คำสั่งด้วยตนเอง แต่จะแปลงข้อความ FIX เป็นเหตุการณ์คำสั่งภายใน และแปลงรายงานการดำเนินการกลับเป็น FIX
สถาบันการเงินมักต้องการการเชื่อมต่อกับบริการโบรกเกอร์หลักข้ามตลาดผ่าน FIX หรือโปรโตคอลเฉพาะ, บริการโฮสติ้งแบบโคโลเคชันที่วางอุปกรณ์ของพวกเขาใกล้กับระบบจับคู่เพื่อลดความล่าช้าทางกายภาพให้ต่ำที่สุด, ขีดจำกัดอัตรา API เฉพาะที่แตกต่างจากลูกค้าทั่วไป, และสตรีมความลึกตลาดเฉพาะที่มีความละเอียดสูงขึ้น SoonTech รวมบริการเหล่านี้ไว้ในแพ็กเกจระดับสถาบันที่ผู้ดำเนินการสามารถเปิดใช้งานได้ตามลูกค้าแต่ละราย
รายละเอียดที่มักถูกมองข้ามคือว่า Sandbox และ Production ต้องมีโครงสร้างที่เหมือนกันอย่างสมบูรณ์ หลังจากพัฒนาใน Sandbox สถาบันการเงินมักประสบปัญหาไม่ใช่อันเนื่องมาจากความไม่ตรงกันของ API แต่เกิดจากการพบรหัสข้อผิดพลาด ข้อจำกัดอัตรา หรือกฎความเสี่ยงที่มีอยู่เฉพาะใน Production เท่านั้น แซนด์บ็อกซ์ของ SoonTech ใช้โค้ดการจับคู่และโมเดลการกำหนดค่าเดียวกันกับสภาพแวดล้อมการผลิต โดยแยกกันเพียงที่ชั้นข้อมูลเท่านั้น ทำให้การย้ายจากแซนด์บ็อกซ์ไปยังสภาพแวดล้อมการผลิตเป็นไปอย่างราบรื่นที่สุดเท่าที่จะเป็นไปได้
การทดสอบที่แท้จริงของระบบจับคู่จะเริ่มขึ้นหลังการเปิดตัว โดยอาศัยประสบการณ์จากการติดตั้งระบบให้กับลูกค้า white-label หลายราย เราจึงมีคำแนะนำเชิงปฏิบัติหลายข้อ
แรกๆ ให้เปิดตัวคู่ซื้อขายแบบเป็นขั้นตอน การเปิดคู่ซื้อขายหลายสิบคู่ในครั้งเดียวเมื่อเปิดตัวจะทำให้ผู้สร้างตลาดต้องกระจายกำลังไปทุกที่ และส่งผลให้สมุดคำสั่งซื้อขายมีความลึกไม่เพียงพอในทุกคู่ เริ่มต้นด้วยคู่ซื้อขายไม่กี่คู่ที่มีความมั่นใจสูง ซึ่งมีการรับประกันสภาพคล่องอยู่แล้ว แล้วค่อยขยายเมื่อความลึกของสมุดคำสั่งซื้อขายและประสบการณ์ของผู้ใช้เริ่มเสถียร
ประการที่สอง ให้เชิญผู้สร้างตลาดเข้าร่วมก่อนการเปิดบริการอย่างเป็นทางการ ก่อนการเปิดตัวสู่สาธารณะ ให้เชิญผู้สร้างตลาดอย่างน้อยสองหรือสามรายเพื่อสร้างความลึกของตลาดระดับพื้นฐาน และหลีกเลี่ยงสเปรดที่กว้างเกินไปเมื่อเปิดตลาด ข้อผูกพันในการเสนอราคา สเปรดสูงสุด และขนาดคำสั่งขั้นต่ำที่ค้างอยู่ ควรถูกบันทึกไว้ในสัญญาและตรวจสอบอย่างต่อเนื่องกับบันทึกธุรกรรม
ประการที่สาม ให้เหลือพื้นที่สำหรับขยายขนาด เซิร์ฟเวอร์จับคู่ควรทำงานด้วย CPU ไม่เกิน 30 เปอร์เซ็นต์ และหน่วยความจำไม่เกิน 50 เปอร์เซ็นต์ ในสภาพปกติ เพื่อรองรับการเพิ่มขึ้นของปริมาณการจราจร 3 ถึง 5 เท่า ที่เกิดขึ้นในตลาดที่มีความผันผวน การวางแผนความจุควรตั้งเป้าหมายที่ 3 ถึง 5 เท่าของจุดสูงสุดเมื่อวานนี้ แทนที่จะใช้ค่าเฉลี่ย
ที่สี่ สร้างระบบการสังเกตการณ์ที่ครอบคลุม ความล่าช้าในการจับคู่ ความล่าช้าของบันทึก ความล่าช้าในการกระจายข้อมูลตลาด ความล่าช้าในการคัดลอกข้อมูลสำรอง ความลึกของคิวบันทึก จำนวนการเชื่อมต่อ อัตราการยกเลิก และตัวกระตุ้น STP ทั้งหมดควรปรากฏบนแดชบอร์ดแบบเรียลไทม์พร้อมการแจ้งเตือน การเฝ้าติดตามคือดวงตาของระบบปฏิบัติการ หากไม่มีมัน เครื่องยนต์จะบินแบบไม่เห็นทาง
ที่ห้า คือ การฝึกซ้อม ซ้ำแล้วซ้ำเล่า ทุกการเปลี่ยนระบบสำรอง ทุกการอัปเกรด และทุกการเปลี่ยนแปลงพารามิเตอร์ ควรได้รับการฝึกซ้อมแบบครบวงจรในสภาพแวดล้อมแซนด์บ็อกซ์และสเตจจิ้ง พร้อมแผนการย้อนกลับ ความสงบในระบบผลิตได้มาจากการฝึกซ้อมความวุ่นวายซ้ำแล้วซ้ำเล่าในสภาพแวดล้อมนอกระบบผลิต
ระบบจับคู่ไม่ใช่โมดูลที่คุณซื้อมาใช้อย่างง่ายๆ แต่เป็นปัจจัยหลักที่สนับสนุนความแข่งขันหลักของตลาดหลักทรัพย์ในระยะยาว ประสิทธิภาพ ความเสถียร และความยุติธรรมของระบบนี้ร่วมกันกำหนดว่าผู้ใช้จะไว้วางใจแพลตฟอร์มนี้ในการจัดการสินทรัพย์และกลยุทธ์หรือไม่ ระบบจับคู่ CEX แบบไวท์เลเบลและสมุดคำสั่งของ SoonTech ช่วยให้การลงทุนเป็นระบบในหลายด้าน เช่น ลำดับความสำคัญตามราคา-เวลา, สถาปัตยกรรมในหน่วยความจำ (in-memory architecture), ความยืดหยุ่นของประเภทคำสั่งซื้อขาย, การสตรีมข้อมูลตลาด, การป้องกันการซื้อขายเอง (self-trade prevention), การกู้คืนจากภัยพิบัติ (disaster recovery), และการเข้าถึงสำหรับสถาบัน เพื่อให้ผู้ดำเนินการสามารถเริ่มต้นได้ตั้งแต่วันแรกด้วยโครงสร้างพื้นฐานที่ได้รับการเสริมความมั่นคงในสภาพแวดล้อมการผลิต และมุ่งเน้นพลังงานของตนเองไปที่ความสัมพันธ์กับผู้สร้างตลาด (market-maker), การเติบโตของผู้ใช้, และการออกใบอนุญาต ความลึกทางวิศวกรรมจะสะสมจนกลายเป็นความลึกทางธุรกิจในที่สุด
A: บนเซิร์ฟเวอร์แบบ bare-metal หรือเครื่องเสมือนที่มีความหน่วงต่ำในศูนย์ข้อมูลเดียวกัน ความหน่วงในการจับคู่คำสั่งบริสุทธิ์ตั้งแต่การส่งคำสั่งจนถึงรายงานการจับคู่โดยทั่วไปอยู่ที่ 5 ถึง 20 ไมโครวินาที เวลาไป-กลับที่ผู้ใช้เห็นได้รวมถึงเครือข่าย การยืนยันตัวตน การตรวจสอบความเสี่ยง การจัดลำดับ การเก็บข้อมูล และการกระจายสัญญาณ ซึ่งใช้เวลา 1 ถึง 5 มิลลิวินาทีเมื่ออยู่ในศูนย์ข้อมูลเดียวกัน และอาจสูงขึ้นเมื่อข้ามภูมิภาค ขึ้นอยู่กับระยะทางทางกายภาพ
A: ลำดับความสำคัญตามราคาและเวลา (Price-time priority) กำหนดเพียงลำดับการจับคู่คำสั่งเท่านั้น และไม่สามารถป้องกันการสปูฟ (spoofing) หรือการเลเยอร์ (layering) ได้ด้วยตัวเอง SoonTech ได้เพิ่มชั้นป้องกันการซื้อขายเอง (self-trade prevention), การเฝ้าระวังการยกเลิกคำสั่งเพื่อซื้อขายที่ผิดปกติ (abnormal cancel-to-trade surveillance), และการตรวจจับผลกระทบต่อราคาในระยะสั้น (short-term price-impact detection) เข้าไป และแจ้งรูปแบบบันทึกที่น่าสงสัย (journal patterns) ให้ทีมกำกับดูแล (compliance team) ทราบ การบิดเบือนตลาด (market manipulation) เป็นการละเมิดกฎระเบียบเป็นหลัก ซึ่งจัดการผ่านการเฝ้าระวังและการตรวจสอบ
A: ทุกการเปลี่ยนแปลงสถานะจะถูกบันทึกไว้ใน write-ahead log ด้วยกลไก group commit และ flush ที่มีข้อจำกัดด้านเวลา ในกรณีสุดขั้วที่บันทึกล่าสุดที่ยังไม่ถูก flush สูญหาย คำสั่งเหล่านั้นยังคงมีอยู่ที่เกตเวย์และจะถูกเล่นซ้ำเมื่อกู้คืนระบบ ดังนั้นยอดคงเหลือจะไม่เคยคลาดเคลื่อน ด้วยการใช้ snapshot เป็นระยะ การกู้คืนระบบหลังการรีสตาร์ทจะใช้เวลาเพียงไม่กี่สิบวินาที
A: ในการปรับใช้แบบซิงโครนัสอย่างเข้มงวดตามมาตรฐาน ความล่าช้าในการคัดลอกข้อมูลอยู่ระหว่างต่ำกว่าหนึ่งมิลลิวินาทีถึงไม่กี่มิลลิวินาที และการตรวจจับความล้มเหลวพร้อมกับการเลื่อนสถานะเสร็จสิ้นภายในไม่กี่วินาที เนื่องจากระบบสแตนด์บายสะท้อนสถานะของระบบหลัก การเติมข้อมูลที่ได้รับการยืนยันจะไม่สูญหาย; คำสั่งที่เข้ามาในช่วงการสลับจะถูกจัดคิวหรือลองใหม่ที่เกตเวย์โดยไม่ก่อให้เกิดการเติมข้อมูลซ้ำ
A: ใช่ Iceberg ถูกนำไปใช้ในแกนหลักการจับคู่ และเพียงปริมาณที่มองเห็นได้เท่านั้นที่จะปรากฏในสมุดคำสั่ง โดยส่วนที่ซ่อนอยู่จะถูกปล่อยออกมาเมื่อส่วนที่มองเห็นได้ถูกเติมเต็ม TWAP และ VWAP ถูกจัดการโดยโมดูลการดำเนินการอัลกอริทึมอิสระ ซึ่งจะแบ่งคำสั่งหลักเป็นคำสั่งย่อย ซึ่งจากนั้นจะถูกจับคู่ภายใต้กฎลำดับความสำคัญด้านราคาและเวลาเดียวกัน
A: SoonTech ให้บริการเกตเวย์ FIX 4.4 พร้อมด้วยระบบจัดการเซสชันมาตรฐาน การซิงโครไนซ์ลำดับใหม่ การยืนยันตัวตนด้วยใบรับรอง และการอนุญาต IP ผู้สร้างตลาดที่ให้ความสำคัญกับความหน่วงเวลาสามารถขอใช้บริการโฮสติ้งแบบโคโลเคชันและช่องข้อมูลตลาดเฉพาะได้ โดยวางอุปกรณ์ของพวกเขาในศูนย์ข้อมูลเดียวกันกับเครื่องจับคู่เพื่อลดความหน่วงทางกายภาพให้ต่ำที่สุด
🌐 สร้างแพลตฟอร์ม Web3 ที่ปลอดภัยและสามารถขยายได้กับ SoonTech
ค้นพบโซลูชันของเราสำหรับตลาดคริปโตแบบ White Label, ตลาดการคาดการณ์, กระเป๋าเงิน MPC, เครื่องจับคู่, การบูรณาการสภาพคล่อง และการปฏิบัติตามกฎระเบียบ