合约交易:保证金、强平、资金费率¶
30 秒版(开场)¶
永续合约 = 杠杆仓位 + 标记价格 算盈亏 + 资金费率 多空平衡 + 强平 防穿仓。Go 后端:标记价服务、风险引擎、强平队列、保险基金。讲解关键词:逐仓/全仓、维持保证金、ADL 自动减仓。
3 分钟版(精讲深度)¶
- 是什么:不交割的衍生品;仓位、保证金、未实现盈亏实时变化。
- 为什么:CEX 合约团队核心考点;与现货撮合分离。
- 怎么做:从多源现货构造 Index,再结合基差等规则得到 Mark Price;按交易所规则计算账户权益与维持保证金需求。权益不足以覆盖维持保证金时触发强平。
10 分钟版¶
flowchart LR
Index[多源 Index Price] --> Mark[Mark Price]
Mark --> Risk[风险引擎]
Position[仓位表] --> Risk
Risk -->|equity <= MM requirement| Liq[强平引擎]
Liq --> ME[市价平仓单]
Funding[资金费率定时] --> Ledger[账务多空互付]
核心公式(简化表达)
- 未实现盈亏(多)≈
(markPrice - entryPrice) * size - 仓位名义价值
notional = abs(size) * markPrice - 账户权益
equity = walletBalance + unrealizedPnL - 未结费用/资金费 - 维持保证金需求
MM = Σ(分层 MMR * notional - maintenanceAmount) + 预留平仓费用(具体字段依交易所) - 通用触发语义:
equity <= MM requirement时进入强平
不要死记“保证金率低于某值”这一种方向:有的平台定义 equity / notional,低于阈值触发;有的平台定义 MM / equity,达到 100% 触发。讲解时应先声明指标定义,再说阈值。
逐仓 vs 全仓
| 模式 | 风险隔离 |
|---|---|
| 逐仓 | 以该仓位分配的 isolated margin + UPNL 承担风险 |
| 全仓 | 同一保证金资产或风险单元内的余额与仓位盈亏共享 |
分层风险限额会让大仓位使用更高的 MMR;因此强平价不是只由“杠杆倍数”决定,还受仓位档位、挂单占用、手续费、资金费和保证金模式影响。
资金费率
- 永续锚定现货:多空定期支付
fundingRate > 0→ 多付空- 结算周期由产品定义,常见 1h/4h/8h,不能写成协议固定值
- 资金费通常是多空之间转移,平台是否抽取费用取决于产品规则
强平流程
- 行情、成交、资金划转等事件触发风险重算,并用周期扫描兜底
- 冻结风险单元,取消可释放保证金的挂单
- 支持分级清算的平台会优先部分减仓/降低风险档位;否则按该平台规则接管或平掉仓位
- 实际平仓价差于 bankruptcy price 产生的缺口按平台规则由清算费、保险基金承担
- 保险基金仍不足时,才可能进入 ADL/社会化损失等尾部机制
Liquidation Price vs Bankruptcy Price
- liquidation price:触发风险引擎接管的标记价格
- bankruptcy price:仓位保证金理论上耗尽的价格
两者不能混用;清算引擎的成交价还可能因为订单簿深度产生滑点。
生产场景¶
- 插针:使用基于稳健 Index 与基差规则构造的 Mark Price,而非直接用最新成交价
- 极端行情:熔断、仅减仓模式、上调维持保证金率
- Go 实现:标记价流带版本/时间戳;风险计算按账户或风险单元串行化,强平命令必须幂等
深挖问答¶
- 标记价操纵? → 多源加权、异常剔除。
- 穿仓谁承担? → 先按平台规则使用清算费用/保险基金;不足时才进入 ADL 或社会化损失机制。
- 交割合约? → 有到期日,结算价交割。
- 与 DEX 永续? → 链上 vault + keeper 强平(S-EXCH-06 不同范式)。
反模式¶
- 用最新成交价强平 → 插针误杀
- 强平与账务不同步 → 负余额
- 只按固定 MMR 算所有仓位 → 忽略风险限额档位,大仓位风险被低估
- 把 liquidation price 当实际成交价 → 低估滑点与保险基金风险