Bucket book (price buckets, highest to lowest)
Debt is drawn from the highest-price buckets first. LUP is the price of the lowest bucket you need to reach to cover total pool debt.
| Bucket price ($) | Deposit at bucket ($) |
|---|
Your loan
Bucket walk-down
Cumulative deposit accumulated from the highest bucket down; LUP is the first bucket where cumulative deposit reaches total pool debt.
| Bucket price | Deposit | Cumulative | Covers pool debt? |
|---|
Oracle-free, order-book-derived price
LUP replaces a price oracle entirely — it comes only from lender deposit buckets versus pool debt, the same order-book logic used by the fixed-rate loan auction mechanic, but continuous instead of periodically cleared. Compare against oracle-driven markets with the Morpho adaptive-curve IRM and multi-protocol lending rate comparator, or check a position's buffer with the margin ratio calculator and tiered maintenance margin calculator.
Why Ajna's risk model has no oracle in it anywhere
Every mainstream lending market — Aave, Compound, Morpho, Euler — prices collateral with an external oracle: a feed that reports "1 ETH = $2,300" and triggers liquidation when a position's collateral value divided by debt crosses a threshold. That design works well for deep, liquid assets but breaks down for anything thin: a manipulable spot price on a low-liquidity pool can trigger cascading, unfair liquidations, which is exactly why long-tail tokens rarely get listed on oracle-based markets at all. Ajna Finance removes the oracle from the equation entirely. Lenders don't deposit into a single pool at a floating rate; they deposit into discrete price buckets they choose themselves, effectively naming the price at which they're willing to lend against that collateral. Borrowers draw debt starting from the highest-priced buckets and working down, exactly like a limit order book being consumed by a market order.
The Lowest Utilized Price is simply the price of the lowest bucket needed to fully back all outstanding pool debt once you sum deposit from the top down — it is a mechanical readout of the book, not a market observation. Every loan's own Threshold Price (debt divided by pledged collateral) is then compared directly against that LUP: if TP stays below LUP, the position is solvent by the pool's own internal accounting; if TP rises above LUP, the loan becomes eligible for a liquidation auction regardless of what any external exchange says the asset is trading at. This is the genuinely different part: a position can move from safe to liquidatable purely because other lenders withdrew deposit from high buckets, or other borrowers drew more debt from the top of the book — with the token's actual market price completely unchanged. Oracle-based protocols cannot produce that outcome; Ajna produces it structurally, by design.
The tradeoff is that borrowers in an oracle-free pool must watch pool-level utilization and bucket depth, not just the token's spot price, because LUP can drift against them even on a quiet day for the underlying asset. This calculator walks the bucket book the same way the protocol does — summing deposit from the highest price down until it covers total pool debt — so you can see exactly which bucket sets LUP and how close your own loan's Threshold Price is to losing its cushion.
FAQ
What is the Lowest Utilized Price (LUP) in Ajna Finance?
Ajna has no external price oracle at all. Lenders deposit quote tokens into discrete price buckets, ranked from highest to lowest price. When debt is drawn from the pool, it draws first from the highest-price buckets downward. The LUP is the price of the lowest bucket needed to cover all outstanding pool debt once you sum deposit from the top bucket down. It moves automatically as lenders add or remove liquidity and as borrowers draw or repay debt — it is entirely a function of the order book, never an external feed.
What is a loan's Threshold Price (TP) and how does it differ from LUP?
Threshold Price is per-loan: TP = debt / pledged collateral, the price at which that specific position's collateral value exactly equals its debt. LUP is pool-wide: the marginal price implied by all lenders' deposits relative to all pool debt. A loan is compared against LUP, not against any market price — collateralization ratio for risk purposes is computed as (collateral × LUP) / debt.
When does an Ajna loan become eligible for liquidation?
A loan becomes liquidatable once its Threshold Price rises above the pool's LUP (equivalently, its collateralization ratio at LUP drops below 1.0). This can happen either because the borrower's debt grows relative to collateral, or because LUP itself falls — which happens when lenders withdraw liquidity from high buckets or other borrowers draw more debt from the top of the book. Unlike oracle-based protocols, a price crash somewhere else on-chain cannot trigger liquidation here; only the pool's own deposit/debt balance can.
Why does Ajna avoid a price oracle entirely?
Oracle-based lending markets (Aave, Compound, Morpho) inherit every risk of the oracle itself: staleness, manipulation via thin-liquidity spot feeds, and the need for a trusted price source per asset, which is why long-tail tokens rarely get listed. Ajna's bucket mechanism replaces that external price with an internal one derived only from what lenders are actually willing to lend at, letting any token pair form a permissionless pool without anyone providing or securing a price feed for it.
Can LUP fall even if the underlying asset's market price hasn't moved?
Yes, and this is the key mechanical difference from oracle-based risk. If lenders pull deposit out of the buckets currently propping up LUP, or if other borrowers draw additional debt that eats through the higher buckets, LUP drops purely from pool-level supply and demand for credit — with zero change in the collateral's actual market price. Every existing loan's Threshold Price stays the same, but its collateralization ratio against LUP falls, which is why Ajna borrowers must watch pool utilization, not just spot price.