Ликвидация
Ликвидация защищает систему от аккаунтов, которые больше не могут выполнять свои маржинальные обязательства. Когда собственный капитал аккаунта опускается ниже поддерживающей маржи, процесс ликвидации передаёт позиции платёжеспособным контрагентам.
Условия срабатывания
Ликвидация запускается, когда аккаунт становится недостаточно обеспеченным:
Портфельная маржа:
Стандартная маржа:
Где поддерживающая маржа = собственный капитал − требуемая 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 для стандартных аккаунтов
- Нижний предел маржи: защитные пороги, влияющие на порог ликвидации