# 清算

### 概述

清算是指当账户保证金低于维持保证金要求时，风险引擎通过减少或关闭持仓来降低风险的过程。\
Backpack 采用多层次清算系统，旨在：

1. 通过逐步减仓来最小化用户损失
2. 在可能的情况下保持在订单簿上执行
3. 通过兜底机制防止系统性风险
4. 在极端情况下确保平台的偿付能力

账户保证金、资产和持仓均以标记价格计价，以防止因最新成交价波动造成的操纵。\
清算可以在订单簿上执行，也可以通过级联机制进行。

***

### 清算触发条件

#### 清算何时发生

**当维持保证金率（MMR）达到 100%**&#x65F6;，清算启动。

```
MMR = 账户 MMF / 账户保证金比率
```

其中：

* 账户保证金比率 = 净资产 / 总敞口名义价值
* 账户 MMF = Σ(持仓名义价值 × 持仓 MMF) / 总敞口名义价值

#### 触发时发生的情况

当 MMR 达到 100% 时，清算引擎将执行以下操作：

1. **取消所有挂单** —— 释放被占用的保证金
2. **偿还借款并平仓** —— 借款偿还与持仓平仓同时进行

#### 预估清算价 vs 实际清算价

界面上显示的预估清算价**仅供参考**，假设条件包括：

* 持仓不变
* 抵押资产组成不变
* 无资金费或利息累积
* 其他资产标记价格保持不变

**实际清算发生于 MMR ≥ 100% 时**，并考虑账户的全部资产状况。

对于有复杂风险敞口（多持仓、非 USD 抵押、活跃借贷）的账户，系统可能无法准确显示预估清算价。

***

### 清算级联机制

Backpack 使用三阶段清算机制，仅当上一级无法完全恢复保证金健康时，下一阶段才会触发。

```
┌──────────────────────────────────────────────┐
│                清算级联机制                   │
├──────────────────────────────────────────────┤
│                                              │
│ 阶段 1：订单簿清算                             │                        
│ ├── 以“仅减仓”模式在公开订单簿挂单              │
│ ├── 与市场流动性撮合成交                       │
│ ├── 价格带机制防止极端价格成交                  │
│ └── 持仓逐步减少，直至恢复保证金健康             │
│              │                                │
│              ▼                                │
│ 阶段 2：兜底流动性提供者（BLP）接管              │
│ ├── 当 ACMF 被触发时启动                       │
│ ├── 持仓转移至 BLP 参与者                      │
│ ├── 剩余部分权益支付至兜底基金                  │
│ └── BLP 接管持仓管理                           │
│               │                               │
│               ▼                               │
│ 阶段 3：自动减仓（ADL）                         │
│ ├── 当 ACMF 被触发且无 BLP 容量时启动            │
│ ├── 盈利对手方持仓被部分平仓                     │
│ ├── 依据优先级评分执行                          │
│ └── 作为维持系统偿付能力的最后手段               │
│                                               │
└──────────────────────────────────────────────┘
```

> **价格展示说明：** BLP 和 ADL 交易在后台执行（不显示于公开订单簿中），因此相关成交价格不纳入 K 线图展示。

***

#### 第一阶段：订单簿清算

**触发条件：** MMR ≥ 100%

**执行机制：**

* 清算引擎在公开订单簿上以“仅减仓”市价单方式下单
* 订单按当时市场价格与现有挂单成交
* 清算循环执行（每秒 1 次，每次触发概率 50%），每次减持仓位 10%，受清算容量上限限制
* 该过程持续至 MMR < 100%

**保护措施：**

* **价格带机制**防止异常价格成交
* **分步执行**以减少市场冲击
* 清算过程在交易记录中可见

**部分清算：**

系统仅清算恢复保证金健康所需的最小仓位量，这意味着：

* 清算后你可能仍保留部分缩减的仓位
* 剩余的权益仍留在账户中
* 如果价格继续不利波动，可能会触发额外清算

#### 第二阶段：兜底流动性提供者（BLPs）

**触发条件：** 保证金比率低于**自动平仓保证金率**（ACMF）

**ACMF 计算方式：**

```
ACMF = max(账户 MMF / ACMF 除数, 账户 MMF - ACMF 偏移量)
```

ACMF 永远小于 MMF，从而在维持保证金与 BLP 接管之间形成缓冲区。

**执行机制：**

1. 剩余持仓转移至 BLP
2. 部分账户权益支付至兜底基金
3. BLP 接管仓位管理
4. 账户保证金归零或恢复安全水平

**BLP 要求：**

* 平台最低余额要求
* 吸收指定清算量的承诺
* 符合做市标准

#### 第三阶段：自动减仓（ADL）

请参见 [**自动减仓**](#zi-dong-jian-cang-adl) 章节以了解完整说明。

***

### 清算手续费

**费率：** 每笔成交收取 1%

**适用范围：**

* 系统触发的永续合约清算
* 系统触发的借贷或杠杆现货清算

**计算方式：**

* 按每笔清算成交的名义金额收取费用
* 从清算所得中直接扣除（不单独计费）

**不适用情形：**

* 用户主动平仓（按正常交易费率收取）
* 用户手动偿还借款

***

### 产品清算流程

#### **永续合约**

1. 取消挂单
2. 使用余额偿还借款
3. 出售抵押品偿还剩余负债
4. 通过订单簿减仓
5. 若 ACMF 被触发 → BLP 接管
6. 若 BLP 无容量 → 进入 ADL

结算结果以 USDC 计价，盈亏即时实现。

#### **杠杆现货**

1. 取消挂单
2. 使用余额偿还借款
3. 出售抵押品覆盖负债
4. 若抵押品不足 → 清算其他资产

**结算：**&#x501F;入资产将返还至借贷池；如有剩余抵押品，将保留在账户中。

#### **借贷仓位清算**

当借贷仓位触发清算时：

1. 系统出售抵押品以偿还借款
2. 对售出金额收取清算费用
3. 将剩余抵押品返还至账户

**100% 资金利用率情形：**\
当借贷池被完全使用且抵押品无法赎回时，系统将启动 **ADL 机制** 以维持资金偿付能力。

***

### 自动减仓（ ADL）

#### 概述

自动减仓是一种**紧急机制**，当标准清算流程无法完成时激活。\
ADL 的目标包括：

1. 确保出借人（lenders）获得所借资产的等值价值；
2. 保证平台保持偿付能力；
3. 防止损失被社会化到非直接对手方。

ADL 是**最后手段**，仅在以下情况下使用：

* 市场价格波动速度快于清算执行速度；
* 订单簿流动性不足；
* 兜底流动性提供者（BLP）容量耗尽；
* 市场利用率过高，导致出借资产无法赎回。

> **价格显示说明**：\
> ADL 交易在后台直接执行，不经过公共订单簿，因此不会反映在 K 线图中。

#### 永续合约仓位的 ADL

**触发条件：**\
当账户保证金比例低于 ACMF，且无可用 BLP 容量时。

这种情况通常出现在：

* 清算账户的仓位无法通过订单簿平仓；
* BLP 容量不足；
* 剩余账户权益不足以覆盖亏损。

**对手方选择：**

ADL 不会随机选择对手方。\
系统会根据对手方的 **ADL 优先级分数（ADL Priority Score）** 进行排序：

```
ADL Priority = f(Unrealized PnL, Effective Leverage)
```

在以下因素综合排序中排名最高的交易者：

1. 持仓盈利情况（未实现盈亏越高，优先级越高）
2. 持仓杠杆水平（杠杆倍数越高，优先级越高）

……将被优先选入 ADL。

**无账户限制：**\
ADL 不对用户或账户施加限制。完成所有优先级计算（第一轮与第二轮）后，系统会完全匹配多头与空头头寸。

**较低优先级：**\
基差交易或 Delta 中性仓位优先级较低，只有当其他仓位不足时才会被 ADL。

**执行流程：**

1. 系统识别被清算仓位的方向和数量；
2. 根据 ADL 优先级对对手方进行排序；
3. 按顺序部分平掉优先级最高的对手方仓位；
4. 平仓价格 = 被清算账户的破产价格；
5. 重复执行，直到清算仓位全部吸收完毕。

**示例：**

```
被清算账户：
- 持有多头 10 BTC-PERP
- 破产价：$50,000
- 无法通过订单簿平仓

ADL 队列（空头持仓按优先级排序）：
1. 交易者 A：空头 5 BTC，+20,000 美元浮盈，10x 杠杆
2. 交易者 B：空头 8 BTC，+15,000 美元浮盈，5x 杠杆
3. 交易者 C：空头 3 BTC，+5,000 美元浮盈，2x 杠杆

执行结果：
- 交易者 A：空头 5 BTC 以 $50,000 成交
- 交易者 B：空头 5 BTC 以 $50,000 成交
- 清算完成
```

**通知：**

* ADL 成交记录在成交历史（fill history）中显示来源：`ADL_AUTOCLOSE`
* WebSocket 订单更新中，字段 `O` 的值为 `"ADL_AUTOCLOSE"`

#### 借贷仓位的 ADL

ADL 在借贷系统中用于在借款人违约或市场条件阻止正常清算时保护出借人。

**场景一：借款人违约**

当借款人账户破产且不再持有借入资产时，ADL 启动。

**示例：**

```
初始状态：
- 借款人从出借人处借入 1 BTC
- 借款人卖出 BTC，持有 USDC
- BTC 价格大幅上涨
- 借款人抵押品不足以覆盖借款

清算：
- 借款人账户破产
- BTC 价格为 $100,000
- 借款人无 BTC 可归还

解决方案：
- 系统清算借款人剩余资产
- 出借人获得 $100,000 USDC（名义价值）
- 出借人获得等值价值，但以 USD 计而非 BTC
- 贷款关闭
```

**关键原则：**&#x7CFB;统确保出借人在清算时获得所借资产的等值价值——无论以原始代币形式，还是以当时名义 USD 价值计。

**场景二：100% 资金利用率**

当借贷池利用率达到 100% 时，出借资产无法赎回。\
若此时出借人持有以借出资产为抵押的仓位并触发清算，则 ADL 激活。

**流程：**

1. 出借人仓位以借出资产为抵押；
2. 仓位亏损 → 触发清算；
3. 清算引擎尝试赎回借出资产；
4. 借贷池 100% 利用 → 赎回受阻；
5. 启动 ADL。

**ADL 解决过程：**\
6\. 系统识别出可用抵押的借款人；\
7\. 名义 USDC（≤ 原始出借价值）转移：借款人 → 出借人 ；\
8\. 出借人借贷仓位关闭；\
9\. 出借人获得 USDC 用于覆盖清算；\
10\. 借款人贷款关闭，其抵押品可能被转换。

**借款人影响：**

* 借款人的贷款被强制关闭；
* 抵押品可能被转换为其他资产；
* 账户总价值保持不变；
* 借款人无实际损失，仅资产组成发生变化。

***

### **API 中的清算功能**

#### 成交类型

`/fills` 接口返回所有成交记录（包括系统订单）。\
可通过 `fillType` 参数进行筛选：

| fillType               | 描述              |
| ---------------------- | --------------- |
| `User`                 | 仅用户订单成交         |
| `BookLiquidation`      | 订单簿清算成交         |
| `Adl`                  | 自动减仓（ADL）成交     |
| `Backstop`             | 兜底流动性提供者（BLP）成交 |
| `Liquidation`          | 所有清算类型          |
| `AllLiquidation`       | 全部清算类型合并        |
| `CollateralConversion` | 抵押品转换以结算债务      |

#### 订单更新来源

WebSocket 的 `account.orderUpdate` 流包含一个 `O` 字段，用于指示订单来源：

| Origin                        | 描述          |
| ----------------------------- | ----------- |
| `USER`                        | 用户发起的订单     |
| `LIQUIDATION_AUTOCLOSE`       | 清算引擎关闭的仓位   |
| `ADL_AUTOCLOSE`               | 自动减仓事件      |
| `COLLATERAL_CONVERSION`       | 抵押品转换以结算债务  |
| `SETTLEMENT_AUTOCLOSE`        | 到期市场仓位结算    |
| `BACKSTOP_LIQUIDITY_PROVIDER` | 由 BLP 促成的清算 |

#### 查询清算价格

可通过 REST API 查询预估清算价格：

```
GET /api/v1/position?symbol=BTC_USDC_PERP
```

返回结果中的 `estLiquidationPrice` 字段即为指定仓位的预估清算价格。

> **注意**：WebSocket 流中的 `l` 字段已弃用（固定返回 0）。请使用 REST 接口获取清算价格。

#### 结算历史

查询包括清算在内的结算操作：

```
GET /wapi/v1/history/settlement
```

可按来源过滤：

* `BackstopLiquidation`（兜底清算）
* `TradingFeesSystem`（系统交易费）
* `RealizePnl`（已实现盈亏）

***

### 查看清算记录

#### **在界面中查看**

**永续合约清算：**

* 路径：资产总览 → 合约 → 清算
* 直达链接：<https://backpack.exchange/portfolio/futures/liquidations>

**借贷清算：**

* 路径：资产总览 → 借贷 → 清算
* 直达链接：<https://backpack.exchange/portfolio/borrow-lend/liquidations>

#### 通过 API 查看

使用成交历史接口，并通过 `fillType` 参数筛选：

```
GET /wapi/v1/history/fills?fillType=AllLiquidation
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.backpack.exchange/technical-docs/cn/jiao-yi/qing-suan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
