Розрахунок та експірація
Опціони на Hypercall є європейського стилю з розрахунком готівкою. На момент експірації позиції автоматично розраховуються на основі референсної ціни базового активу, а сума розрахунку зараховується на ваш рахунок або списується з нього.
Час експірації
В основній мережі контракти SpaceX (SPCX) експірують о 16:00 ET у дату їхньої експірації.
Тестнет наразі експірує о 08:00 UTC у дату експірації.
На момент експірації:
- Нові заявки відхиляються
- Відкриті заявки скасовуються
- Позиції входять у процес розрахунку
Життєвий цикл інструменту
Інструменти проходять через три стани:
| Стан | Опис | Торгівля |
|---|---|---|
| Active | Звичайна торгівля | Увімкнена |
| Expired Pending Price | Очікування ціни розрахунку від оракула | Вимкнена |
| Settled | Розрахунок завершено, позиції закриті | Н/Д |
Переходи між станами
- Active → Expired Pending Price: Досягнуто час експірації контракту
- Expired Pending Price → Settled: Ціна розрахунку доступна і всі позиції розраховані
Щойно інструмент входить у стан Expired Pending Price, усі відкриті заявки скасовуються, а нові заявки відхиляються з повідомленням "Instrument has expired".
Ціна розрахунку
Ціна розрахунку — це 30-хвилинний TWAP (Time-Weighted Average Price) індексної ціни Hyperliquid Oracle для базового активу.
| Параметр | Значення |
|---|---|
| Джерело ціни | Hyperliquid Oracle (індексна ціна) |
| Вікно TWAP | 30 хвилин |
| Кінець вікна | Час експірації контракту |
Оракул починає збирати вибірку за 30 хвилин до експірації та обчислює TWAP у момент експірації.
Для розрахунку потрібен фіналізований TWAP. Якщо ця фіналізована ціна недоступна на момент тіку експірації, інструмент залишається в стані Expired Pending Price і повторні спроби виконуються автоматично. Торгівля в цьому стані вже вимкнена, але зарахування та списання коштів здійснюються лише після появи фіналізованої ціни оракула.
Обчислення вартості розрахунку
Розрахунок обчислюється як внутрішня вартість опціону на момент експірації:
Колл-опціони:
Пут-опціони:
Де:
- = Ціна розрахунку (30-хвилинний TWAP)
- = Страйк
- = Розмір позиції (зі знаком: додатний для довгої позиції, від'ємний для короткої)
Приклади
Довга позиція, колл (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-хвилинний TWAP
- Обчислення вартості: Для кожної позиції обчислюється внутрішня вартість
- Оновлення балансу: Вартість розрахунку додається до балансу рахунку (довга позиція ITM) або віднімається з нього (коротка позиція ITM)
- Видалення позиції: Позиція закривається та видаляється з портфеля
- Надсилання події: Повідомлення
PositionExpiredнадсилається через WebSocket
Розрахунок обробляється атомарно для кожної позиції з гарантіями ідемпотентності. Повторні відтворення чи перезапуски не можуть спричинити подвійний розрахунок.
Події WebSocket
PositionExpired
Надсилається, коли позиція розрахована:
{
"type": "PositionExpired",
"wallet_address": "0x...",
"symbol": "BTC-20250131-100000-C",
"position_size": 2.0,
"settlement_price": 5000.0,
"settlement_value": 10000.0,
"timestamp": 1738310400000
}
| Поле | Опис |
|---|---|
position_size | Розмір позиції зі знаком (додатний = довга позиція, від'ємний = коротка) |
settlement_price | Внутрішня вартість на контракт |
settlement_value | Загальна сума розрахунку готівкою |
MarketExpired
Надсилається, коли інструмент переходить у стан Expired Pending Price:
{
"type": "MarketUpdate",
"symbol": "BTC-20250131-100000-C",
"status": "MARKET_EXPIRED",
"timestamp": 1738310400000
}
Ендпоінти API
Отримати статус інструменту
GET /instruments/{symbol}
Повертає поточний статус інструменту (ACTIVE, EXPIRED_PENDING_PRICE або SETTLED).
Отримати історію розрахунків
GET /settlement/history?wallet=0x...
Повертає записи розрахунків для вашого рахунку.
Відповідь:
{
"success": true,
"data": [
{
"symbol": "BTC-20250131-100000-C",
"position_size": 2.0,
"settlement_price": 5000.0,
"settlement_value": 10000.0,
"settled_at": 1738310400000
}
]
}
Обробка збоїв
Оракул недоступний
Якщо оракул не може надати ціну розрахунку на момент експірації:
- Інструмент залишається в стані
Expired Pending Price - Система повторює спроби кожні 30 секунд
- Спрацьовує сповіщення на продакшені, якщо очікування фіналізованої ціни триває довго
Торгівля блокується негайно в момент експірації незалежно від доступності оракула.
Затримка фіналізованої ціни
Якщо фіналізований TWAP затримується:
- Розрахунок затримується
- Система очікує фіналізовану ціну розрахунку від оракула
- Користувачі можуть бачити, що інструмент залишається в стані
Expired Pending Price - Розрахунок готівкою з'являється після того, як механізм повторних спроб застосує фіналізовану ціну
Перезапуск системи
Стан розрахунку зберігається в базі даних. Якщо система перезапускається:
- Експіровані інструменти визначаються з БД під час запуску
- Розрахунок продовжується автоматично
- Гарантії ідемпотентності запобігають подвійному розрахунку
Параметри
| Параметр | Значення | Опис |
|---|---|---|
| Інтервал перевірки експірації | 60 секунд | Як часто система перевіряє експірації |
| Вікно TWAP | 30 хвилин | Вікно усереднення ціни розрахунку |
| Інтервал повторних спроб розрахунку | 30 секунд | Частота повторних спроб, коли ціна недоступна |
| Поріг сповіщення про фіналізовану ціну | 30 хвилин | Попередження, якщо експірований інструмент усе ще очікує фіналізовану ціну |
| Поріг сповіщення про незавершені виплати | 1 година | Критичне сповіщення, якщо записи виплат розрахунку залишаються незастосованими |
Найкращі практики
- Відстежуйте експірації: Стежте за датами експірації ваших позицій через ендпоінт портфеля
- Плануйте заздалегідь: Закривайте позиції до експірації, якщо хочете уникнути розрахунку
- Перевіряйте ціни розрахунку: Переконайтеся, що ціна оракула відповідає вашим очікуванням
- Підпишіться на WebSocket: Отримуйте події
PositionExpiredу реальному часі для негайного сповіщення - Підтримуйте маржинальний буфер: Забезпечте достатню маржу для потенційних розрахунків коротких позицій ITM
Ончейн-розрахунок
В основній мережі ціни розрахунку публікуються ончейн після обчислення:
- Оракул обчислює TWAP розрахунку та публікує фінальну ціну експірації.
- Контракт Exchange може верифікувати опубліковану ціну розрахунку ончейн.
- Живі стрічки оракула не транслюються ончейн. Фінальні ціни розрахунку є ончейн-референсом для експірації.
Див. також:
- Ліквідація: Що станеться, якщо маржа недостатня
- Портфельна маржа: Як позиції впливають на маржу
- Стандартна маржа: Обчислення маржі для окремої позиції