L2 路由决策 → HYPERLIQUID
│
▼
[L4] 预计算保证金(按当前 mark_price)
└─ 临时冻结用户保证金(可用余额预扣)
│
▼
[L4] 构建 HL 开仓指令
├─ 方向(BUY / SELL)
├─ 数量(按 HL szDecimals 规则取整)
├─ 类型(市价 / 限价)
└─ 平台 Agent Key 签名
│
▼
[L4] 向 HL 发送开仓请求(目标 < 50ms)
│
▼
[L4] 等待 HL 回执
├─ fill_price 成交价
├─ filled_size 成交量
└─ fee 手续费(含 builder fee)
│
▼
[L4] 价格校正(Fill Price Correction)
├─ entry_price = fill_price(替换预估值)
├─ 重新计算实际保证金冻结量
└─ 差额释放或补扣(available_balance 调整)
│
▼
[L4] 创建 HYPERLIQUID 仓位记录
├─ position_source = HYPERLIQUID
├─ entry_price = fill_price(来自 HL 回执)
└─ status = OPEN
│
▼
[L4] 写入 fills 表(source = HL,含 hl_fill_price 字段)
│
▼
[L4] 更新 HL 虚拟仓位映射(用户份额 → HL 合并仓位)
│
▼
[WS] 推送成交通知
用户发起平仓 HYPERLIQUID 仓位
│
▼
[L4] 构建 HL 平仓指令(市价平仓)
└─ 数量 = 用户虚拟仓位 size
│
▼
[L4] 向 HL 发送平仓请求
│
▼
[L4] 等待 HL 回执(close_price, filled_size, fee)
│
▼
[L8] 按 close_price 计算已实现 PnL
├─ 多头:pnl = (close_price - entry_price) × size
└─ 空头:pnl = (entry_price - close_price) × size
│
▼
[L8] 偏差计算与记录
├─ 偏差 = HL 回执 PnL - 平台 预计算 PnL
├─ 偏差 > $10 → 写 deviation_logs
├─ 偏差率 > 1% → Slack 告警
└─ 偏差率 > 5% → P0 + 暂停该币种 HL 路由
│
▼
[L8] 偏差兜底(若 HL 实际亏损 > 平台 计算)
└─ 差额从风险准备金扣除,用户按 平台 计算结果结算
│
▼
[L4] 释放用户保证金 → position.status = CLOSED
│
▼
[L4] 更新 HL 虚拟仓位映射(减去对应 size)
│
▼
[WS] 推送平仓通知
HL 市价单可能分多笔成交(大单常见):
Fill 1:price=$100,100,size=0.3
Fill 2:price=$100,050,size=0.5
Fill 3:price=$100,000,size=0.2
加权均价 entry_price:
= (100,100×0.3 + 100,050×0.5 + 100,000×0.2) / 1.0
= $100,055
[L5] 平台 清算引擎判断用户需要清算(含 HYPERLIQUID 仓位)
│
▼
[L4] 向 HL 发送市价平仓指令
└─ 数量 = 用户虚拟仓位对应 size
│
▼
[L4] 等待 HL 回执 close_price
│
▼
[L8] 按 close_price 完成清算结算
└─ 用户保证金归零
│
▼
[L4] position.status = LIQUIDATED
Σ(所有用户 HYPERLIQUID 虚拟仓位 BTC size)
vs HL 账户实际 BTC 合并仓位 size
偏差 > 0.01% → 记录 reconciliation_logs + 告警
偏差 > 0.1% → P0 紧急 + 暂停 HL 新开仓 + 人工审查