本页由机器翻译。英文原文为权威版本。 阅读英文版
跳转到主要内容

结算与到期

Hypercall 上的期权为欧式期权,采用现金结算。到期时,头寸将根据标的资产的参考价格自动结算,结算价值将记入或扣除您的账户。

到期时间

主网上,SpaceX(SPCX)合约在其到期日的美东时间下午 4:00 到期。

测试网目前在到期日的 UTC 时间 08:00 到期。

到期时:

  • 新订单将被拒绝
  • 未成交订单将被取消
  • 头寸进入结算流程

合约生命周期

合约会经历三种状态:

状态描述交易
Active(活跃)正常交易启用
Expired Pending Price(已到期待定价)等待预言机提供结算价格禁用
Settled(已结算)结算完成,头寸已关闭不适用

状态转换

  1. Active → Expired Pending Price:达到合约到期时间
  2. Expired Pending Price → Settled:结算价格可用且所有头寸均已结算

一旦合约进入 Expired Pending Price 状态,所有未成交订单将被取消,新订单将被拒绝并返回 "Instrument has expired"

结算价格

结算价格为标的资产的 Hyperliquid 预言机指数价格的 30 分钟 TWAP(时间加权平均价格)。

参数
价格来源Hyperliquid 预言机(指数价格)
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):

  • 头寸:做多 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 分钟 TWAP
  2. 计算价值:为每个头寸计算内在价值
  3. 更新现金:结算价值加入(多头实值 ITM)或从账户余额中扣除(空头实值 ITM)
  4. 移除头寸:头寸被关闭并从投资组合中移除
  5. 发出事件:通过 WebSocket 发送 PositionExpired 消息

每个头寸的结算以原子方式处理,并具有幂等性保证。重放或重启不会导致重复结算。

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_PRICESETTLED)。

获取结算历史

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 小时结算付款记录仍未应用时发出严重告警

最佳实践

  1. 监控到期日:通过投资组合端点跟踪您头寸的到期日
  2. 提前规划:如果您希望避免结算,请在到期前平仓
  3. 核对结算价格:验证预言机价格是否符合您的预期
  4. 订阅 WebSocket:实时接收 PositionExpired 事件以获得即时通知
  5. 保持保证金缓冲:确保有足够的保证金应对潜在的实值(ITM)空头结算

链上结算

在主网上,结算价格计算完成后会发布到链上:

  • 预言机计算结算 TWAP 并发布最终到期价格。
  • Exchange 合约可以在链上验证已发布的结算价格。
  • 实时预言机数据不会流式传输到链上。最终结算价格是到期时的链上参考依据。

另请参阅: