Цю сторінку перекладено автоматично. Оригінал англійською мовою є канонічним. Читати англійською →
Перейти к основному содержимому

Розрахунок і експірація

На цій сторінці описано опціони на основній біржі Hypercall Exchange. Це опціони європейського типу з розрахунком грошима в USDC. На експірації позиції автоматично розраховуються за ціною розрахунку базового активу, і сума розрахунку зараховується на ваш рахунок або списується з нього.

Час експірації​

Базові активиЧас експірації
BTC, ETH08: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Розрахунок завершено, позиції закритоН/Д

Переходи між станами​

  1. Active → Expired Pending Price: настав час експірації контракту
  2. 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
УсередненняУсічена медіана середніх

Як обчислюється середнє​

  1. Збір. Hypercall записує кожну нову ціну оракула, отриману між моментом за 30 хвилин до експірації і самою експірацією. Повторні зчитування того самого оновлення враховуються один раз, і нічого опублікованого після експірації не використовується.
  2. Усічення. Вибірки сортуються за ціною, верхні 5% і нижні 5% відкидаються.
  3. Групування. Решта цін розбивається приблизно на √n груп, і для кожної групи обчислюється середнє.
  4. Медіана цих групових середніх. Це і є ціна розрахунку.

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

Якщо вибірок недостатньо​

Вікно з менш ніж 500 вибірками ніколи не використовується. Якщо власний запис Hypercall неповний (наприклад, після перезапуску всередині вікна), вікно відновлюється з архівної історії тієї самої ціни оракула Hyperliquid із тим самим мінімумом у 500 вибірок і тим самим усередненням. Якщо жодне джерело не має достатньо вибірок, інструмент лишається в стані Expired Pending Price, а розрахунок чекає. Hypercall не проводить розрахунок за неповним вікном або резервною ціною.

Це не те саме, що оцінка позицій під час збою оракула. Перевірки маржі та ліквідація й далі оцінюють позиції за останньою зафіксованою спотовою ціною, а заявки, що збільшують ризик, відхиляються, якщо цій ціні понад 30 секунд. Дивіться Режими відмов. Остання зафіксована ціна ніколи не використовується як ціна розрахунку.

Обчислення суми розрахунку​

Розрахунок дорівнює внутрішній вартості опціону за ціною розрахунку:

Колл-опціони:

Сума розрахунку=max⁡(0,S−K)×Q\text{Сума розрахунку} = \max(0, S - K) \times Q

Пут-опціони:

Сума розрахунку=max⁡(0,K−S)×Q\text{Сума розрахунку} = \max(0, K - S) \times Q

Де:

  • SS = ціна розрахунку
  • KK = страйк
  • QQ = розмір позиції (зі знаком: додатний для лонга, від'ємний для шорта)

Опціони поза грошима (OTM) розраховуються за нулем і видаляються. Премія опціону сплачується грошима під час угоди, тому розрахунок переміщує лише внутрішню вартість. Це стосується рахунків як зі стандартною, так і з портфельною маржею.

Приклади​

Довгий колл (ITM):

  • Позиція: лонг 2 BTC-100000-C
  • Ціна розрахунку: $105,000
  • Внутрішня вартість: max(0, 105000 - 100000) = $5,000
  • Сума розрахунку: 5,000×2=∗∗+5,000 × 2 = **+10,000** (зараховано)

Короткий колл (ITM):

  • Позиція: шорт 2 BTC-100000-C
  • Ціна розрахунку: $105,000
  • Сума розрахунку: 5,000×−2=∗∗−5,000 × -2 = **-10,000** (списано)

Довгий пут (OTM):

  • Позиція: лонг 1 BTC-100000-P
  • Ціна розрахунку: $105,000
  • Внутрішня вартість: max(0, 100000 - 105000) = $0
  • Сума розрахунку: $0 (спливає безвартісним)

Процес розрахунку​

Під час розрахунку:

  1. Отримання ціни: фіналізована 30-хвилинна ціна розрахунку
  2. Обчислення суми: внутрішня вартість обчислюється для кожної позиції
  3. Рух коштів: усі опціони на один базовий актив з однаковою експірацією розраховуються одним пакетом, із неттингом по кожному рахунку
  4. Видалення позиції: позицію закрито і видалено з портфеля
  5. Надсилання події: повідомлення PositionExpired надсилається в каналі WebSocket portfolio

Розрахунок обробляється з гарантіями ідемпотентності. Повторне відтворення або перезапуски не можуть спричинити подвійний розрахунок.

Хто платить, залежно від режиму маржі​

  • Стандартна маржа: рахунок, що винен за розрахунком, сплачує повну суму зі своїх коштів у 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_pnlP&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% з кожного хвостаВідкидається перед усередненням

Рекомендації​

  1. Стежте за експіраціями: відстежуйте дати експірації своїх позицій через ендпоінт портфеля
  2. Плануйте наперед: закривайте позиції до експірації, якщо хочете уникнути розрахунку
  3. Стежте за останніми 30 хвилинами: ціна розрахунку визначається оракулом за це вікно, а не ціною в момент експірації
  4. Підпишіться на WebSocket: отримуйте події PositionExpired у реальному часі для миттєвого сповіщення
  5. Тримайте запас маржі: майте достатньо коштів або маржі для можливих розрахунків за короткими позиціями у грошах (ITM)

Див. також: