结算与到期
本页介绍 Hypercall 主交易所上的期权。这些期权为欧式期权,以 USDC 现金结算。到期时,持仓按标的资产的结算价格自动结算,结算金额计入您的账户或从您的账户中扣除。
到期时间
| 标的资产 | 到期时间 |
|---|---|
| BTC、ETH | 08:00 UTC |
| 股票与指数(SPCX、SP500、BOT、MU、NVDA、META、MSFT、AAPL、SNDK、BABA) | 20:00 UTC |
在美国夏令时期间,20:00 UTC 为纽约时间下午 4:00。到期时间以 UTC 固定,不随夏令时变化。
到期时:
- 新订单被拒绝
- 未成交订单被取消
- 持仓进入结算流程
引擎每分钟检查一次已到期的合约。
合约生命周期
合约依次经历三种状态:
| 状态 | 说明 | 交易 |
|---|---|---|
| Active | 正常交易 | 开放 |
| Expired Pending Price | 等待结算价格 | 关闭 |
| Settled | 结算完成,持仓已平 | 不适用 |
状态转换
- Active 到 Expired Pending Price:到达合约到期时间
- Expired Pending Price 到 Settled:结算价格可用且所有持仓已结算
合约一旦进入 Expired Pending Price,所有未成交订单将被取消,新订单将被拒绝并返回 "Instrument has expired"。
结算价格
结算价格是标的资产 Hyperliquid 预言机价格在截至到期时刻的 30 分钟内的稳健均值。
| 参数 | 取值 |
|---|---|
| 价格来源 | 标的资产对应永续合约的 Hyperliquid 预言机价格(oraclePx)。BTC 和 ETH 使用 Hyperliquid 主永续合约;股票与指数使用 xyz HIP-3 永续合约,例如 xyz:NVDA。 |
| 时间窗口 | 30 分钟,截至到期时间 |
| 采样 | 窗口内每一次不同的预言机更新,以其 Hyperliquid 时间戳为准 |
| 最少样本数 | 500 |
| 均值算法 | 截尾均值中位数(trimmed median of means) |
均值的计算方式
- 采集。 Hypercall 记录在到期前 30 分钟至到期时刻之间观察到的每一个新预言机价格。对同一次更新的重复读取只计一次,到期后发布的数据一律不用。
- 截尾。 按价格对样本排序,剔除最高的 5% 和最低的 5%。
- 分组。 将剩余价格分成约 √n 组,分别计算每组的均值。
- 取中位数。 取这些组均值的中位数,即为结算价格。
截尾与均值中位数算法使得少数临近到期的异常成交价难以推动结算价格,同时仍能反映整个窗口的走势。
样本不足时
样本少于 500 个的窗口永远不会被采用。如果 Hypercall 自身的记录不完整(例如在窗口内发生了重启),系统会从同一 Hyperliquid 预言机价格的归档历史中重建该窗口,并采用相同的 500 样本下限和相同的均值算法。如果两个来源的样本都不足,合约将停留在 Expired Pending Price 状态,结算将等待。Hypercall 不会基于不完整的窗口或备用价格进行结算。
这与预言机中断期间的持仓估值是两回事。保证金检查和强制平仓会继续按最后记录的现货价格为持仓估值,一旦该价格超过 30 秒,增加风险的订单将被拒绝。参见故障模式。最后记录的价格永远不会被用作结算价格。
结算金额计算
结算金额为期权在结算价格下的内在价值:
看涨期权:
看跌期权:
其中:
- = 结算价格
- = 行权价
- = 持仓数量(带符号:多头为正,空头为负)
虚值 (OTM) 期权以零结算并被移除。权利金在交易时以现金支付,因此结算只划转内在价值。这一规则同时适用于标准保证金账户和组合保证金账户。
示例
多头看涨期权(实值):
- 持仓:做多 2 张 BTC-100000-C
- 结算价格:$105,000
- 内在价值:max(0, 105000 - 100000) = $5,000
- 结算金额:10,000**(计入账户)
空头看涨期权(实值):
- 持仓:做空 2 张 BTC-100000-C
- 结算价格:$105,000
- 结算金额:10,000**(从账户扣除)
多头看跌期权(虚值):
- 持仓:做多 1 张 BTC-100000-P
- 结算价格:$105,000
- 内在价值:max(0, 100000 - 105000) = $0
- 结算金额:$0(到期作废)
结算流程
结算发生时:
- 获取价格:获取最终确定的 30 分钟结算价格
- 计算金额:为每个持仓计算内在价值
- 划转资金:同一标的资产、同一到期日的所有期权作为一个批次结算,按账户轧差
- 移除持仓:持仓被平仓并从投资组合中移除
- 发送事件:在
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 | 每张合约的内在价值 |
settlement_value | 现金结算总额 |
settlement_entry_price | 您的每张合约开仓价格 |
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状态 - 交易已被禁止
- 引擎在每次到期检查时重试,每分钟一次
- 只有在满足 500 样本规则的结算价格产生后,才会划转资金
系统重启
结算状态是持久化的。如果系统重启:
- 启动时会重新识别已到期的合约
- 结算自动继续
- 幂等性保证可防止重复结算
参数
| 参数 | 取值 | 说明 |
|---|---|---|
| 到期检查间隔 | 60 秒 | 引擎检查到期并重试待处理结算的频率 |
| 结算窗口 | 30 分钟 | 截至到期时间 |
| 最少样本数 | 500 | 少于此数则不采用该窗口 |
| 截尾 | 两端各 5% | 在求均值前剔除 |
最佳实践
- 关注到期:通过 portfolio 端点跟踪您持仓的到期日
- 提前规划:如果您想避免结算,请在到期前平仓
- 留意最后 30 分钟:结算价格由该窗口内的预言机价格决定,而非到期瞬间的价格
- 订阅 WebSocket:实时接收
PositionExpired事件,第一时间获得通知 - 保持保证金缓冲:为可能出现的实值空头结算预留足够的现金或保证金
另请参阅: