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
balance
of 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
pnlRatio
at -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
pnlRatio
values for the symbols reach -30%, the poolbalance
drops 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
}