Get ADL Alert
Query for ADL (auto-deleveraging mechanism) alerts and insurance pool information.
Covers: USDT Perpetual / USDT Delivery / USDC Perpetual / USDC Delivery / Inverse Contracts
Data update frequency: every 1 minute.
- ADL trigger and stop conditions are based on the following three cases:
Contract PnL drawdown ADL (based on the new grouped insurance pool mechanism, see examples 1 and 2)
Trigger condition:
balance(insurance fund balance) >adlTriggerThreshold(trigger threshold for contract PnL drawdown ADL)
andpnlRatio<insurancePnlRatio(PnL ratio threshold for triggering ADL)Where:
- pnlRatio: drawdown ratio of the symbol in the last 8 hours
Formula:pnlRatio= (Symbol's current PnL - Symbol's 8h max PnL) / Insurance pool's 8h max balance (maxBalance)
Note: the symbol's Current PnL and 8h Max PnL are not provided by the API. - Insurance pool 8h max balance (
maxBalance): the maximum balance of the grouped insurance pool in the last 8 hours
- pnlRatio: drawdown ratio of the symbol in the last 8 hours
Stop condition:
pnlRatio>adlStopRatio(stop ratio threshold for ADL)
Insurance pool equity drawdown ADL (original mechanism, see example 3)
- Trigger condition:
balance(insurance fund balance) ≤ 0 - Stop condition:
balance(insurance fund balance) > 0
- Trigger condition:
Excessive margin loss of a symbol after removing it from a grouped insurance pool (can be regarded as a special case of pool equity drawdown ADL)
- To ensure pool safety, the risk control team may remove a symbol from its grouped pool and temporarily establish it as a new independent insurance pool.
- Trigger condition:
balance(insurance fund balance) ≤ 0 - Stop condition:
balance(insurance fund balance) > 0
Example 1: Pool has no significant profit in the last 8 hours, then symbol loss exceeds the PnL ratio threshold (
insurancePnlRatio), ADL will be triggered- Assume symbols A, B, and C share the same pool with an initial 8h
balanceof 1M USDT - A incurs a loss of 350K
- Calculation:
pnlRatio= -35%balance= 1MadlTriggerThreshold= 1 (a constant set by Bybit)insurancePnlRatio= -0.3 (a constant set by Bybit)
- Condition check:
balance(1M) >adlTriggerThreshold(1)pnlRatio(-0.35) <insurancePnlRatio(-0.3)
- → Contract PnL drawdown ADL is triggered
- The system calculates the bankruptcy price at -30% drawdown so ADL closes 50K worth of user positions to keep A's
pnlRatioat -30% - Stop condition: ADL stops if A's
pnlRatio>adlStopRatio(-0.25, a constant set by Bybit)
Recovery methods:
- Platform injects funds into the pool and adjusts A's PnL
- Pool continues to take A's positions and earns maintenance margin through liquidation on the market
- Assume symbols A, B, and C share the same pool with an initial 8h
Example 2: Pool has significant profit in the last 8 hours, but symbol loss exceeds the PnL ratio threshold (
insurancePnlRatio), ADL will still be triggered- Assume symbols A, B, C share the same pool, initial
balance= 1M USDT - A gains profit through liquidation, pool 8h Max Balance = 2M USDT (A's PnL = +1M)
- Later A incurs a loss of 600K
- Calculation:
pnlRatio= -30%balance= 2MadlTriggerThreshold= 1 (a constant set by Bybit)insurancePnlRatio= -0.3 (a constant set by Bybit)
- Condition check:
balance(2M) >adlTriggerThreshold(1)pnlRatio(-0.30) ≤insurancePnlRatio(-0.3)
- → Contract PnL drawdown ADL is triggered
- The system calculates the bankruptcy price at -30% drawdown
- Stop condition: ADL stops if A's
pnlRatio>adlStopRatio(-0.25, a constant set by Bybit)
Recovery methods:
- Platform injects funds into the pool and adjusts A's PnL
- Pool continues to take A's positions and earns maintenance margin through liquidation on the market
- Assume symbols A, B, C share the same pool, initial
- Example 3: Pool balance reaches zero which triggers ADL
- Assume symbols A, B, C, D share the same pool, initial
balance= 1M USDT - Although none of the
pnlRatiovalues for the symbols reach -30%, the poolbalancedrops to 0 - Condition check:
balance(0) ≤ 0
- → Insurance pool equity ADL is triggered
- The system redistributes bankruptcy loss across symbols based on their PnL when pool balance = 0
- Stop condition: ADL stops if
balance> 0
- Assume symbols A, B, C, D share the same pool, initial
Subscribe to the ADL WebSocket topic for faster updates.
HTTP Request
GET /v5/market/adlAlert
Request Parameters
| Parameter | Required | Type | Comments |
|---|---|---|---|
| symbol | false | string | Contract name, e.g. BTCUSDT. Uppercase only |
Response Parameters
| Parameter | Type | Comments |
|---|---|---|
| updateTime | string | Latest data update timestamp (ms) |
| list | array | Object |
| > coin | string | Token of the insurance pool |
| > symbol | string | Trading pair name |
| > balance | string | Balance of the insurance fund. Used to determine if ADL is triggered |
| > maxBalance | string | Maximum balance of the insurance pool in the last 8 hours |
| > insurancePnlRatio | string | PnL ratio threshold for triggering contract PnL drawdown ADL
|
| > pnlRatio | string | Symbol's PnL drawdown ratio in the last 8 hours. Used to determine whether ADL is triggered or stopped |
| > adlTriggerThreshold | string | Trigger threshold for contract PnL drawdown ADL
|
| > adlStopRatio | string | Stop ratio threshold for contract PnL drawdown ADL
|
Request Example
- HTTP
- Python
- Go
- Java
- Node.js
GET /v5/market/adlAlert&symbol=BTCUSDT HTTP/1.1
Host: api-testnet.bybit.com
Response Example
{
"retCode": 0,
"retMsg": "OK",
"result": {
"updatedTime": "1757733960000",
"list": [
{
"coin": "USDT",
"symbol": "BTCUSDT",
"balance": "92203504694.99632",
"maxBalance": "92231510324.75948",
"insurancePnlRatio": "-0.3",
"pnlRatio": "-0.560973",
"adlTriggerThreshold": "10000",
"adlStopRatio": "-0.25"
}
]
},
"retExtInfo": {},
"time": 1757734022014
}