Розробка системи фьючерсної торгівлі
Фьючерсна торгівля — це торгівля контрактами на майбутню ціну активу з використанням кредитного плеча. Для біржи це технічно найскладніший продукт: margin engine, ліквідаційна система, funding rate механізм, risk management — кожен компонент вимагає продуктивності, точності й стійкості до граничних случаїв. Помилка в розрахунках margin може привести до соціалізації убитків або неплатоспроможності біржи.
Типи фьючерсних контрактів
| Тип | Expiry | Settlement | Де застосовується |
|---|---|---|---|
| Quarterly futures | Фіксована дата | Cash або physical | CME, Deribit |
| Perpetual swaps | Немає | Mark price + funding | Binance, Bybit, dYdX |
| Inverse perpetuals | Немає | У базовому активі | Bitmex legacy, Bybit |
| Linear perpetuals | Немає | У stablecoin | Більшість CEX |
Perpetual swaps домінують на крипторинку. Відсутність експірації зручна для трейдерів, funding rate механізм тримає ціну контракту близько до spot.
Система Margin
Isolated margin: для кожної позиції виділяється окремий margin. Убиток обмежений виділеним залогом. Користувач не втратить весь аккаунт через одну позицію.
Cross margin: усі позиції використовують спільний баланс як обеспечення. Unrealized PnL від прибиткових позиції покривають убитки інших. Більш ефективне використання капіталу, але ризик повного дренажу аккаунта.
Розрахунок ліквідаційної ціни
Для long позиції в linear perpetual:
Liquidation price = Entry price * (1 - 1/leverage + maintenance_margin_rate)
Де maintenance_margin_rate (MMR) — мінімальний рівень margin, при якому позиція принудово закривається. Звичайно 0.5% для низького плеча, до 5% для плеча 100x.
Механізм Funding Rate
Назначение
Funding rate — періодичний платіж між holder-ами лонгів і шортів. Якщо perpetual торгується вище spot (contango), лонги платять шортам. Якщо нижче (backwardation) — шорти платять лонгам. Це прив'язує perpetual ціну до spot без експірації.
Binance-стилю формула
Impact Bid/Ask Price — volume-weighted ціна для $200k номіналу ордера в поточній order book.
Mark Price — маніпуляційно-захищена ціна для розрахунку unrealized PnL й ліквідацій.
Funding rate розраховується кожні 8 годин (стандарт) або 1 годину (Bybit).
Ліквідаційний рухавик
Рівні захисту
Level 1: Partial liquidation — закрити частину позиції для підвищення margin.
Level 2: Full liquidation — позиція повністю закривається ліквідаційним engine.
Level 3: Insurance fund — якщо ліквідаційна ціна гірше bankruptcy ціни, різниця покривається.
Level 4: Auto-Deleveraging (ADL) — якщо insurance fund недостатньо, принудово закривають найприбутковіші позиції.
Архітектура
Liquidation engine мониторить усі позиції в реальному часі. Виконує ~10,000+ перевірок відкритих позицій за <100ms.
Оптимізації:
- Позиції зберігаються в Redis sorted set, sorted за дистанцією до ліквідаційної ціни
- При зміні mark price обновляється лише delta — O(1) vs O(N) full scan
- Liquidation ордери йдуть в окрему priority queue
Система управління ризиками
Position Limits
Tiered leverage — стандартна практика. Крупні позиції не можуть використовувати високе плечо: занадто високий ризик для insurance fund при ліквідації.
Концентрація ризику
| Метрика | Поріг | Дія |
|---|---|---|
| Net open interest imbalance | >70% в одну сторону | Підвищити funding rate |
| Gross open interest | >$X по символу | Обмежити нові позиції |
| Single user concentration | >20% total OI | Manual review |
| Insurance fund drawdown | >50% за день | Зменшити макс. плечо |
Таймлайн розробки
Повна система perpetual futures: мінімум 6-9 місяців для команди з 4-6 backend інженерів. Основні ризики: помилки в розрахунку ліквідаційної ціни, race conditions у margin updates, затримки price feed при високій волатильності.







