跳到主要内容

自动减仓 (ADL - Auto-Deleveraging)

自动减仓(Auto-Deleveraging, ADL)是在发生强制平仓且保险基金不足以弥补损失时,系统为了保护整体用户利益,从对手方中根据排名挑选出盈利且高杠杆的仓位进行减仓的机制。

ADL 触发条件

ADL 只在以下情况下触发:

  1. 发生强制清算
  2. 清算价格劣于破产价格,产生穿仓损失
  3. 保险基金余额不足以弥补损失

ADL 排名机制

ZTDX 使用以下公式计算用户的 ADL 排名分数:

ADL Score = (PnL Weight × PnL %) + (Leverage Weight × Leverage) + (Size Weight × Normalized Size)

排名规则

  • 只有盈利仓位 才会进入 ADL 队列
  • 排名分数越高,被减仓的优先级越高
  • 同一市场的多空两侧分别排名
  • 减仓时从对手方(与被清算方相反方向)的队列顶部开始

权重配置

因子权重说明
PnL %40%未实现盈亏百分比
Leverage30%杠杆倍数
Size30%仓位大小(归一化)

优先级指标 (Risk Indicator)

系统提供 risk_indicator 字段,帮助用户识别被 ADL 的风险。

级别颜色风险排名范围说明
5🔴 红色极高Top 0-20%极大概率被 ADL
4🟠 橙色20-40%高概率被 ADL
3🟡 黄色40-60%可能被 ADL
2🟢 绿色60-80%较少被 ADL
1🔵 蓝色极低80-100%基本不会被 ADL

获取 ADL 配置

接口信息

  • Method: GET
  • Path: /api/v1/adl/:symbol/config
  • Authentication: 不需要

路径参数

参数类型必须描述
symbolstring交易对名称(如 BTCUSDT)

响应示例

{
"symbol": "BTCUSDT",
"pnl_weight": "0.40",
"leverage_weight": "0.30",
"size_weight": "0.30",
"min_pnl_percentage": "0.01",
"enabled": true,
"updated_at": "2024-01-01T00:00:00Z"
}

响应字段说明

字段类型描述
symbolstring交易对
pnl_weightstringPnL 权重
leverage_weightstring杠杆权重
size_weightstring仓位大小权重
min_pnl_percentagestring最小盈利百分比(进入队列门槛)
enabledboolean是否启用 ADL
updated_atstring更新时间

获取 ADL 排名

接口信息

  • Method: GET
  • Path: /api/v1/adl/:symbol/rankings
  • Authentication: 不需要

路径参数

参数类型必须描述
symbolstring交易对名称(如 BTCUSDT)

查询参数

参数类型必须描述
sidestring方向(long/short)
limitnumber返回数量(默认 50)

响应示例

{
"market_symbol": "BTCUSDT",
"side": "long",
"rankings": [
{
"rank": 1,
"user_address": "0x742d...0beb",
"position_size": "10000.00",
"leverage": 50,
"pnl_percentage": "25.5",
"adl_score": "85.2",
"risk_indicator": 5
},
{
"rank": 2,
"user_address": "0x123d...0abc",
"position_size": "8000.00",
"leverage": 40,
"pnl_percentage": "20.0",
"adl_score": "78.5",
"risk_indicator": 5
}
]
}

响应字段说明

字段类型描述
market_symbolstring交易对
sidestring方向(long/short)
rankingsarray排名列表

AdlRanking 对象字段

字段类型描述
ranknumber排名(1 为最高风险)
user_addressstring用户地址(部分隐藏)
position_sizestring仓位大小(USD)
leveragenumber杠杆倍数
pnl_percentagestring未实现盈亏百分比
adl_scorestringADL 分数
risk_indicatornumber风险指标(1-5)

获取 ADL 事件历史

接口信息

  • Method: GET
  • Path: /api/v1/adl/:symbol/events
  • Authentication: 不需要

路径参数

参数类型必须描述
symbolstring交易对名称(如 BTCUSDT)

查询参数

参数类型必须描述
limitnumber返回数量(默认 50)

响应示例

{
"events": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"symbol": "BTCUSDT",
"side": "long",
"trigger_liquidation_id": "550e8400-e29b-41d4-a716-446655440001",
"total_reduced_size": "50000.00",
"affected_users": 15,
"insurance_fund_deficit": "5000.00",
"occurred_at": "2024-01-01T00:00:00Z"
}
]
}

响应字段说明

字段类型描述
eventsarrayADL 事件列表

AdlEvent 对象字段

字段类型描述
idstring事件 ID
symbolstring交易对
sidestring被减仓方向
trigger_liquidation_idstring触发清算的 ID
total_reduced_sizestring总减仓规模(USD)
affected_usersnumber受影响用户数
insurance_fund_deficitstring保险基金缺口
occurred_atstring发生时间

获取个人 ADL 历史

接口信息

  • Method: GET
  • Path: /api/v1/adl/history
  • Authentication: 需要身份验证

查询参数

参数类型必须描述
limitnumber返回数量(默认 50)

响应示例

{
"reductions": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"symbol": "BTCUSDT",
"position_id": "550e8400-e29b-41d4-a716-446655440001",
"adl_event_id": "550e8400-e29b-41d4-a716-446655440002",
"side": "long",
"reduced_size": "5000.00",
"reduction_price": "65500.00",
"pnl_realized": "500.00",
"rank_at_reduction": 5,
"occurred_at": "2024-01-01T00:00:00Z"
}
]
}

响应字段说明

字段类型描述
reductionsarray减仓记录列表

AdlReduction 对象字段

字段类型描述
idstring减仓记录 ID
symbolstring交易对
position_idstring仓位 ID
adl_event_idstringADL 事件 ID
sidestring仓位方向
reduced_sizestring减仓规模(USD)
reduction_pricestring减仓价格
pnl_realizedstring已实现盈亏
rank_at_reductionnumber减仓时的排名
occurred_atstring发生时间

获取用户 ADL 统计

接口信息

  • Method: GET
  • Path: /api/v1/adl/:symbol/stats
  • Authentication: 需要身份验证

路径参数

参数类型必须描述
symbolstring交易对名称(如 BTCUSDT)

响应示例

{
"stats": {
"symbol": "BTCUSDT",
"user_address": "0x742d35cc6634c0532925a3b844bc9e7595f0beb",
"current_rank": 25,
"total_participants": 100,
"adl_score": "65.5",
"risk_indicator": 3,
"total_adl_events": 2,
"total_reduced_size": "10000.00",
"total_pnl_from_adl": "1000.00",
"last_adl_at": "2024-01-01T00:00:00Z"
}
}

响应字段说明

字段类型描述
statsobject | null统计信息(无仓位时为 null)

UserAdlStats 对象字段

字段类型描述
symbolstring交易对
user_addressstring用户地址
current_ranknumber当前排名
total_participantsnumber总参与者数
adl_scorestringADL 分数
risk_indicatornumber风险指标(1-5)
total_adl_eventsnumber历史 ADL 次数
total_reduced_sizestring累计减仓规模
total_pnl_from_adlstring累计 ADL 盈亏
last_adl_atstring | null最后一次 ADL 时间

如何降低 ADL 风险

  1. 降低杠杆: 使用较低的杠杆倍数
  2. 及时止盈: 不要让未实现盈亏过高
  3. 分批平仓: 逐步减小仓位规模
  4. 监控排名: 定期查看 ADL 排名和风险指标
  5. 多样化策略: 避免过度集中在单一方向

ADL 补偿

  • 被 ADL 的用户会获得市场最优价格
  • 减仓价格通常优于用户的破产价格
  • 已实现的盈亏会立即结算到账户余额
  • 不收取额外的手续费

说明

  • ADL 是保护系统整体安全的最后手段
  • 只有在保险基金不足时才会触发
  • ADL 事件相对罕见,通常发生在极端市场波动时
  • 排名和风险指标实时更新
  • 所有 ADL 事件公开透明,可供查询

相关接口