Skip to content
ToolGuide/文档/ADL 风控

ADL 风控 ​

ADL(Auto-Deleveraging,自动减仓)是交易所在保险基金或清算机制无法正常承接风险时,对对手方盈利仓位执行的强制减仓。跨交易所套利中,任何一腿被 ADL 都可能立即形成裸露方向,因此必须把“发生概率预警”和“已经发生的硬事件”分开处理。

L1–L5 是熊猫寨为了统一展示而定义的内部风险等级,不是交易所官方通用标准。平台没有公开个人排名时必须显示 UNKNOWN,不能根据杠杆、强平价或主观判断伪造等级。

平台字段与统一映射 ​

平台官方预警字段 / 事件原始等级含义已发生 ADL 的判断统一风险等级建议
BinanceadlQuantile,接口 /fapi/v1/adlQuantile0–4,数值越高风险越高;HEDGE 仅为标记查询强平订单中的 autoCloseType=ADL0→L1,1→L2,2→L3,3→L4,4→L5
OKX持仓字段 adl0–5,0 最低,5 最高;未实现盈利和杠杆越高,优先级通常越高历史持仓 type=5 部分 ADL,type=6 完全 ADL;事件类型为 adl原始值直接映射;0 为空仓/最低风险
BybitadlRankIndicator0 为空仓默认值,1–5 为风险等级,5 最高positionStatus=Adl;同时可参考全局 adlAlert原始值直接映射
Gateadl_ranking / WebSocket rank_division与其他平台相反:1 最高,5 最低;6 表示无仓位或正在清算/futures/{settle}/auto_deleverages 查询已发生 ADL1→L5,2→L4,3→L3,4→L2,5→L1;6 单独标记
Bitget/api/v2/mix/position/adlRank 的 rank0–1 小数,越接近 1 越容易 ADL;adlRank 已废弃官方排名接口不是已发生事件,需结合持仓、成交和账本变化确认<0.2=L1,0.2–0.4=L2,0.4–0.6=L3,0.6–0.8=L4,≥0.8=L5
Hyperliquid没有公开个人 ADL 等级字段官方按未实现盈利、杠杆和仓位规模排序,核心排序指标为 (标记价/开仓价) × (仓位名义额/账户价值)官方公开接口没有统一 ADL 等级;需通过仓位、成交和账户事件确认UNKNOWN,不能根据杠杆或强平价自行伪造等级
Lighter没有公开 ADL 排名;WebSocket 有 deleverage 事件不能提前得到统一风险等级Trade.type=deleverage 或私有通知 kind=deleverage 时,可确认已发生 DeleverageUNKNOWN;只在明确事件出现时标记硬事件

统一风险等级 ​

统一等级含义建议动作
L1当前处于最低公开排名区间正常监控,保留原始字段和更新时间
L2风险开始抬升提高采样频率,检查双腿仓位和可用保证金
L3中等风险发出预警,限制继续扩大仓位
L4高风险停止新的加仓步骤,准备任务归属型退出
L5最高公开排名区间触发严重告警,优先保护双腿净敞口
UNKNOWN平台未公开等级、字段缺失或数据过期不解释为安全;保持未知状态并依赖硬事件检测

风险等级只表示进入 ADL 队列的相对优先级,不代表一定会发生 ADL。反过来,低等级也不能代替成交、持仓和账户事件核对。

预警与硬事件必须分开 ​

系统至少应持久化两组状态:

text
adl_risk_level: L1 | L2 | L3 | L4 | L5 | UNKNOWN
adl_event_status: NONE | SUSPECTED | CONFIRMED
  • adl_risk_level 用于提前告警和限制风险增加。
  • adl_event_status=CONFIRMED 只能由交易所明确事件、ADL 订单或可审计的成交记录触发。
  • 排名达到最高级不能直接写成“已发生 ADL”。
  • 已确认 ADL 的优先级高于任何预警等级;即使等级为 L1 或 UNKNOWN,仍必须立即处置。

数据采集要求 ​

保留原始证据 ​

每次采集应保存平台、账户、标的、持仓方向、原始字段、原始值、统一等级、交易所事件时间和本地接收时间。不要只保存转换后的 L1–L5,否则无法在平台字段变化后重新审计。

按腿、按方向记录 ​

双向持仓账户可能同时返回多腿数据。Binance 的 LONG、SHORT、BOTH 和 HEDGE 不能互相替代;风险状态必须绑定具体账户、标的和方向。

过期数据不沿用 ​

如果私有接口失败、WebSocket 断开或数据超过允许时效,应把当前值降为 UNKNOWN,同时产生数据源异常告警,不能继续展示上一次低风险等级。

防止重复事件 ​

使用平台事件 ID、订单 ID、成交 ID和时间戳建立幂等键。相同 ADL 事件重复推送时只更新确认信息,不得重复触发平仓订单。

已确认 ADL 后的处置 ​

  1. 立即停止任务继续加仓,并冻结自动重试开仓。
  2. 持久化交易所原始事件、仓位快照、挂单和最近成交。
  3. 分别查询两腿真实仓位,不根据本地计划数量推断剩余敞口。
  4. 撤销可能继续增加风险的任务归属挂单。
  5. 计算 ADL 后的实际净敞口,并进入人工复核或任务归属型安全退出。
  6. 退出订单只能使用可验证的 reduce-only 语义,禁止盲目反向下单。
  7. 通过 Telegram、邮箱或飞书发送最高级告警,并持续对账到仓位和挂单状态稳定。

两个交易所不会同时原子执行 ADL。任何一腿发生自动减仓后,另一腿可能继续保持原仓位,因此“重新读取真实仓位”必须先于后续处置。

实现检查清单 ​

  • [ ] 原始等级与统一等级同时保存
  • [ ] UNKNOWN 不按低风险处理
  • [ ] 排名预警与已发生事件使用不同字段
  • [ ] Gate 排名方向已反转映射
  • [ ] Bitget 使用 rank,不再依赖已废弃的 adlRank
  • [ ] Hyperliquid、Lighter 不伪造个人预警等级
  • [ ] WebSocket 断线和数据过期会产生告警
  • [ ] 已确认事件会阻止继续加仓
  • [ ] 处置前重新读取双腿真实仓位
  • [ ] 重启后能恢复事件与对账状态,不重复下单

官方资料 ​

从服务器到 API,一步一步完成安全部署