Розробка системи маржинальної торгівлі: isolated margin, ліквідації

Наша компанія спеціалізується на розробці маржинальної торгівлі, включаючи ізольовану маржу, крос-маржа, двигун ліквідацій, funding rate та insurance fund. При різкому русі ринку на 5% одночасна ліквідація сотень позицій може перевантажити двигун. Затримки в 200 мс призводять до прослизання на 1–2%

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Наша компанія спеціалізується на розробці маржинальної торгівлі, включаючи ізольовану маржу, крос-маржа, двигун ліквідацій, 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 та прозоре ціноутворення.