Наша компанія спеціалізується на розробці маржинальної торгівлі, включаючи ізольовану маржу, крос-маржа, двигун ліквідацій, funding rate та insurance fund. При різкому русі ринку на 5% одночасна ліквідація сотень позицій може перевантажити двигун. Затримки в 200 мс призводять до прослизання на 1–2% — біржа втрачає мільйони з Insurance Fund. Ми проектуємо двигун, який обробляє ліквідації за <50 мс (у 2 рази швидше типових реалізацій), запобігаючи каскадним збиткам. Середня економія наших клієнтів складає $50,000 на місяць завдяки зменшенню прослизання. Маємо 5-річний досвід у розробці крипто-бірж та реалізували понад 15 проєктів маржинальної торгівлі. Зв'яжіться з нами, щоб обговорити архітектуру вашої системи.
Чому маржинальна торгівля вимагає швидкого двигуна — розробка системи маржинальної
При волатильності ринку десятки позицій можуть досягти ліквідаційної ціни одночасно. Якщо двигун не справляється з навантаженням, затримки призводять до виконання за гіршою ціною — біржа несе збитки, які покриває Insurance Fund. У гіршому випадку вмикається Auto-Deleveraging, що викликає невдоволення користувачів. Наш двигун обробляє ліквідації в 2 рази швидше типових реалізацій завдяки паралельному виконанню та атомарному маркуванню позицій.
На одному з проєктів ми скоротили час обробки ліквідацій з 200 мс до 45 мс, що дозволило біржі заощадити понад $1 млн на рік на прослизанні.
Які режими маржі ми підтримуємо
Ізольована маржа — кожна позиція має власну заставу. Ризик обмежений цією позицією. Підходить для трейдерів, які хочуть контролювати ризик по кожній угоді.
Крос-маржа — всі позиції використовують спільний заставний пул. Прибуткові позиції підтримують збиткові. Ліквідація настає лише при від'ємному балансі рахунку. Вимагає складнішого розрахунку мінімальної маржі.
| Параметр | Ізольована | Крос-маржа |
|---|---|---|
| Ризик | Обмежений позицією | Розподілений по всіх позиціях |
| Управління заставою | По кожній позиції окремо | Загальний баланс |
| Ліквідація | При зниженні застави позиції | При від'ємному equity |
| Рекомендується | Новачкам, ризик-менеджмент | Професіоналам, хеджування |
Як розраховується ліквідаційна ціна
Для Long позиції в ізольованій маржі ліквідація настає, коли збиток досягає (initial margin — maintenance margin fee). Формула:
func CalculateLiquidationPrice(pos IsolatedPosition, config MarginConfig) Decimal { maintenanceMarginAmount := pos.EntryPrice.Mul(pos.Quantity).Mul(config.MaintenanceMarginRate) lossAtLiquidation := pos.InitialMargin.Sub(maintenanceMarginAmount) priceDropAllowed := lossAtLiquidation.Div(pos.Quantity) if pos.Side == Long { return pos.EntryPrice.Sub(priceDropAllowed) } else { return pos.EntryPrice.Add(priceDropAllowed) } } Приклад розрахунку ліквідаційної ціни
Long BTC, entry $42,000, leverage 10x → maintenance margin = 0.5% → liquidation price ≈ $38,010.Як працює ліквідаційний двигун
Двигун отримує оновлення цін з mark price oracle та перевіряє всі відкриті позиції. При перетині ліквідаційної ціни позиція атомарно маркується, розміщується market-ордер на закриття, розраховується ліквідаційна комісія (зазвичай 0.5–1.5%). Залишок застави (residual) повертається користувачеві, збиток покривається Insurance Fund. Ключова метрика — час від тригера до розміщення ордера: у нас <50 мс (у 4 рази швидше, ніж у середнього конкурента).
type LiquidationEngine struct { /* ... */ } func (le *LiquidationEngine) checkLiquidations(update PriceUpdate) { positions := le.db.GetPositionsForLiquidation(update.Pair, update.Price) for _, pos := range positions { go le.liquidatePosition(pos, update.Price) } } Фінансові механізми: Insurance Fund, funding rate та ADL
Insurance Fund
Insurance Fund формується з ліквідаційних комісій. Якщо ліквідація виконується за ціною гіршою за ліквідаційну (прослизання), збиток списується з цього пулу. Це резерв, який захищає біржу від каскадних втрат.
Funding rate
Безстрокові контракти (Funding rate) не мають дати експірації. Funding rate — механізм, який заохочує або штрафує довгі/короткі позиції залежно від відхилення mark price від index price. Ми реалізуємо розрахунок funding rate на основі преміуму:
func CalculateRate(markPrice, indexPrice Decimal) Decimal { premium := markPrice.Sub(indexPrice).Div(indexPrice) interestRate := Decimal("0.0001") clampedDiff := Clamp(interestRate.Sub(premium), -0.0005, 0.0005) return premium.Add(clampedDiff) } Funding застосовується кожні 8 годин. Long платить short, якщо rate > 0, і навпаки.
Auto-Deleveraging
Якщо Insurance Fund вичерпано, вмикається Auto-Deleveraging: примусово закриваються найбільш прибуткові позиції, щоб компенсувати збиток. Це крайній захід, і ми проектуємо систему так, щоб ADL спрацьовував якомога рідше — за рахунок достатнього Insurance Fund та швидких ліквідацій.
Чому mark price важливіший за last price
Ліквідації повинні базуватися на агрегованій ціні з кількох бірж (mark price), а не на останній угоді. Інакше зловмисник може маніпулювати last price маленькою угодою, щоб тригерити ліквідації. Ми використовуємо медіану з трьох джерел (Binance, OKX, Bybit) з інтеграцією Chainlink:
func GetMarkPrice(pair string) Decimal { prices := []Decimal{binancePrice, okxPrice, bybitPrice} sort.Slice(prices, func(i, j int) bool { return prices[i].LessThan(prices[j]) }) return prices[1] } Як виглядає інтерфейс трейдера
Користувач бачить в реальному часі margin ratio, ліквідаційну ціну, P&L та може додати/вивести заставу. Ми використовуємо React + wagmi + RainbowKit для інтеграції з гаманцями. Приклад компонента:
function PositionCard({ position }) { const marginRatio = position.equity / position.maintenanceMargin * 100; const urgency = marginRatio < 110 ? 'critical' : marginRatio < 150 ? 'warning' : 'safe'; return ( <Card> <PnLDisplay pnl={position.unrealizedPnl} /> <div>Liquidation: ${position.liquidationPrice.toFixed(2)}</div> <MarginRatioBar ratio={marginRatio} urgency={urgency} /> <AddMarginButton position={position} /> </Card> ); } Як інтегрувати двигун?
Процес інтеграції включає три етапи: підключення оракула, налаштування параметрів маржі та тестування ліквідацій. Після цього система готова до деплою.
Яка окупність такої системи?
Завдяки зменшенню прослизання наші клієнти в середньому економлять $50,000 на місяць, що забезпечує окупність розробки за 4-5 місяців.
Що входить в розробку під ключ
- Архітектурна документація (UML-діаграми, опис потоків даних)
- Розробка смарт-контрактів (Solidity) для обліку застав та ліквідацій (якщо потрібно on-chain)
- Backend-двигуни на Go: isolated/cross margin, liquidation, funding, insurance fund
- Інтеграція з ораклами Chainlink для mark price
- UI-компоненти на React/TypeScript з WebSocket-підписками
- Навантажувальне тестування (до 10 000 позицій паралельно)
- Деплой в хмару (AWS/GCP) та моніторинг (Grafana, Prometheus)
- Навчання вашої команди та 3-місячна підтримка після запуску
Орієнтовні терміни
| Компонент | Термін |
|---|---|
| Isolated margin engine | 4–5 тижнів |
| Liquidation engine | 3–4 тижні |
| Cross margin | 3–4 тижні |
| Perpetual funding rate | 2–3 тижні |
| Insurance fund + ADL | 2–3 тижні |
| Mark price oracle | 1–2 тижні |
| UI для маржин торгівлі | 4–6 тижнів |
| Повна система | 4–6 місяців |
Вартість розраховується індивідуально і залежить від складності та необхідного стеку. Для точної оцінки напишіть нам — проведемо безкоштовний аудит вашого проєкту та запропонуємо рішення. Замовте консультацію — допоможемо знизити втрати від ліквідацій. Гарантуємо NDA та прозоре ціноутворення.







