返回 Web3 笔记
Day 101

Day 101:清算引擎设计 — 从标记价格到ADL

清算瀑布完整流程(标记价格→保证金监控→分级清算→保险基金→ADL→熔断)、标记价格设计(TWAP+多源)、各协议保险基金对比、ADL排序算法、Keeper激励

2026-04-18
交易清算引擎标记价格ADL保险基金KeeperDay101

核心概念

什么是清算引擎?

一句话定义:清算引擎(Liquidation Engine)是交易系统中的风险处置组件,当用户的保证金不足以覆盖亏损时,自动关闭其仓位以防止坏账,保护交易所和其他交易者不受损失。

类比理解:清算引擎就像房贷的"断供处置机制"——当你贷款买房,房价下跌导致抵押品不足以覆盖贷款时,银行会强制卖出房产(法拍)。清算引擎做同样的事,只不过速度是毫秒级的。

为什么清算引擎如此关键?

清算引擎是交易所的"最后防线":
═══════════════════════════════════════

如果清算引擎失败:
├── 用户亏损超过保证金 → 产生坏账
├── 坏账由保险基金承担 → 保险基金耗尽
├── 保险基金耗尽 → ADL(自动减仓其他用户)
├── ADL大量触发 → 用户信心崩溃
├── 信心崩溃 → 用户撤资出逃
└── 死亡螺旋 → 交易所/协议倒闭

历史教训:
├── 2020.3.12 "黑色星期四"
│   └── BitMEX清算引擎过载 → $800M清算 → BTC跌至$3800
├── 2022.5 LUNA崩溃
│   └── 级联清算 → $400亿蒸发
└── 2024.3 Hyperliquid JELLY事件
    └── 巨鲸操纵清算 → 保险基金亏损$1200万

知识点详解

知识点 1:清算瀑布完整流程

清算瀑布(Liquidation Waterfall)— 六道防线:
═══════════════════════════════════════

Level 0:标记价格计算
═══════════════════════════════════════
目的:防止价格操纵触发不公平清算
方法:
├── 多交易所现货价格加权平均
├── TWAP 平滑(30s-5min窗口)
├── 异常值剔除(偏离中位数>5%的源)
└── 最终 Mark Price = Index Price + 衰减EMA(基差)

示例:
  Binance BTC: $60,050  权重30%
  OKX BTC:     $60,030  权重25%
  Coinbase:    $60,080  权重25%
  Bybit:       $60,020  权重20%
  → Index Price ≈ $60,048
  → Mark Price = $60,048 + EMA(合约基差)

              ↓

Level 1:保证金实时监控
═══════════════════════════════════════
持续计算每个用户的保证金率:

Margin Ratio = (账户净值) / (仓位价值)
             = (余额 + 未实现盈亏) / (持仓 × Mark Price)

维持保证金率:
├── 逐仓模式:通常 0.5% - 2%
├── 全仓模式:账户级别计算
└── 组合保证金:Portfolio Margin(更高效)

              ↓

Level 2:预警与减仓建议
═══════════════════════════════════════
当 Margin Ratio 接近维持保证金率时:
├── 推送预警通知
├── 建议追加保证金
├── 建议部分平仓
└── 限制开新仓

              ↓

Level 3:分级清算(Partial Liquidation)
═══════════════════════════════════════
不直接清算全部仓位,而是分批:

Round 1:清算 25% 的仓位
  → 重新计算 Margin Ratio
  → 如果恢复到安全水平 → 停止

Round 2:清算 25% 的仓位
  → 重新计算
  → 如果仍不足 → 继续

Round 3-4:继续清算直到安全或全部清完

好处:
├── 减少对市场的冲击
├── 给用户保留部分仓位的机会
└── 减少清算损失

              ↓

Level 4:保险基金吸收坏账
═══════════════════════════════════════
如果清算产生坏账(成交价差于破产价格):
├── 保险基金吸收亏损
├── 基金来源:清算手续费 + 强平利润 + 交易所注资
└── 健康度指标:基金/OI比率 > 1%为健康

              ↓

Level 5:ADL(自动减仓)
═══════════════════════════════════════
保险基金耗尽时的最后手段:
├── 选择对手方(盈利最多 + 杠杆最高的)
├── 强制部分平仓
├── 被选中方不情愿但必须接受
└── 这是"社会化损失"的一种形式

              ↓

Level 6:熔断机制
═══════════════════════════════════════
极端情况下的紧急措施:
├── 价格限制(涨跌停板)
├── 暂停交易
├── 强制降杠杆
└── 系统级风控介入

知识点 2:标记价格设计

为什么不能直接用合约最新价格?

使用最新成交价的风险:
═══════════════════════════════════════

攻击场景:
1. 攻击者在流动性差的时段下大单
2. 合约价格瞬间偏移 5-10%
3. 大量用户被清算
4. 攻击者低价接盘清算仓位
5. 价格恢复 → 攻击者获利

这就是为什么需要 Mark Price!

Mark Price 设计三原则:
├── 抗操纵:不能被单一交易所/大单影响
├── 及时性:要跟上真实市场变化
└── 平滑性:避免毛刺触发不必要的清算

标记价格计算方法

标记价格的三层计算:
═══════════════════════════════════════

Layer 1:指数价格(Index Price)
  从多个现货交易所获取价格,加权平均

  sources = [
    { exchange: "Binance",  weight: 0.30, price: getPrice("binance") },
    { exchange: "OKX",      weight: 0.25, price: getPrice("okx") },
    { exchange: "Coinbase", weight: 0.25, price: getPrice("coinbase") },
    { exchange: "Bybit",    weight: 0.20, price: getPrice("bybit") },
  ]

  // 异常值过滤
  median = getMedian(sources.map(s => s.price))
  filtered = sources.filter(s => abs(s.price - median) / median < 0.05)

  // 加权平均
  indexPrice = sum(filtered.map(s => s.price * s.weight))
               / sum(filtered.map(s => s.weight))

Layer 2:基差 EMA(Basis EMA)
  // 合约价格与指数价格的差值,用EMA平滑
  basis = lastTradedPrice - indexPrice
  basisEMA = EMA(basis, window=5min)

Layer 3:标记价格(Mark Price)
  markPrice = indexPrice + basisEMA

  // 限制 Mark Price 不能偏离 Index Price 太多
  if abs(markPrice - indexPrice) / indexPrice > 0.005:
    markPrice = indexPrice * (1 + sign(basisEMA) * 0.005)

TWAP(时间加权平均价格)

TWAP 计算:
═══════════════════════════════════════

目的:平滑价格波动,减少瞬时异常影响

简单TWAP(30秒窗口):
  prices = [60050, 60045, 60055, 60040, 60060, 60048]
  twap = average(prices) = 60049.67

加权TWAP(越近的权重越大):
  weights = [0.05, 0.10, 0.15, 0.20, 0.25, 0.25]
  twap = sum(prices[i] * weights[i]) = 60050.25

指数移动平均(EMA):
  alpha = 2 / (N + 1)  // N=周期
  ema[t] = alpha * price[t] + (1-alpha) * ema[t-1]
  // 对近期价格更敏感

知识点 3:保险基金机制

保险基金(Insurance Fund)的运作机制:
═══════════════════════════════════════

收入来源:
├── 清算手续费(清算时额外收取0.5-1%)
├── 清算利润(清算价优于破产价时的差额)
├── 交易所初始注资
└── 交易手续费分成(部分协议)

支出:
├── 坏账吸收(清算价差于破产价时的亏损)
└── 极端行情下的巨额亏损

计算示例:
═══════════════════════════════════════

用户A:10x做多BTC @ $60,000
├── 保证金:$6,000(10%)
├── 维持保证金率:0.5%
├── 清算价格:$54,300(约)
├── 破产价格:$54,000(保证金归零)
│
├── 场景1:清算成交 @ $54,200(优于破产价)
│   └── 利润 = $54,200 - $54,000 = $200 → 注入保险基金
│
└── 场景2:清算成交 @ $53,800(差于破产价)
    └── 坏账 = $54,000 - $53,800 = $200 → 保险基金承担

各协议保险基金对比

协议基金规模来源特殊机制
Binance~$1B+清算利润+注资最大,不透明
Bybit~$300M清算利润USDT计价
Hyperliquid~$300M+HLP收益+清算链上可验证
dYdX v4~$50M交易费分成链上透明
GMX~$30MGLP手续费LP即保险基金
Aave~$400MSafety Module质押AAVE质押者承担
保险基金健康度评估:
═══════════════════════════════════════

健康指标:Insurance Fund / Total Open Interest

> 2%    :非常健康(可承受极端行情)
1-2%   :健康
0.5-1% :关注(需要补充)
< 0.5% :危险(ADL风险高)

Hyperliquid JELLY 事件教训:
├── 巨鲸开设大额空头 → 自我清算
├── 清算仓位进入保险基金
├── 保险基金成为被动多头
├── 鲸鱼在现货市场拉盘
├── 保险基金亏损 $1200万
└── 教训:保险基金不应成为可被利用的交易对手

知识点 4:ADL(自动减仓)排序算法

ADL(Auto-Deleveraging)机制详解:
═══════════════════════════════════════

触发条件:保险基金无法覆盖坏账

ADL排序原理:
├── 选择"最应该被减仓"的对手方
├── 排序依据:盈利比例 × 杠杆倍数
└── 盈利最多+杠杆最高的用户优先被选中

排序公式(以Binance为例):
  ADL_Rank = PnL_Percentage × Effective_Leverage

  其中:
  PnL_Percentage = 未实现盈亏 / 初始保证金
  Effective_Leverage = abs(仓位名义价值) / (余额 + 未实现盈亏)

示例排序:
  用户B:盈利200%,10x杠杆 → Rank = 2.0 × 10 = 20  [最先被ADL]
  用户C:盈利150%,5x杠杆  → Rank = 1.5 × 5 = 7.5
  用户D:盈利50%,20x杠杆  → Rank = 0.5 × 20 = 10
  用户E:盈利10%,2x杠杆   → Rank = 0.1 × 2 = 0.2   [最后被ADL]

排序:B(20) > D(10) > C(7.5) > E(0.2)

ADL 指示灯:
  ■■■■■ 5格全亮:下一个就是你
  ■■■■□ 4格:高风险
  ■■■□□ 3格:中风险
  ■■□□□ 2格:低风险
  ■□□□□ 1格:极低风险

DeFi 中的 ADL 替代方案

DeFi 协议的损失社会化方案:
═══════════════════════════════════════

方案1:ADL(Hyperliquid, dYdX)
  与CeFi相同,对手方强制平仓

方案2:坏账社会化(GMX)
  坏账由GLP持有者按比例分担
  ├── 优点:不影响交易者仓位
  └── 缺点:LP承担额外风险

方案3:Safety Module(Aave)
  AAVE质押者用质押资产覆盖坏账
  ├── 优点:专门的风险吸收层
  └── 缺点:需要足够的质押量

方案4:利率调节(Compound)
  坏账通过提高借贷利率逐步消化
  ├── 优点:温和、无强制操作
  └── 缺点:处理速度慢

知识点 5:Keeper 激励机制

DeFi清算中的 Keeper(清算机器人):
═══════════════════════════════════════

为什么需要Keeper?
  CeFi:清算由交易所自己执行(内部系统)
  DeFi:谁来执行清算?→ 任何人都可以 → Keeper

Keeper 激励设计:
├── 清算奖励:清算金额的 5-15%
│   ├── Aave:5%(基础清算折扣)
│   ├── Compound:8%
│   └── MakerDAO:13%
│
├── Gas 补偿:部分协议额外补贴Gas
│
└── MEV 机会:清算交易本身可以套利

Keeper 面临的挑战:
═══════════════════════════════════════

1. Gas 竞争
   └── 多个Keeper抢同一笔清算 → Gas War

2. 成本风险
   └── Gas花了,但被别的Keeper抢先 → 亏Gas

3. 价格波动风险
   └── 从预言机更新到清算执行之间,价格可能变化

4. 技术门槛
   └── 需要监控全部仓位 + 预言机 + Gas优化

Keeper 架构:
  [预言机监控] → [仓位扫描] → [清算判断]
       ↓              ↓            ↓
  [价格更新]    [保证金计算]  [盈利分析]
                              ↓
                     [发送清算交易]
                         ↓
                  [MEV保护(Flashbots)]

面试题解析

清算引擎如何防止级联清算?

简短回答(30秒版本)

通过四层防护:(1)使用TWAP+多源标记价格防止价格操纵触发虚假清算;(2)分级清算(先清25%)减少市场冲击;(3)保险基金吸收坏账防止ADL;(4)熔断机制在极端行情下暂停交易。核心思想是把大额清算分散成小额,减少对市场的正反馈冲击。

详细回答(2分钟版本)

防止级联清算的7层设计:
═══════════════════════════════════════

Layer 1:标记价格防操纵
  ├── 多交易所价格源
  ├── TWAP平滑
  └── 防止单一大单触发大量清算

Layer 2:梯度保证金
  ├── 仓位越大,维持保证金率越高
  ├── 大户更早被清算(仓位较小时)
  └── 减少大额清算的市场冲击

Layer 3:分级清算
  ├── 每次只清算25%的仓位
  ├── 清算后重新评估
  └── 避免一次性抛售大量头寸

Layer 4:清算速度限制
  ├── 限制单位时间内的清算量
  ├── 如每分钟最多清算 $10M
  └── 给市场吸收冲击的时间

Layer 5:保险基金缓冲
  ├── 充足的保险基金 → 不需要ADL
  ├── ADL是级联清算的主要传播途径
  └── 保险基金越大,系统越稳定

Layer 6:价格限制(涨跌停板)
  ├── 5分钟内价格变动 > 5% → 暂停1分钟
  ├── 1小时内变动 > 15% → 暂停10分钟
  └── 给市场"冷静期"

Layer 7:跨市场风控
  ├── 监控现货/期货/期权联动
  ├── 跨品种风险评估
  └── 系统性风险预警

追问准备

  • Q:分级清算不就是延长了清算时间吗?A:是的,这是有意的取舍——用清算速度换市场稳定性。如果一次性清算,冲击可能导致价格进一步下跌,触发更多清算。
  • Q:保险基金如何确定合适的规模?A:一般维持在总OI的1-2%以上。需要做压力测试——模拟极端行情(如30%瞬跌)下的坏账总量。

产品经理视角

PM在清算系统中需要关注的产品设计:
═══════════════════════════════════════

1. 用户体验
   ├── 清算前的预警通知(推送/邮件/短信)
   ├── 清算价格的清晰展示
   ├── 保证金率的实时可视化
   ├── 一键追加保证金功能
   └── 清算后的详细报告

2. 透明度
   ├── 保险基金规模实时展示
   ├── ADL指示灯
   ├── 历史清算数据公开
   └── 标记价格计算方法公开

3. 公平性
   ├── 标记价格不可操纵
   ├── 分级清算保护小户
   ├── ADL排序规则透明
   └── 清算手续费合理

4. 竞品差异化
   ├── 更低的维持保证金率
   ├── 更高效的清算(更少损失)
   ├── 更大的保险基金
   └── 更好的清算保护工具

明日预告

Day 102:实时风控系统设计 — 毫秒级风险监控 — 预防胜于清算

  • 风控三层架构(预交易+持仓+压力测试)
  • 动态保证金模型
  • Gauntlet/Chaos Labs 风控方法论
  • AI驱动的风控趋势
  • DeFi风控的特殊挑战