> For the complete documentation index, see [llms.txt](https://ch-docs.aftermath.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ch-docs.aftermath.finance/yong-xu-he-yue/architecture/liquidations/adl.md).

# ADL

ADL 是一项许可制功能，只有市场管理员（或其委托方）可以执行。

### 执行流程

执行采用链下计算、链上执行的混合模型：

1. 排名（链下）：根据盈利率、杠杆和仓位规模等因素对盈利仓位进行排名。
2. 选择：选取排名最靠前的仓位来覆盖特定金额的坏账（例如 2、3 或 4 个仓位）。
3. 执行（链上）：坏账仓位与选中的对手方对冲平仓。
   * PnL 零影响：平仓按对手方的平均开仓价格进行，确保对手方在这笔交易中实现的 PnL（盈亏）为 0。
   * 保证金资产：坏账仓位的保证金资产分配给各对手方。

### 可验证性

虽然 ADL 的执行是许可制的，且依赖链下决定的因素，但由于全程在链上进行，ADL 的结果始终完全可验证。

#### 执行后验证：

* ADL 发生时的所有仓位数据都存在于链上。
* 任何人都可以重建 ADL 那一时刻的仓位排名。
* 社区可以核验管理员是否按照公开的排名标准选择了恰当的仓位。
* 透明性：指数价格、仓位状态及所有相关数据都不可篡改地记录在链上。
* 问责性：虽然用户无法实时阻止 ADL，但任何偏离公开排名算法的行为事后都可以被举证发现。社区可以重建排名并对不当执行提出质疑。<br>

### 技术实现

ADL 排名算法考虑多个因素：

* 盈利率：未实现 PnL 越高，排名越靠前。
* 杠杆：有效杠杆越高，排名越靠前。
* 仓位规模：较大的仓位可能在排名中获得加权。

对盈利仓位：$$\text{ADL Ranking} = \text{PNL%} \times \text{Effective Leverage}$$

对亏损仓位：$$\text{ADL Ranking} = \frac{\text{PNL%}}{\text{Effective Leverage}}$$

其中：$$\text{PNL%} = \frac{\text{Unrealized PnL}}{|\text{Position Size} \times \text{Mark Price}|}$$

$$\text{Effective Leverage} = \frac{1}{\text{Position Margin Ratio}}$$

#### 损失分摊阈值配置

决定使用损失分摊还是 ADL 的坏账阈值是可配置的。

```
If bad_debt > max(M, open_interest × mark_price x α):
    Trigger ADL
Else:
    Use Socialized Losses
```

#### 验证流程

要验证某次 ADL 执行是否恰当：

* 查询 ADL 执行时区块高度的链上状态。
* 重建所有仓位状态（规模、开仓价格、未实现 PnL、杠杆）。
* 套用文档中公开的排名算法。
* 将被选中执行 ADL 的仓位与重建出的排名进行比对。
* 确认选中的仓位与覆盖所需坏账金额的最高排名仓位一致。
