このページは機械翻訳されています。英語の原文が正式版です。 英語で読む
メインコンテンツにスキップ

決済と満期

Hypercallのオプションはヨーロピアンスタイルで、現金決済されます。満期時、ポジションは原資産の参照価格に基づいて自動的に決済され、決済価値がアカウントに入金または引き落としされます。

満期時刻

メインネットでは、SpaceX(SPCX)契約は満期日の米国東部時間(ET)午後4時に満期を迎えます。

テストネットは現在、満期日の08:00 UTC に満期を迎えます。

満期時:

  • 新規注文は拒否されます
  • 未約定注文はキャンセルされます
  • ポジションは決済プロセスに入ります

銘柄のライフサイクル

銘柄は3つの状態を経て進行します:

状態説明取引
Active通常取引有効
Expired Pending Priceオラクルからの決済価格待ち無効
Settled決済完了、ポジションクローズ済みN/A

状態遷移

  1. Active → Expired Pending Price: 契約の満期時刻に到達
  2. Expired Pending Price → Settled: 決済価格が利用可能となり、すべてのポジションが決済済み

銘柄が Expired Pending Price に入ると、すべての未約定注文はキャンセルされ、新規注文は "Instrument has expired" とともに拒否されます。

決済価格

決済価格は、原資産のHyperliquid Oracleインデックス価格の30分TWAP(時間加重平均価格)です。

パラメータ
価格ソースHyperliquid Oracle(インデックス価格)
TWAPウィンドウ30分
ウィンドウ終了契約の満期時刻

オラクルは満期の30分前からサンプリングを開始し、満期時刻にTWAPを計算します。

決済には確定済みのTWAPが必要です。満期ティック時点で確定価格が利用できない場合、銘柄は Expired Pending Price のままとなり、自動的にリトライされます。この状態ではすでに取引は無効化されていますが、現金の入金および引き落としは、確定したオラクル価格が存在した後にのみ計上されます。

決済価値の計算

決済は、満期時点のオプションの本質的価値として計算されます:

コールオプション:

決済価値=max(0,SK)×Q\text{決済価値} = \max(0, S - K) \times Q

プットオプション:

決済価値=max(0,KS)×Q\text{決済価値} = \max(0, K - S) \times Q

ここで:

  • SS = 決済価格(30分TWAP)
  • KK = 行使価格
  • QQ = ポジションサイズ(符号付き: ロングは正、ショートは負)

ロングコール(ITM):

  • ポジション: BTC-100000-C を2枚ロング
  • 決済価格: $105,000
  • 本質的価値: max(0, 105000 - 100000) = $5,000
  • 決済価値: 5,000×2=+5,000 × 2 = **+10,000**(入金)

ショートコール(ITM):

  • ポジション: BTC-100000-C を2枚ショート
  • 決済価格: $105,000
  • 決済価値: 5,000×2=5,000 × -2 = **-10,000**(引き落とし)

ロングプット(OTM):

  • ポジション: BTC-100000-P を1枚ロング
  • 決済価格: $105,000
  • 本質的価値: max(0, 100000 - 105000) = $0
  • 決済価値: $0(無価値で満期)

決済プロセス

決済が行われる際:

  1. 価格取得: オラクルが30分TWAPを返します
  2. 価値計算: 各ポジションの本質的価値が計算されます
  3. 現金更新: 決済価値がアカウント残高に加算(ITMロング)または減算(ITMショート)されます
  4. ポジション削除: ポジションはクローズされ、ポートフォリオから削除されます
  5. イベント送信: 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}

銘柄の現在のステータス(ACTIVEEXPIRED_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時間決済支払いレコードが未適用のままの場合の重大アラート

ベストプラクティス

  1. 満期を監視する: ポートフォリオエンドポイントを通じてポジションの満期日を追跡してください
  2. 事前に計画する: 決済を避けたい場合は、満期前にポジションをクローズしてください
  3. 決済価格を確認する: オラクル価格が期待どおりであることを検証してください
  4. WebSocketを購読する: リアルタイムの PositionExpired イベントを受信して即座に通知を受け取ってください
  5. 証拠金バッファを維持する: ITMのショート決済に備えて十分な証拠金を確保してください

オンチェーン決済

メインネットでは、決済価格は計算後にオンチェーンに投稿されます:

  • オラクルが決済TWAPを計算し、最終的な満期価格を公開します。
  • Exchangeコントラクトは、投稿された決済価格をオンチェーンで検証できます。
  • ライブのオラクルフィードはオンチェーンにストリーミングされません。最終決済価格が満期におけるオンチェーンの参照値となります。

関連情報: