Rust'da murakkab arbitraj ijrosi: nanosekunddan atom multi-leglargacha
"Fyucherslar va spot o'rtasidagi murakkab arbitraj zanjirlari" seriyasining 6-qismi
Bir vaqtning o'zida beshta birjadan iborat orkestrni boshqarayotgan dirijyorni tasavvur qiling. Har bir asbob o'z qismini ijro etadi va birinchi notadan oxirgisigacha bir necha millisekunddan ortiq vaqt o'tmasligi kerak. Bitta noto'g'ri nota — va arbitraj imkoniyati zararga aylanadi: bir birjada leg bajarildi, boshqasida esa narx yo'qolib qoldi.
Bu "Fyucherslar va spot o'rtasidagi murakkab arbitraj zanjirlari" seriyasining oltinchi qismi bo'lib, u eng amaliysi hisoblanadi. Biz baytlar, kesh qatorlari va atom operatsiyalari darajasiga tushamiz.
Multi-leg arbitraj uchun ultra-past kechikishli ijro tizimining arxitekturasi: bozor ma'lumotlarini qabul qilishdan tortib buyurtmani 2-6 ms ichida jo'natishgacha.
1. Kechikishni optimallashtirish: yadrodan tashqarida
Submillisekund aniqlikka erishish uchun an'anaviy to'siqlarni chetlab o'tishimiz kerak.
1.1 io_uring va tarmoqni chetlab o'tish
io_uring foydalanuvchi maydoni va yadro o'rtasida umumiy xotira halqalari orqali asinxron I/O ni ta'minlaydi. Bir marta ishga tushirilgandan so'ng, bir nechta WebSocket'lardan o'qish kabi operatsiyalar nol tizim chaqiruvini talab qiladi.
use io_uring::IoUring;
struct UringReader {
ring: IoUring,
buffers: Vec<Vec<u8>>, // Pre-allocated buffers: one per exchange
}
1.2 simd-json va Zero-Copy deserializatsiya
Ko'pchilik birjalar JSON'dan foydalanadi. simd-json parallel tahlil qilish uchun SIMD ko'rsatmalaridan foydalanadi va standart parserlarga nisbatan 2-4 baravar tezlikni ta'minlaydi.
2. Qulfsiz order kitoblari: Mutex yo'q
HFT muhitida order kitobidagi Mutex katta to'siq hisoblanadi. Biz qulflarsiz qidiruv uchun crossbeam-skiplistdan foydalanamiz:
use std::sync::atomic::{AtomicU64, Ordering};
use crossbeam_skiplist::SkipMap;
struct PriceLevel {
price: AtomicU64,
total_qty: AtomicU64,
}
struct LockFreeOrderBook {
bids: SkipMap<Reverse<u64>, PriceLevel>,
asks: SkipMap<u64, PriceLevel>,
}
3. LMAX Disruptor: qulfsiz halqali bufer
Kesh qatoriga moslashtirilgan (64 bayt) oldindan ajratilgan halqali bufer ijro quvurining yuragi hisoblanadi. U bozor ma'lumotlarining OrderBook Updater, Strategy Engine va Risk Monitor orqali parallel va nusxasiz oqishiga imkon beradi.
4. Slippage modellashtirish: ishonch qatlamlari
Biz slippage'ni uchta qatlam yordamida modellashtiramiz:
- Lahzali LOB tahlili: Limit Order Book'ning real vaqt rejimidagi tahlili (mikrosekund).
- Kayl lambdasi: buyurtma oqimi birligiga to'g'ri keladigan narx ta'siri (millisekund).
- Amihud ILLIQ: uzoq muddatli likvidlikni kuzatish (kunlar).
5. Atom multi-leg ijrosi: Type-State namunasi
Multi-leg arbitraj strategiyasi hech qachon atom bo'lmaydi. Bitta leg bajarilishi mumkin, boshqalari esa muvaffaqiyatsiz bo'lishi mumkin. Noto'g'ri holat o'tishlarini kompilyatsiya vaqtida xatolikka aylantirish uchun biz Rust'ning Type-State Pattern usulidan foydalanamiz.
// States as types. Invalid transitions won't compile.
struct Idle;
struct Validating;
struct ExecutingLeg;
struct FullyFilled;
struct RollingBack;
struct Execution<State> {
trade_id: u64,
legs: Vec<TradeLeg>,
_state: PhantomData<State>,
}
6. Xavflarni boshqarish: Kill Switch va Circuit Breaker
Uch bosqichli circuit breaker tizimni bozordagi halokatli harakatlardan himoya qiladi:
- Paused: mahalliy volatillik sakrashlari uchun 5 daqiqalik pauza.
- Halted: 1 soatlik katta tushishlar uchun 15 daqiqalik to'xtatish.
- Shutdown: agar BTC 24 soat ichida 20% tushsa, tizimning to'liq o'chirilishi.
7. Unumdorlik byudjeti
Optimallashtirilgan Rust kodi bilan bizning kechikish byudjetimiz quyidagicha ko'rinadi:
- Network In (AWS ap-northeast-1): 0,5 - 2 ms
- Parsing/OrderBook: 2 - 10 mks
- Strategy/Risk: 5 - 15 mks
- Network Out: 0,5 - 2 ms JAMI: 2 - 6 ms
Xulosa
Rust murakkab arbitraj ijrosi uchun mukammal til hisoblanadi. U C++ ning quyi darajadagi nazoratini moliyaviy tizimlar uchun zarur bo'lgan xavfsizlik kafolatlari bilan birga taqdim etadi.
Shu bilan bizning "Murakkab arbitraj zanjirlari" seriyamiz yakunlanadi. Graf algoritmlari va kopulalardan tortib mashinali o'rganish va nanosekund ijrosigacha, endi sizda professional darajadagi kriptovalyuta arbitraj tizimini qurish uchun to'liq reja mavjud.
Katta miqyosda ijro etishga tayyormisiz? Bizning GitHub'dagi HFT Execution Engine loyihamizni klonlang.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.