本页为简体中文译文。如有歧义,请以英文原文为准。 阅读英文版 →
跳转到主要内容

结算与到期

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,S−K)×Q\text{结算价值} = \max(0, S - K) \times Q

看跌期权:

结算价值=max⁡(0,K−S)×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}

返回合约的当前状态(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 状态
  • 重试流程应用最终价格后,现金结算才会出现

系统重启​

结算状态会持久化到数据库。如果系统重启:

  • 启动时从数据库识别已到期的合约
  • 结算自动继续
  • 幂等性保证防止重复结算

参数​

参数值描述
到期检查间隔60 秒系统检查到期的频率
TWAP 窗口30 分钟结算价格平均窗口
结算重试间隔30 秒价格不可用时的重试频率
最终价格告警阈值30 分钟已到期合约仍在等待最终价格时发出警告
待付款项告警阈值1 小时结算付款记录仍未应用时发出严重告警

最佳实践​

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

链上结算​

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

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

另请参阅: