ADL trigger
Forced auto-deleveraging — insurance fund depleted, profitable counter-positions force-closed by (pnl × leverage) rank to absorb the remaining deficit.
Oracle drop from 110 → 30 with an empty book: the long is liquidated Underwater and the maker short is force-closed via ADL.
What happens
One long (10) opens against one short maker (40) at entry 110; both stay healthy at block 1's stub mark (100). At block 2 the oracle index price prints 30 — a 73% drop. The long is now deeply underwater (collateral 50, mark-to-mark loss 80 per contract), and the CLOB book is empty (the maker order was already fully consumed), so the close-loop has no liquidity to absorb the long. The Underwater close kicks the residual into the insurance fund and ADL force-closes the maker counterparty at the haircut price. Use this scenario to see the insurance-fund + ADL path fire on a single-position, no-liquidity oracle shock — the textbook reason ADL exists.
Declared outcomes
Each declared outcome is scored ✓ pass / ✗ fail against the run’s actual state.
- Long (10) and maker short (40) — exactly two trading accounts after the chain history applies.
- The 73% oracle drop flags the long for liquidation.
- With no resting bids to absorb the close, ADL force-closes the maker short.
- Account 10's long is fully closed by the liquidation.
- Account 40's short is fully closed by ADL.
5 of 5 outcome(s) verified.
Verbatim report
The exact 5-section report the run emits — identical every run.
─── scenario: adl-trigger ────────────────────────────────────
HEADLINE ✓: Oracle drop from 110 → 30 with an empty book: the long is liquidated Underwater and the maker short is force-closed via ADL.
DESCRIPTION:
One long (10) opens against one short maker (40) at entry 110; both stay healthy at block 1's stub mark (100). At block 2 the oracle index price prints 30 — a 73% drop. The long is now deeply underwater (collateral 50, mark-to-mark loss 80 per contract), and the CLOB book is empty (the maker order was already fully consumed), so the close-loop has no liquidity to absorb the long. The Underwater close kicks the residual into the insurance fund and ADL force-closes the maker counterparty at the haircut price. Use this scenario to see the insurance-fund + ADL path fire on a single-position, no-liquidity oracle shock — the textbook reason ADL exists.
TIMELINE (per-block):
height mark src trades fills deposits liqs adl fund
------ ------ --------------- ------ ----- -------- ---- --- ----
1 100 stub-empty-book 2 1 2 0 — —
2 30 oracle 0 0 0 1 yes —
3 30 oracle 0 0 0 0 — —
ACCOUNT DELTA (final − initial):
account collateral position avg_entry
------- ---------- -------- ---------
10 0 0 110
40 350 0 110
(initial account count: 0, final account count: 2)
OUTCOMES:
✓ Long (10) and maker short (40) — exactly two trading accounts after the chain history applies.
✓ The 73% oracle drop flags the long for liquidation.
✓ With no resting bids to absorb the close, ADL force-closes the maker short.
✓ Account 10's long is fully closed by the liquidation.
✓ Account 40's short is fully closed by ADL.
5 of 5 outcome(s) verified.
NOTE: v1 runs the scenario in-process against a unit-provider
`LiveRethEvmBridge<()>` (no Reth boot). For the production-shape
run (real Reth + Malachite + JSON-RPC), use:
openhl reth-devnet --chain-history scenarios/adl-trigger.json --rounds 3
NEXT:
• Adopt this engine : https://github.com/psyto/rdk
• Custom build : https://fabrknt.com/waitlist.html?product=evm-perp&intent=build
• Hosted access : https://fabrknt.com/waitlist.html?product=evm-perp&intent=hosted