Skip to main content

Risk parameters

Risk parameters are the numbers that decide how much you can borrow against a position, when a loan can be liquidated, and what a liquidator earns. They work like the terms a pawnshop posts on its wall: how much it lends against an item, and the point at which it may sell that item to recover the loan.

A small example. Budi deposits an ETH/USDG position worth $1,000 into the Blue-chip market, in a pool listed at the preset values. The max LTV of 65% lets him borrow up to 650 USDG. The liquidation threshold of 75% means his loan can be liquidated once his debt is worth more than 75% of his collateral. If he borrows the full 650 USDG, that point is reached when the collateral value falls below $866.67, a drop of 13.33% (ignoring interest, with USDG at $1.00).

The rest of this page lists every parameter, its unit, and who can change it.

Presets and pool listings​

Each market belongs to one tier: Blue-chip or Meme. Each tier has a preset, and a preset is two things at once:

  • the default values for the tier, and
  • the loosest values the contracts accept.

Every pool is listed one by one by the owner (the admin account), and each listing carries its own numbers. CollateralPolicy rejects a listing value that is looser than the preset with the error LooserThanPreset. "Stricter" points in a different direction for each parameter:

ParameterA listing may only be
Max LTVequal to or lower than the preset
Liquidation threshold (LT)equal to or lower than the preset
Liquidator bonusequal to or higher than the preset
Pool debt capequal to or smaller than the preset
Minimum position valueequal to or higher than the preset
Removal haircutbetween 0% and the 20% ceiling

Parameters fall into three groups:

GroupParametersWho sets them
Per poolMax LTV, LT, liquidator bonus, removal haircut, pool debt cap, minimum position valueThe owner, in each pool listing, inside the preset bounds
Per tier (one value per market)Close factor, reserve factor, reserve floor, interest curve, market debt cap, price check at borrowFixed in the contracts, not adjustable per pool
Shared by both marketsMinimum debt, fee cap, removal haircut ceiling, oracle parametersFixed in the contracts, not adjustable per pool

The values in the second and third groups have no setter function. They change only through a contract upgrade, which waits about four days: two in the owner's queue and two in the market's upgrade timelock. See admin powers.

Live values are read on-chain

This page shows the presets. The terms that apply to a given pool are stored in its listing and can be stricter than the tables below.

  • CollateralPolicy.termsOf(poolId) returns the terms in force right now, with the LT already resolved through any active LT ramp.
  • CollateralPolicy.listingOf(poolId) returns the raw listing record, including the frozen flag and the ramp schedule.

See the CollateralPolicy reference.

Per pool parameters​

The Blue-chip and Meme columns show the preset, which is also the loosest value a listing can use.

ParameterFieldBlue-chipMemeMeaning
Max LTV at borrowmaxLtvBps65% (6,500 bps)30% (3,000 bps)The largest debt you can take, as a share of your collateral value. A borrow that would push your loan above it reverts.
Liquidation threshold (LT)ltBps75% (7,500 bps)40% (4,000 bps)The share of collateral value that counts when the health factor is computed. When debt grows past it, HF < 1 and the loan can be liquidated.
Liquidator bonusliquidatorBonusBps5% (500 bps)10% (1,000 bps)The extra collateral value a liquidator receives on top of the debt they repay. It is the gross bonus, before the protocol liquidation fee.
Removal haircutremoveHaircutBps0% to 20%0% to 20%The share of value that the pool's hook takes when liquidity is removed. Collateral value is reduced by it. It is 0 for a pool whose hook takes nothing.
Pool debt capdebtCapUsdg500,000 USDG20,000 USDGThe most debt that all loans backed by this pool can owe together.
Minimum position valueminPositionUsd$50$50The smallest position the market accepts as collateral.

Rules that apply to these values:

  • Borrowing room. While a pool accepts new positions, its max LTV must be above zero and strictly below its LT. A frozen pool takes no new positions or borrows, so its LT may be lowered to the max LTV or below. That is how an LT ramp winds a pool down.
  • Removal haircut. A haircut above zero is accepted only for a pool whose hook has the permission to return a delta when liquidity is removed. A hook that would take more than 20% is treated as unsuitable collateral, not as a reason for a larger discount. Raising the haircut of a pool that is already listed requires the pool to be frozen first.
  • Minimum position value. It is measured on the principal alone, after the removal haircut. Unclaimed fees do not count, because they can be claimed a moment later. The check runs when a position is deposited and when liquidity is removed from it.
  • Pool debt cap. It is stored as an absolute USDG amount and compared with the pool's debt in USDG, so no price is needed.
New terms apply to existing loans

The owner can tighten a pool's terms. The change waits two days in the owner's queue, and then takes effect for loans that already exist. A lower LT can make a healthy loan liquidatable. See admin powers.

Per tier parameters​

These values belong to the market. Every pool in the market shares them.

ParameterBlue-chipMemeMeaning
Close factor50%. It becomes 100% if HF < 0.9 or debt < 100 USDG100%The largest share of a loan's debt that one liquidation may repay.
Reserve factor15% (1,500 bps)25% (2,500 bps)The share of borrower interest that goes to the protocol reserves. The rest goes to lenders.
Reserve floor1% of totalAssets (100 bps)2.5% of totalAssets (250 bps)The amount of reserves the owner cannot withdraw. Only reserves above the floor can leave the market.
Interest curve: kink80%70%The utilization at which the borrow rate starts to climb steeply.
Interest curve: slope 14% per year8% per yearThe borrow rate reached at the kink.
Interest curve: slope 260% per year100% per yearThe extra borrow rate added between the kink and 100% utilization.
Market debt cap500,000 USDG50,000 USDGThe most debt the whole market can owe. It is compared with totalBorrows.
Price check at borrowPool spot price within 2% of the Chainlink priceMeme token valued at min(spot, TWAP)The protection against borrowing at a manipulated price.

Notes:

  • Close factor. The 100 in the Blue-chip rule is 100 USDG of debt, not $100. The health factor used for this rule is the one computed with liquidation prices. Details are in liquidation mechanics.
  • Reserve floor. The floor does not add funds. It keeps part of the reserves that have already accumulated inside the market, where they absorb bad debt before lenders do. See protocol fees and reserves.
  • Two debt caps. A borrow must fit under both the pool debt cap and the market debt cap.

Interest curve​

The borrow rate depends only on utilization, the share of the market's USDG (cash plus outstanding debt) that is currently borrowed.

if utilization <= kink:
borrowRate = slope1 × utilization / kink
else:
borrowRate = slope1 + slope2 × (utilization - kink) / (1 - kink)
UtilizationBlue-chip borrow rateMeme borrow rate
0%0%0%
Half of the kink (40% and 35%)2%4%
At the kink (80% and 70%)4%8%
100%64%108%

Rates are annual. The contract divides the annual rate by 31,536,000 (the seconds in 365 days) and applies it per second. See interest rates and the InterestRateModel reference.

Parameters shared by both markets​

ParameterValueMeaning
Minimum debt10 USDGA borrow must leave the position with at least 10 USDG of total debt. Smaller loans are not worth liquidating.
Fee cap10% of principal valueUnclaimed fees count as collateral only up to one tenth of the principal value.
Removal haircut ceiling20% (2,000 bps)The largest removal haircut a listing can record.

Protocol liquidation fee​

The protocol liquidation fee is not stored anywhere. It is derived from the pool's liquidator bonus at the moment of liquidation:

protocolLiqFeeBps = liquidatorBonusBps / 10 (integer division, rounded down)
protocolFee = repay × protocolLiqFeeBps / 10,000

The liquidator pays the fee in USDG on top of the repaid amount, and it is credited to the market's reserves.

Blue-chip presetMeme preset
Liquidator bonus5%10%
Protocol liquidation fee0.5% of repay1% of repay
Liquidator net margin4.5% of repay9% of repay

Because the fee follows the bonus, a pool listed with a higher bonus pays a higher protocol fee automatically. Rounding down always favors the liquidator: a bonus of 555 bps gives a fee of 55 bps.

For example, Rina repays 1,000 USDG on a Blue-chip pool at the preset values, with USDG at $1.00. She receives collateral worth $1,050 and pays a 5 USDG protocol fee. Her margin is $45, or 4.5% of the repaid amount, before gas and swap costs.

Oracle parameters​

These values are the same in both markets. Chainlink prices ETH, WETH and USDG. Meme tokens are priced by the on-chain TwapRecorder, in USDG, and then converted with the Chainlink USDG price. See price oracles.

ParameterValueMeaning
Chainlink staleness limit25 hoursA Chainlink price older than this is refused, and the call that needs it reverts with StalePrice. The ETH/USD feed has a 24 hour heartbeat, so the limit leaves one hour of slack.
USDG price bounds0.97 to 1.03 USDOutside this range, borrowing is blocked, and so is any action that takes value out of a position that has debt. Inside the range, USDG is valued at its feed price. It is never assumed to be exactly $1.
Spot deviation gate (Blue-chip)2% (200 bps)If the pool's spot price is more than 2% away from the Chainlink price, borrowing against positions in that pool is blocked, and so is any action that takes value out of a position that has debt. Liquidations are not blocked: they keep using the Chainlink price.
TWAP window1,800 s (30 minutes)The period over which the time-weighted average price of a meme token is computed.
TWAP staleness limit900 s (15 minutes)If the newest observation of a pool is older than this, the TWAP is unavailable and the pool is in stale mode.
Crash threshold25% (2,500 bps)In a liquidation, a meme token is valued at the TWAP. If the spot price is more than 25% below the TWAP, the spot price is used instead, because the average is lagging behind a real crash.
Stale haircut20% (2,000 bps)In stale mode, liquidations value the meme token at the spot price minus 20%. A borrow records a fresh observation first, so it ends stale mode by itself when the pool has at least 30 minutes of recorded history. Borrowing is blocked only while the pool has less than 30 minutes of history.
Observation capacity2,048 per poolThe number of price observations the recorder keeps for each pool. The recorder writes at most one observation per second, so the buffer always covers the 30 minute window.

For a pool that already has 30 minutes of recorded history, stale mode ends as soon as anyone calls TwapRecorder.record for the pool, which is a permissionless function. Every market action on a meme pool except liquidate makes this call itself before it reads the price. The USDG bounds and the spot deviation gate apply to borrowing and to actions that take value out of a position that has debt. They never stop a liquidation. See the TwapRecorder reference and oracle and market risks.

Units​

QuantityUnitExample
Percentages in listings and eventsBasis points (bps). 10,000 bps is 100%6500 is 65%
USDG amounts (debt, caps, reserves, repay)USDG with 6 decimals500000000000 is 500,000 USDG
USD values (prices, position value, minPositionUsd)USD scaled by 1e1850000000000000000000 is $50
Health factorScaled by 1e181000000000000000000 is an HF of 1
Utilization and interest ratesScaled by 1e18800000000000000000 is 80%
TierEnum0 is none, 1 is Blue-chip, 2 is Meme

The pool debt cap and the minimum position value sit next to each other in a listing but use different units. debtCapUsdg is USDG with 6 decimals. minPositionUsd is USD scaled by 1e18.

Derived figures​

These numbers are not stored. They follow from the presets.

collateralValue = (principalUsd + min(feesUsd, principalUsd / 10)) × (1 - removalHaircut)
HF = collateralValue × LT / debtUsd
LTV = debtUsd / collateralValue
buffer = 1 - maxLTV / LT
FigureBlue-chipMemeMeaning
Safety margin between max LTV and LT13.33%25%How far the collateral value can fall before a loan opened exactly at max LTV becomes liquidatable.
Liquidator net margin4.5%9%The liquidator bonus minus the protocol liquidation fee, as a share of the repaid amount.
Health factor of a loan opened at max LTV1.1541.333LT / maxLTV. The starting point of a loan that borrows the maximum.

The buffer is measured as a fall in collateral value. It ignores interest, which slowly raises the debt and brings a loan closer to liquidation even when prices do not move. See health factor.