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