Субаккаунты и маржа
Средства и позиции хранятся в субаккаунтах. Внутри субаккаунта маржа общая, а разные субаккаунты изолированы друг от друга.
Субаккаунты
- Сколько и как создаются. До 128 субаккаунтов на адрес. Субаккаунт создаётся при первом депозите.
- Субаккаунт 0. Используется по умолчанию: в него зачисляются депозиты по IBC без memo.
- Кросс-маржа внутри. Все позиции субаккаунта используют одно обеспечение: прибыль одной позиции поддерживает другую.
- Изоляция между субаккаунтами. Убыток или ликвидация в одном субаккаунте не затрагивает другие.
Маржа
| Величина | Как считается |
|---|---|
| Капитал (equity) | Обеспечение + нереализованный PnL по цене оракула + фандинг |
| Начальная маржа (IM) | Номинал позиции, делённый на плечо. Резервируется и под неисполненный остаток открывающих ордеров. Reduce-only ордера маржу не резервируют |
| Поддерживающая маржа (MM) | Номинал позиции, умноженный на ставку рынка: 0.5% для BTC и ETH, 1% для остальных |
Когда капитал субаккаунта опускается ниже суммарной MM, начинается ликвидация. Подробнее - в «Ликвидации, ADL и страховой фонд».
Плечо
- Выбор. Плечо выбирается в каждом ордере, до максимума рынка (сейчас 10x).
- Добавление к позиции. Объём, вход и маржа объединяются, плечо пересчитывается.
- Частичное закрытие. Освобождает маржу пропорционально, плечо не меняется.
Изменение маржи позиции
Через MsgAdjustMargin маржу позиции можно добавить или снять:
- Добавить можно в пределах свободного обеспечения. Плечо снижается, позиция становится устойчивее.
- Снять можно, только если капитал субаккаунта выше MM, а новое плечо не превышает максимум рынка.
Маржа от открытого интереса
Governance может задать для рынка два порога открытого интереса:
- Ниже нижнего порога действует обычная начальная маржа.
- Между порогами она линейно растёт.
- На верхнем пороге она равна 100%, то есть плечо 1x.
Так крупный открытый интерес требует больше обеспечения. Пока пороги не заданы, механизм выключен.
Вывод и переводы
- Сколько можно вывести. Капитал минус большее из двух: MM или IM позиций. При этом выводится не больше обеспечения, не занятого под открытые ордера.
- Когда вывод невозможен. Если капитал не выше MM, а также пока по одной из позиций нет свежей цены или её пара закрыта оракулом (пауза или circuit breaker).
- Переводы. Для переводов между своими субаккаунтами действуют те же правила.
- Пауза после банкротства. Если в сети обанкротился любой субаккаунт с дефицитом от 0.1 USDC, выводы и переводы во всей сети замораживаются на 50 блоков (~42 с). Так дефицит успевают покрыть до того, как средства уйдут из системы.
Закрытие позиции
MsgClosePosition отправляет рыночный reduce-ордер через книгу. Одно закрытие исполняет до 10 сделок. Если позиция больше, остаток остаётся открытым, и закрытие повторяют.
Автоматическое снятие ордеров
В конце каждого блока протокол снимает ордера, на которые не хватает маржи:
- Открывающие ордера. Если обеспечение субаккаунта за вычетом нереализованного убытка меньше IM позиций плюс резерв под ордера, снимаются все его открывающие ордера. Если у позиции нет свежей цены, а её пара не закрыта оракулом, снятие откладывается до свежей цены.
- Reduce-only ордера. Снимаются, если позиции для них больше нет.