決済と満期
このページでは、メインのHypercall Exchangeで取引されるオプションについて説明します。これらのオプションはヨーロピアン・スタイルで、USDCで現金決済されます。満期時には、ポジションは原資産の決済価格に基づいて自動的に決済され、決済価値がお客様の口座に入金または口座から出金されます。
満期時刻
| 原資産 | 満期時刻 |
|---|---|
| BTC, ETH | 08:00 UTC |
| 株式および指数 (SPCX, SP500, BOT, MU, NVDA, META, MSFT, AAPL, SNDK, BABA) | 20:00 UTC |
20:00 UTCは、米国の夏時間期間中はニューヨーク時間の午後4時にあたります。満期はUTCで固定されているため、夏時間によって変動することはありません。
満期時には次のことが起こります。
- 新規注文は拒否されます
- 未約定の注文はキャンセルされます
- ポジションは決済プロセスに入ります
エンジンは1分ごとに満期を迎えた銘柄をチェックします。
銘柄のライフサイクル
銘柄は3つの状態を順に移行します。
| 状態 | 説明 | 取引 |
|---|---|---|
| Active | 通常取引 | 可能 |
| Expired Pending Price | 決済価格の確定待ち | 停止 |
| Settled | 決済完了、ポジションはクローズ済み | 該当なし |
状態遷移
- ActiveからExpired Pending Priceへ: 契約の満期時刻に到達したとき
- Expired Pending PriceからSettledへ: 決済価格が確定し、すべてのポジションが決済されたとき
銘柄がExpired Pending Priceに入ると、すべての未約定注文はキャンセルされ、新規注文は"Instrument has expired"で拒否されます。
決済価格
決済価格は、満期時刻で終わる30分間における原資産のHyperliquidオラクル価格の頑健な平均値です。
| パラメータ | 値 |
|---|---|
| 価格ソース | 原資産のパーペチュアルのHyperliquidオラクル価格 (oraclePx)。BTCとETHはHyperliquidのメインのパーペチュアルを使用し、株式と指数はxyz HIP-3パーペチュアル (例: xyz:NVDA) を使用します。 |
| ウィンドウ | 30分間、満期時刻で終了 |
| サンプリング | ウィンドウ内のすべての個別のオラクル更新 (Hyperliquidのタイムスタンプ基準) |
| 最低サンプル数 | 500 |
| 平均化 | トリム済みの平均値の中央値 (median of means) |
平均の算出方法
- 収集。 Hypercallは、満期の30分前から満期までに観測された新しいオラクル価格をそれぞれ記録します。同じ更新を繰り返し読み取った場合は1回としてカウントし、満期以降に公表された価格は使用しません。
- トリム。 サンプルを価格順に並べ、上位5%と下位5%を除外します。
- グループ化。 残った価格をおよそ√n個のグループに分け、各グループの平均を求めます。
- 中央値の算出。 それらのグループ平均の中央値が決済価格となります。
トリムと平均値の中央値を用いることで、満期直前の少数の外れ値によって価格が動かされにくくなり、同時にウィンドウ全体の推移を反映できます。
サンプルが不足する場合
サンプル数が500未満のウィンドウは決して使用されません。Hypercall自身の記録が不足している場合 (例: ウィンドウ内での再起動後)、同じHyperliquidオラクル価格のアーカイブ履歴からウィンドウを再構築し、同じ500サンプルの最低基準と同じ平均化手法を適用します。どちらのソースにも十分なサンプルがない場合、銘柄はExpired Pending Priceのままとなり、決済は保留されます。Hypercallが不完全なウィンドウや代替価格で決済することはありません。
これは、オラクル停止中のポジションの評価方法とは別の話です。証拠金チェックと清算では、最後に記録された現物価格でポジションの評価が続けられ、その価格が30秒以上古くなるとリスクを増加させる注文は拒否されます。障害モードをご覧ください。最後に記録された価格が決済価格として使われることはありません。
決済価値の計算
決済は、決済価格におけるオプションの本質的価値で行われます。
コールオプション:
プットオプション:
各記号の意味:
- = 決済価格
- = 行使価格
- = ポジションサイズ (符号付き: ロングは正、ショートは負)
アウト・オブ・ザ・マネー (OTM) のオプションはゼロで決済され、削除されます。オプションのプレミアムは取引時に現金で支払われるため、決済で移動するのは本質的価値のみです。これは標準証拠金口座とポートフォリオ証拠金口座の両方に適用されます。
例
ロングコール (ITM):
- ポジション: BTC-100000-C を2枚ロング
- 決済価格: $105,000
- 本質的価値: max(0, 105000 - 100000) = $5,000
- 決済価値: 10,000** (入金)
ショートコール (ITM):
- ポジション: BTC-100000-C を2枚ショート
- 決済価格: $105,000
- 決済価値: 10,000** (出金)
ロングプット (OTM):
- ポジション: BTC-100000-P を1枚ロング
- 決済価格: $105,000
- 本質的価値: max(0, 100000 - 105000) = $0
- 決済価値: $0 (無価値で満期)
決済プロセス
決済が行われる際の流れは次のとおりです。
- 価格の取得: 確定した30分間の決済価格
- 価値の算出: 各ポジションの本質的価値を計算
- 資金の移動: 同じ原資産・同じ満期のすべてのオプションを1つのバッチとして決済し、口座ごとにネッティング
- ポジションの削除: ポジションはクローズされ、ポートフォリオから削除
- イベントの送信:
portfolioWebSocketチャネルでPositionExpiredメッセージを送信
決済は冪等性が保証された形で処理されます。リプレイや再起動によって二重決済が発生することはありません。
証拠金モード別の支払者
- 標準証拠金: 決済の支払い義務がある口座は、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 | 1契約あたりの本質的価値 |
settlement_value | 現金決済の総額 |
settlement_entry_price | 1契約あたりのエントリー価格 |
cost_basis | 決済時点のポジションの取得原価 |
net_pnl | 取得原価控除後の決済損益 (手数料を除く) |
銘柄の満期
銘柄が満期を迎えたときに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のままとなります - 取引はすでに停止されています
- エンジンは1分ごとの満期チェックのたびに再試行します
- 500サンプルのルールを満たす決済価格が存在して初めて資金が移動します
システムの再起動
決済状態は永続化されています。システムが再起動した場合:
- 満期を迎えた銘柄は起動時に検出されます
- 決済は自動的に継続されます
- 冪等性の保証により二重決済は防止されます
パラメータ
| パラメータ | 値 | 説明 |
|---|---|---|
| 満期チェック間隔 | 60秒 | エンジンが満期をチェックし、保留中の決済を再試行する頻度 |
| 決済ウィンドウ | 30分 | 満期時刻で終了 |
| 最低サンプル数 | 500 | これを下回る場合、そのウィンドウは使用されません |
| トリム | 両端それぞれ5% | 平均化の前に除外 |
ベストプラクティス
- 満期を監視する: ポートフォリオエンドポイントで保有ポジションの満期日を確認しましょう
- 事前に計画する: 決済を避けたい場合は、満期前にポジションをクローズしましょう
- 最後の30分間に注意する: 決済価格は満期の瞬間の価格ではなく、そのウィンドウ全体のオラクル価格で決まります
- WebSocketを購読する:
PositionExpiredイベントをリアルタイムで受信し、即座に通知を受け取りましょう - 証拠金に余裕を持たせる: ITMのショートポジションの決済に備え、十分な現金または証拠金を維持しましょう
関連項目:
- 清算: 証拠金が不足した場合の扱い
- ポートフォリオ証拠金: ポジションが証拠金に与える影響
- PMファイナンシング: ポートフォリオ証拠金口座による決済の支払い方法
- 標準証拠金: ポジションごとの証拠金計算