ภาพรวมและปรัชญาการออกแบบ
SabiQuant คือไลบรารี Quantitative Finance ความสมบูรณ์สูง ปราศจากการพึ่งพาไลบรารีภายนอก (Zero-dependency) เขียนขึ้นใหม่ด้วยภาษา Rust ล้วน ออกแบบมาเพื่อส่งมอบความน่าเชื่อถือระดับระบบการเงิน มีความแม่นยำเชิงตัวเลขขั้นสูง และใช้งานได้สะดวกตามหลักการยศาสตร์ของซอฟต์แวร์สมัยใหม่
ปรัชญาทางวิศวกรรม (Engineering Philosophy)
1. ปราศจากไลบรารีภายนอก (std-only)
ระบบงาน Quant ยุคใหม่จำนวนมากประสบปัญหาจากการพึ่งพาแพ็กเกจภายนอกที่มากเกินไป ความเสี่ยงด้านความปลอดภัยของ transitive dependencies และการเปลี่ยนแปลงที่เข้ากันไม่ได้จากแพ็กเกจต้นทาง
SabiQuant ไม่มี external crate dependencies ใดๆ ทุกฟังก์ชัน ตั้งแต่วันที่ ปฏิทินตลาด ตัวแก้สมการหาค่าราก การแจกแจงแบบปกติ ไปจนถึงการคำนวณเงินทศนิยมแน่นอน ถูกพัฒนาขึ้นบน Rust Standard Library (std) ทั้งหมด:
- ระยะเวลาการคอมไพล์ที่รวดเร็วในระดับมิลลิวินาที
- ตรวจสอบโค้ด (Audit) ได้อย่างโปร่งใส 100% เหมาะสำหรับสถาบันการเงินที่ต้องปฏิบัติตามกฎระเบียบ
- นำไปปรับใช้บน WebAssembly, เครื่องฝังตัว (Embedded devices), และ Sandbox Container ที่จำกัดสิทธิ์ได้อย่างง่ายดาย
2. ความถูกต้องเทียบเท่า QuantLib (QuantLib Parity)
QuantLib เป็นไลบรารีอ้างอิงหลักในอุตสาหกรรมการเงินเชิงปริมาณมากว่าสองทศวรรษ SabiQuant นำกฎเกณฑ์และกรณีทดสอบของ QuantLib มาใช้เทียบเคียงเพื่อความถูกต้องเชิงตัวเลขที่ตรงกัน:
- อนุสัญญาการนับวัน (Day Count Conventions) ตามมาตรฐาน ISDA/ICMA
- ปฏิทินวันทำการของระบบ TARGET และตลาดแลกเปลี่ยน
- รูปแบบการประเมินราคาพันธบัตรและกลไกการคิดทบต้น
- การคำนวณช่วงเวลาเศษงวด (Stub periods) และการสร้างกระแสเงินสด
3. ระบบเงินที่แม่นยำและขอบเขตการชำระราคา (Exact Money & Settlement)
เลขทศนิยมลอยตัว (f64) มีข้อจำกัดเรื่องการปัดเศษของเลขฐานสอง ทำให้เสี่ยงต่อการเกิดข้อผิดพลาดในการทำบัญชีและการชำระเงิน SabiQuant จึงออกแบบสถาปัตยกรรมแบบแยกสองชั้น:
f64สำหรับการคำนวณเชิงวิเคราะห์ต่อเนื่อง: ใช้สำหรับการคำนวณผลตอบแทน ความผันผวน Duration และสมการอนุพันธ์ย่อยที่ต้องการความต่อเนื่องDecimalAmountสำหรับการชำระราคา: ระบบทศนิยมแน่นอนขนาด 128-bit รองรับความละเอียด 38 ตำแหน่ง พร้อมโหมดการปัดเศษมาตรฐาน 7 รูปแบบ ป้องกันเศษสตางค์คลาดเคลื่อนและกระทบยอดบัญชีได้ 100%
4. ปราศจากการจองหน่วยความจำที่ไม่จำเป็น (Zero Unnecessary Allocations)
ลูปการประเมินราคาใน SabiQuant ได้รับการออกแบบให้หลีกเลี่ยงการจัดสรรหน่วยความจำบน Heap ทำให้ได้ประสิทธิภาพที่คาดการณ์ได้และมีความหน่วงระดับต่ำกว่าไมโครวินาที (Sub-microsecond latency)