Ліквідація
Ліквідація захищає систему від акаунтів, які більше не можуть виконувати свої маржинальні зобов'язання. Коли власний капітал акаунта падає нижче його підтримуючих маржинальних вимог, процес ліквідації передає позиції платоспроможним контрагентам.
Умови спрацювання
Ліквідація спрацьовує, коли акаунт стає збитковим (underwater):
Портфельна маржа:
Стандартна маржа:
Де підтримуюча маржа = власний капітал - необхідна MM.
Система безперервно опитує всі акаунти з позиціями для перевірки їхнього стану.
Машина станів
Акаунти проходять через чотири стани ліквідації:
| Стан | Опис | Обмеження на ордери |
|---|---|---|
| Healthy | Власний капітал > необхідна MM | Немає |
| PreLiquidation | Власний капітал < MM, діє пільговий період | Ордери, що збільшують ризик, заблоковані |
| InLiquidation | Аукціон триває | Усі ордери заблоковані |
| Liquidated | Аукціон завершено | Акаунт очищено |
Переходи між станами
- Healthy → PreLiquidation: акаунт падає нижче порогу MM
- PreLiquidation → Healthy: акаунт відновлюється вище MM (користувач додав кошти або закрив позиції)
- PreLiquidation → InLiquidation: пільговий період закінчується без відновлення
- InLiquidation → Liquidated: аукціон успішно завершується
Пільговий період перед ліквідацією
Коли акаунт входить у стан передліквідації:
- Ордери, що збільшують ризик, блокуються негайно
- Ордери, що зменшують ризик (закриття позицій), залишаються дозволеними
- Починається 60-секундний пільговий період
- Якщо акаунт відновлюється (власний капітал > MM) до закінчення пільгового періоду, він повертається в стан Healthy
- Якщо після пільгового періоду акаунт все ще збитковий, починається ліквідаційний аукціон
Пільговий період дає користувачам час, щоб:
- Внести додаткове забезпечення
- Закрити позиції для зменшення маржинальних вимог
- Відреагувати на раптові рухи ринку
Ліквідаційний аукціон
Коли пільговий період закінчується, починається голландський аукціон:
Платоспроможний аукціон (власний капітал > 0)
Початкова ціна = власний капітал × (1 - штраф), яка зменшується з часом.
Ліквідатори роблять ставки, щоб взяти на себе позиції акаунта в обмін на:
- Власний капітал акаунта (мінус штраф)
- Відповідальність за всі позиції
Штраф створює стимул для участі ліквідаторів.
Неплатоспроможний аукціон (власний капітал < 0)
Якщо акаунт неплатоспроможний (від'ємний власний капітал), страховий фонд надає бонус, щоб стимулювати ліквідаторів поглинути збиткові позиції.
Передача позицій
Коли ліквідація завершується:
- Усі позиції передаються від ліквідованого акаунта до ліквідатора
- Ліквідатор отримує (для платоспроможного) або сплачує (отримує бонус для неплатоспроможного) вартість розрахунку
- Маржинальний корінь оновлюється в блокчейні
- Стан акаунта переходить у
Liquidated
Часткова та повна ліквідація
| Тип | Умова | Поведінка |
|---|---|---|
| Часткова | ≤ 5 позицій | Ліквідація окремих позицій до відновлення MM |
| Повна | > 5 позицій | Ліквідація всього акаунта |
Часткова ліквідація детермінована:
- Позиції впорядковуються за послідовним алгоритмом (не випадково)
- Ліквідатор отримує позиції у визначеному порядку
- Процес зупиняється, коли акаунт повертається до здорового стану
Каскад неплатоспроможності
Коли ліквідація не може відновити повну вартість, збитки поглинаються в такому порядку:
- Власний капітал акаунта: ліквідований користувач поглинає збиток у межах свого власного капіталу
- Страховий фонд: покриває дефіцит, якщо власного капіталу недостатньо
- ADL (автоматичне делеверіджування): якщо страховий фонд вичерпано, прибуткові контрагенти делеверіджуються пропорційно
- Соціалізований збиток: останній рівень захисту (наразі не реалізовано)
Страховий фонд
Страховий фонд:
- Накопичується зі штрафів за ліквідацію
- Покриває неплатоспроможні ліквідації
- Поповнюється за рахунок торгових комісій та штрафів
- Має цільовий мінімальний резерв
ADL (автоматичне делеверіджування)
Якщо страховий фонд не може покрити збитки:
- Обираються контрагенти з прибутковими позиціями
- Позиції примусово закриваються за марк-ціною
- Пріоритет вибору надається найвищому прибутку та кредитному плечу
- Постраждалі користувачі отримують сповіщення
API-ендпоінти
Отримати статус ліквідації
GET /liquidation/status?wallet=0x...
Відповідь:
{
"success": true,
"data": {
"wallet": "0x...",
"state": "pre_liquidation",
"margin_mode": "portfolio",
"equity": "4500.00",
"mm_required": "5000.00",
"maintenance_margin": "-500.00",
"entered_pre_liq_at": 1737312000000,
"mm_shortfall": "500.00",
"auction_id": null
}
}
Отримати історію ліквідацій
GET /liquidation/history?wallet=0x...&limit=20
Повертає історію переходів між станами для акаунта.
Отримати публічну історію ліквідацій
GET /liquidations?limit=50
Повертає історію ліквідаційних переходів по всіх гаманцях, починаючи з найновіших. Ендпоінт є публічним і використовує курсорну пагінацію для ботів-ліквідаторів та інструментів моніторингу.
Параметри запиту
cursor: непрозорий курсор, повернутий попередньою сторінкою.limit: розмір сторінки, за замовчуванням50, максимум100.wallet: необов'язковий фільтр за гаманцем.statusабоstate: необов'язковий фільтр за станом ліквідаційного переходу. Допустимі значення:healthy,pre_liquidation,in_liquidationтаliquidated.margin_mode: необов'язковий фільтр за режимом маржі. Допустимі значення:standardтаportfolio.liquidation_mode: необов'язковий фільтр за режимом ліквідації. Допустимі значення:partialтаfull.
Відповідь: PublicLiquidationsResponse із записами ліквідаційних переходів та page.next_cursor для наступного запиту.
Отримати деталі аукціону
GET /liquidation/auction/{auction_id}
Повертає статус аукціону, позиції та деталі розрахунку.
Сповіщення через WebSocket
Зміни стану ліквідації транслюються в каналі liquidation:
{
"type": "LiquidationStateChange",
"wallet": "0x...",
"previous_state": "healthy",
"new_state": "pre_liquidation",
"equity": "4500.00",
"mm_required": "5000.00",
"shortfall": "500.00",
"auction_id": null,
"timestamp": 1737312000000
}
Підпишіться, щоб отримувати оновлення в реальному часі для вашого гаманця.
Параметри
| Параметр | Значення | Опис |
|---|---|---|
poll_interval | 5 секунд | Частота перевірки стану |
grace_period | 60 секунд | Час до початку аукціону |
min_shortfall_threshold | 0 | Мінімальний дефіцит для спрацювання передліквідації |
partial_liquidation_threshold | 5 позицій | Нижче цього значення використовується часткова ліквідація |
Найкращі практики
Для трейдерів
- Моніторте коефіцієнт маржі: тримайте власний капітал значно вище MM (рекомендовано буфер 2x)
- Налаштуйте сповіщення: використовуйте WebSocket для раннього виявлення передліквідації
- Тримайте резерв напоготові: майте запасне забезпечення, готове до внесення
- Використовуйте стоп-лоси: автоматизуйте зменшення позицій до ліквідації
Перевірка стану
Регулярно перевіряйте свій маржинальний статус:
# Portfolio margin
curl "https://api.hypercall.xyz/portfolio?wallet=0x..."
# Look for:
# - equity vs maintenance_margin_required
# - margin_ratio (equity / IM)
Відновлення протягом пільгового періоду
Якщо ви увійшли в стан передліквідації:
- Внесіть забезпечення через процедуру фінансування
- Закрийте позиції для зменшення маржинальних вимог
- Скасуйте відкриті ордери, які збільшують ризик
Дії, що зменшують ризик, завжди дозволені, навіть у стані передліквідації.
У блокчейні та поза блокчейном
| Компонент | Розташування | Примітки |
|---|---|---|
| Моніторинг стану | Поза блокчейном | Опитування кожні 5 секунд |
| Переходи між станами | Поза блокчейном | Логуються та зберігаються |
| Таймер пільгового періоду | Поза блокчейном | Конфігурується |
| Виконання аукціону | У блокчейні | Передача позицій через контракт Controller |
| Розрахунок | У блокчейні | Передача вартості та оновлення маржинального кореня |
Позаблокчейний рушій відповідає за виявлення та оркестрацію; виконання в блокчейні забезпечує фінальність розрахунку.
Див. також:
- Портфельна маржа: розрахунок MM для портфельних акаунтів
- Стандартна маржа: розрахунок MM для стандартних акаунтів
- Маржинальний мінімум: захисні мінімуми, що впливають на поріг ліквідації