Розрахунок і експірація
На цій сторінці описано опціони на основній біржі Hypercall Exchange. Це опціони європейського типу з розрахунком грошима в USDC. На експірації позиції автоматично розраховуються за ціною розрахунку базового активу, і сума розрахунку зараховується на ваш рахунок або списується з нього.
Час експірації
| Базові активи | Час експірації |
|---|---|
| BTC, ETH | 08:00 UTC |
| Акції та індекси (SPCX, SP500, BOT, MU, NVDA, META, MSFT, AAPL, SNDK, BABA) | 20:00 UTC |
20:00 UTC відповідає 16:00 за нью-йоркським часом, коли в США діє літній час. Експірація зафіксована в UTC, тому не зсувається при переході на літній час.
На експірації:
- Нові заявки відхиляються
- Відкриті заявки скасовуються
- Позиції переходять у процес розрахунку
Рушій перевіряє наявність інструментів з минулою експірацією щохвилини.
Життєвий цикл інструмента
Інструменти проходять через три стани:
| Стан | Опис | Торгівля |
|---|---|---|
| Active | Звичайна торгівля | Увімкнена |
| Expired Pending Price | Очікування ціни розрахунку | Вимкнена |
| Settled | Розрахунок завершено, позиції закрито | Н/Д |
Переходи між станами
- Active → Expired Pending Price: настав час експірації контракту
- Expired Pending Price → Settled: ціна розрахунку доступна і всі позиції розраховано
Щойно інструмент переходить у стан Expired Pending Price, усі відкриті заявки скасовуються, а нові відхиляються з повідомленням "Instrument has expired".
Ціна розрахунку
Ціна розрахунку є стійким 30-хвилинним середнім ціни оракула Hyperliquid для базового активу, взятим за 30 хвилин, що закінчуються в момент експірації.
| Параметр | Значення |
|---|---|
| Джерело ціни | Ціна оракула Hyperliquid (oraclePx) для перпа базового активу. BTC і ETH використовують основні перпи Hyperliquid; акції та індекси використовують перпи HIP-3 xyz, наприклад xyz:NVDA. |
| Вікно | 30 хвилин, що закінчуються в час експірації |
| Вибірка | Кожне окреме оновлення оракула у вікні, за його часовою міткою Hyperliquid |
| Мінімум вибірок | 500 |
| Усереднення | Усічена медіана середніх |
Як обчислюється середнє
- Збір. Hypercall записує кожну нову ціну оракула, отриману між моментом за 30 хвилин до експірації і самою експірацією. Повторні зчитування того самого оновлення враховуються один раз, і нічого опублікованого після експірації не використовується.
- Усічення. Вибірки сортуються за ціною, верхні 5% і нижні 5% відкидаються.
- Групування. Решта цін розбивається приблизно на √n груп, і для кожної групи обчислюється середнє.
- Медіана цих групових середніх. Це і є ціна розрахунку.
Усічення і медіана середніх ускладнюють зсув ціни кількома аномальними принтами біля експірації, водночас ціна відображає все вікно.
Якщо вибірок недостатньо
Вікно з менш ніж 500 вибірками ніколи не використовується. Якщо власний запис Hypercall неповний (наприклад, після перезапуску всередині вікна), вікно відновлюється з архівної історії тієї самої ціни оракула Hyperliquid із тим самим мінімумом у 500 вибірок і тим самим усередненням. Якщо жодне джерело не має достатньо вибірок, інструмент лишається в стані Expired Pending Price, а розрахунок чекає. Hypercall не проводить розрахунок за неповним вікном або резервною ціною.
Це не те саме, що оцінка позицій під час збою оракула. Перевірки маржі та ліквідація й далі оцінюють позиції за останньою зафіксованою спотовою ціною, а заявки, що збільшують ризик, відхиляються, якщо цій ціні понад 30 секунд. Дивіться Режими відмов. Остання зафіксована ціна ніколи не використовується як ціна розрахунку.
Обчислення суми розрахунку
Розрахунок дорівнює внутрішній вартості опціону за ціною розрахунку:
Колл-опціони:
Пут-опціони:
Де:
- = ціна розрахунку
- = страйк
- = розмір позиції (зі знаком: додатний для лонга, від'ємний для шорта)
Опціони поза грошима (OTM) розраховуються за нулем і видаляються. Премія опціону сплачується грошима під час угоди, тому розрахунок переміщує лише внутрішню вартість. Це стосується рахунків як зі стандартною, так і з портфельною маржею.
Приклади
Довгий колл (ITM):
- Позиція: лонг 2 BTC-100000-C
- Ціна розрахунку: $105,000
- Внутрішня вартість: max(0, 105000 - 100000) = $5,000
- Сума розрахунку: 10,000** (зараховано)
Короткий колл (ITM):
- Позиція: шорт 2 BTC-100000-C
- Ціна розрахунку: $105,000
- Сума розрахунку: 10,000** (списано)
Довгий пут (OTM):
- Позиція: лонг 1 BTC-100000-P
- Ціна розрахунку: $105,000
- Внутрішня вартість: max(0, 100000 - 105000) = $0
- Сума розрахунку: $0 (спливає безвартісним)
Процес розрахунку
Під час розрахунку:
- Отримання ціни: фіналізована 30-хвилинна ціна розрахунку
- Обчислення суми: внутрішня вартість обчислюється для кожної позиції
- Рух коштів: усі опціони на один базовий актив з однаковою експірацією розраховуються одним пакетом, із неттингом по кожному рахунку
- Видалення позиції: позицію закрито і видалено з портфеля
- Надсилання події: повідомлення
PositionExpiredнадсилається в каналі WebSocketportfolio
Розрахунок обробляється з гарантіями ідемпотентності. Повторне відтворення або перезапуски не можуть спричинити подвійний розрахунок.
Хто платить, залежно від режиму маржі
- Стандартна маржа: рахунок, що винен за розрахунком, сплачує повну суму зі своїх коштів у Hypercall.
- Портфельна маржа: рахунок, що винен за розрахунком, спочатку сплачує зі своїх коштів у Hypercall, потім за рахунок позики з кредитного пулу PM. Усе, що пул не може профінансувати, стає відкладеним зобов'язанням, яке потрібно погасити протягом періоду виправлення. Див. Фінансування PM.
Якщо платник із портфельною маржею в пакеті не зміг заплатити повністю, рахунки, яким у цьому пакеті належать кошти, ділять зібрані кошти пропорційно, а решта записується як відкладена вимога, яка виплачується з відсотками в міру погашення боргу платником. Інструмент розраховується в будь-якому разі; він ніколи не зупиняється через неоплачене зобов'язання.
Події WebSocket
PositionExpired
Надсилається в каналі portfolio, коли позицію розраховано:
{
"type": "PositionExpired",
"wallet_address": "0x...",
"symbol": "BTC-20250131-100000-C",
"position_size": "2",
"settlement_price": "5000",
"settlement_value": "10000",
"settlement_entry_price": "3200",
"cost_basis": "6400",
"net_pnl": "3600",
"timestamp": 1738310400000
}
| Поле | Опис |
|---|---|
position_size | Розмір позиції зі знаком (додатний = лонг, від'ємний = шорт) |
settlement_price | Внутрішня вартість на один контракт |
settlement_value | Загальна сума грошового розрахунку |
settlement_entry_price | Ваша ціна входу на один контракт |
cost_basis | Собівартість позиції на момент розрахунку |
net_pnl | P&L розрахунку за вирахуванням собівартості, без урахування комісій |
Ринок експірував
Надсилається в каналі market_updates, коли настає експірація інструмента:
{
"type": "MarketUpdate",
"action": "Expired",
"symbol": "BTC-20250131-100000-C",
"strike": "100000",
"is_call": true,
"underlying": "BTC",
"expiry": 1738310400,
"timestamp": 1738310400000
}
Ендпоінти API
Список інструментів за статусом
GET /instruments?currency=BTC&status=EXPIRED_PENDING_PRICE
status за замовчуванням дорівнює ACTIVE. Передайте EXPIRED_PENDING_PRICE, SETTLED, список через кому або all.
Отримання виплат за розрахунком
GET /settlement-payouts?wallet=0x...
Повертає записи розрахунків для вашого рахунку. Необов'язкові параметри: symbol, ledger_applied, limit (за замовчуванням 50, максимум 100) і offset.
Відповідь:
{
"success": true,
"data": [
{
"id": 1,
"wallet": "0x...",
"symbol": "BTC-20250131-100000-C",
"expiry_ts": 1738310400,
"position_size": "2",
"settlement_price": "5000",
"settlement_value": "10000",
"settlement_entry_price": "3200",
"cost_basis": "6400",
"net_pnl": "3600",
"ledger_applied": true,
"is_seen": false,
"created_at": 1738310460000
}
],
"pagination": { "limit": 50, "offset": 0, "count": 1 },
"error": null
}
Обробка збоїв
Ціна розрахунку недоступна
Якщо ціну розрахунку не вдається фіналізувати на експірації:
- Інструмент лишається в стані
Expired Pending Price - Торгівля вже заблокована
- Рушій повторює спробу під час кожної перевірки експірації, раз на хвилину
- Кошти переміщуються лише після появи ціни розрахунку, що відповідає правилу 500 вибірок
Перезапуск системи
Стан розрахунку зберігається надійно. Якщо система перезапускається:
- Інструменти з минулою експірацією підхоплюються під час запуску
- Розрахунок продовжується автоматично
- Гарантії ідемпотентності запобігають подвійному розрахунку
Параметри
| Параметр | Значення | Опис |
|---|---|---|
| Інтервал перевірки експірації | 60 секунд | Як часто рушій перевіряє експірації і повторює відкладені розрахунки |
| Вікно розрахунку | 30 хвилин | Закінчується в час експірації |
| Мінімум вибірок | 500 | Якщо менше, вікно не використовується |
| Усічення | 5% з кожного хвоста | Відкидається перед усередненням |
Рекомендації
- Стежте за експіраціями: відстежуйте дати експірації своїх позицій через ендпоінт портфеля
- Плануйте наперед: закривайте позиції до експірації, якщо хочете уникнути розрахунку
- Стежте за останніми 30 хвилинами: ціна розрахунку визначається оракулом за це вікно, а не ціною в момент експірації
- Підпишіться на WebSocket: отримуйте події
PositionExpiredу реальному часі для миттєвого сповіщення - Тримайте запас маржі: майте достатньо коштів або маржі для можливих розрахунків за короткими позиціями у грошах (ITM)
Див. також:
- Ліквідація: що відбувається, якщо маржі недостатньо
- Портфельна маржа: як позиції впливають на маржу
- Фінансування PM: як рахунки з портфельною маржею сплачують розрахунок
- Стандартна маржа: обчислення маржі для кожної позиції