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

Кошти й позиції зберігаються в субакаунтах. Усередині субакаунта маржа спільна, а різні субакаунти ізольовані один від одного.

Субакаунти

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