FABRKNT
← EVM Perp
EVM Perp · SandboxPass

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.

5 of 5 outcome(s) verified.

Step through the run, block by block
Mark100Sourcestub-empty-bookTrades2Fills1Deposits2Liquidations0ADL

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

Other scenarios