Hyperliquid 限制:同一账户在同一币种同一方向只能有一个仓位。 多个用户的 BTC 多单会自动合并成一个 BTC 多头仓位。
| 设计决策 | 选择 | 原因 |
|---|---|---|
| 账户数量 | 平台统一账户 | HL 不支持同币种多仓位 |
| HL 端保证金模式 | 全仓(Cross Margin) | 仓位合并,逐仓无意义;全仓资金效率高 |
| HL 端清算 | 永远不让 HL 触发清算 | 所有清算由 平台 控制 |
| 指标 | 安全线 | 告警线 | 紧急线 |
|---|---|---|---|
| HL 账户保证金率 | > 500% | < 300% | < 150% |
| 动作 | 正常 | 从资金池补充 | 暂停 HL 新开仓 + 紧急补资 |
平台 为每个用户维护独立的虚拟仓位记录(HL 端实际是合并的):
| 字段 | 说明 |
|---|---|
| position_id | 平台 内部仓位 ID |
| user_id | 用户 |
| symbol | 合约品种 |
| direction | 用户方向 |
| size | 持仓数量 |
| notional_value | 名义价值 |
| entry_price | 用户实际成交价(来自 HL 回执 fill_price) |
| leverage | 用户选择的杠杆 |
| margin_mode | ISOLATED / CROSS |
| isolated_margin | 逐仓保证金 |
| position_source | 固定为 HYPERLIQUID |
| status | OPEN / CLOSED / LIQUIDATED |
平台 不依赖自行计算的价格作为仓位最终记录,而是用 HL 返回的实际成交价更新内部数据。
这是消除开仓/平仓阶段计算偏差的关键设计。
1. 平台 按当前 mark_price 预计算 → 冻结保证金
2. 向 HL 发送开仓订单
3. HL 返回成交回执:fill_price, filled_size, fee
4. 用 fill_price 替换内部仓位的 entry_price
5. 用 fill_price 重新计算实际保证金冻结量
6. 差额部分释放或补扣
1. 平台 判断应平仓 → 向 HL 发送市价平仓
2. HL 返回平仓回执:close_price, filled_size, fee
3. 已实现 PnL 按 close_price 计算(而非预估价)
4. 最终保证金释放按 close_price 结果执行
HL 市价单可能分多笔成交:
| 级别 | 条件 | 动作 |
|---|---|---|
| 记录 | 单笔偏差 > $10 | 写日志 |
| 告警 | 单笔偏差率 > 1% | Slack 告警 |
| 紧急 | 单笔偏差率 > 5% | 暂停该币种路由到 HL + P0 告警 |
| 审查 | 日累计偏差 > $1,000 | 风控人工审查 |
HL 实际亏损 > 平台 计算亏损:
→ 差额 = HL_actual_loss - platform_calculated_loss
→ 从风险准备金扣除差额
→ 用户按 平台 计算结果结算(用户无感知)
HL 实际亏损 < 平台 计算亏损:
→ 差额进入平台利润(或退还用户,业务决策)
当 HYPERLIQUID 订单名义价值超过拆单阈值时,应自动拆分以控制滑点和市场冲击。
名义价值 > 拆单阈值(默认 $500,000)→ 触发自动拆单
拆单阈值按币种可配置(流动性差的币种阈值更低)
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 均分拆单 | 等额拆为 N 笔,间隔提交 | 默认策略 |
| TWAP | 按时间加权均匀分布到指定时间段 | 大额非紧急订单 |
原始订单 $2M BTC
│
▼
拆为 4 笔 × $500K
│
▼
逐笔向 HL 提交(间隔可配,默认 2 秒)
│
▼
每笔回执记录 fill_price / filled_size
│
▼
全部完成后汇总:
→ 加权均价 = Σ(fill_price × size) / Σ(size)
→ 统一回执给用户(用户无感知拆单)
Phase 2–3 暂不实现拆单,大额订单整笔提交 HL。拆单能力预留到 Phase 4。
定期每 5 分钟执行:
Σ(用户 HL 虚拟仓位 size) == HL 账户实际仓位 size
偏差 > 0.01% → 告警
偏差 > 0.1% → P0 紧急(暂停 HL 新开仓)