Субаккаунты и маржа

Средства и позиции хранятся в субаккаунтах. Внутри субаккаунта маржа общая, а разные субаккаунты изолированы друг от друга.

Субаккаунты

  • Сколько и как создаются. До 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 ордера. Снимаются, если позиции для них больше нет.