Skip to main content

Oracle type

Every market prices collateral through an oracle. The type decides how a depeg affects you:

nav

Prices by redemption / net asset value. A DEX depeg won’t liquidate you — the position tracks the collateral’s underlying value.

market

Prices from a market feed. A depeg can liquidate you even if the collateral still redeems 1:1. Weigh against ltvPct.liquidation headroom.
For a correlated stable loop with a nav oracle, liquidation risk largely collapses to a single question: does the collateral hold its peg? That’s the same risk a passive lender in the same market already carries.

Exit liquidity

exitLiquidity.slippagePct is measured per USD size:
  • A number is the slippage to unwind at that size (negative = price improvement).
  • null = no route at that size.
  • maxLeverage is derived from this — it’s a liquidity bound, not a safety bound.
High headline APY on a market-oracle strategy with thin exit liquidity is a trap: the yield is real on paper but unreachable at size, and the position can liquidate on a temporary depeg. Always read oracle type and exit liquidity together.

If exit liquidity dries up

A one-shot close swaps the full leveraged collateral back to the loan token, so it needs a live route. If that route disappears, the build fails closed with a clear error — you get an error, never a broken transaction.
You are never trapped. Two actions need no swap route at all:
  1. repay — paying in the loan token clears the debt directly (no swap).
  2. remove_collateral — withdraws the collateral in-kind (no swap).
Repay the debt with your own funds, then withdraw the collateral as the collateral token. This unwind works regardless of exit liquidity — it never touches the collateral’s market.
The one prerequisite is having funds to repay with. If you don’t, you’re dependent on the collateral’s route (or liquidation) — which is exactly why get_positions reports exit health per position, so you can act while a route still exists.

Watch it per position, not per market

A market can be “deep” while your position is still larger than the depth that exits cleanly. get_positions returns exitLiquidity for each position — including exceedsCleanExitSize — measured against that position’s full unwind notional (closing swaps all the collateral, not just your equity). Poll it and unwind early rather than discovering the problem when close throws.