決済と満期
Hypercallのオプションはヨーロピアンスタイルで、現金決済されます。満期時、ポジションは原資産の参照価格に基づいて自動的に決済され、決済価値がアカウントに入金または引き落としされます。
満期時刻
メインネットでは、SpaceX(SPCX)契約は満期日の米国東部時間(ET)午後4時に満期を迎えます。
テストネットは現在、満期日の08:00 UTC に満期を迎えます。
満期時:
- 新規注文は拒否されます
- 未約定注文はキャンセルされます
- ポジションは決済プロセスに入ります
銘柄のライフサイクル
銘柄は3つの状態を経て進行します:
| 状態 | 説明 | 取引 |
|---|---|---|
| Active | 通常取引 | 有効 |
| Expired Pending Price | オラクルからの決済価格待ち | 無効 |
| Settled | 決済完了、ポジションクローズ済み | N/A |
状態遷移
- Active → Expired Pending Price: 契約の満期時刻に到達
- Expired Pending Price → Settled: 決済価格が利用可能となり、すべてのポジションが決済済み
銘柄が Expired Pending Price に入ると、すべての未約定注文はキャンセルされ、新規注文は "Instrument has expired" とともに拒否されます。
決済価格
決済価格は、原資産のHyperliquid Oracleインデックス価格の30分TWAP(時間加重平均価格)です。
| パラメータ | 値 |
|---|---|
| 価格ソース | Hyperliquid Oracle(インデックス価格) |
| TWAPウィンドウ | 30分 |
| ウィンドウ終了 | 契約の満期時刻 |
オラクルは満期の30分前からサンプリングを開始し、満期時刻にTWAPを計算します。
決済には確定済みのTWAPが必要です。満期ティック時点で確定価格が利用できない場合、銘柄は Expired Pending Price のままとなり、自動的にリトライされます。この状態ではすでに取引は無効化されていますが、現金の入金および引き落としは、確定したオラクル価格が存在した後にのみ計上されます。
決済価値の計算
決済は、満期時点のオプションの本質的価値として計算されます:
コールオプション:
プットオプション:
ここで:
- = 決済価格(30分TWAP)
- = 行使価格
- = ポジションサイズ(符号付き: ロングは正、ショートは負)
例
ロングコール(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分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のままに見える場合があります - 現金決済は、リトライパスが確定価格を適用した後に反映されます
システム再起動
決済状態はデータベースに永続化されます。システムが再起動した場合:
- 起動時にDBから満期済み銘柄が特定されます
- 決済は自動的に継続されます
- 冪等性の保証により二重決済が防止されます
パラメータ
| パラメータ | 値 | 説明 |
|---|---|---|
| 満期チェック間隔 | 60秒 | システムが満期を確認する頻度 |
| TWAPウィンドウ | 30分 | 決済価格の平均化ウィンドウ |
| 決済リトライ間隔 | 30秒 | 価格が利用できない場合のリトライ頻度 |
| 確定価格アラート閾値 | 30分 | 満期済み銘柄がまだ確定価格を待っている場合の警告 |
| 支払い保留アラート閾値 | 1時間 | 決済支払いレコードが未適用のままの場合の重大アラート |
ベストプラクティス
- 満期を監視する: ポートフォリオエンドポイントを通じてポジションの満期日を追跡してください
- 事前に計画する: 決済を避けたい場合は、満期前にポジションをクローズしてください
- 決済価格を確認する: オラクル価格が期待どおりであることを検証してください
- WebSocketを購読する: リアルタイムの
PositionExpiredイベントを受信して即座に通知を受け取ってください - 証拠金バッファを維持する: ITMのショート決済に備えて十分な証拠金を確保してください
オンチェーン決済
メインネットでは、決済価格は計算後にオンチェーンに投稿されます:
- オラクルが決済TWAPを計算し、最終的な満期価格を公開します。
- Exchangeコントラクトは、投稿された決済価格をオンチェーンで検証できます。
- ライブのオラクルフィードはオンチェーンにストリーミングされません。最終決済価格が満期におけるオンチェーンの参照値となります。
関連情報:
- 清算: 証拠金が不足した場合に何が起こるか
- ポートフォリオ証拠金: ポジションが証拠金に与える影響
- 標準証拠金: ポジションごとの証拠金計算