Glossary
A collection of important terms and concepts
General
Asset
A specific crypto asset or ERC20 token, or extensions thereof.
Collateral Asset
The Asset that is deposited as collateral in a specific lending pair or Position.
Loan Asset
The Asset that is borrowed in a specific lending pair or Position.
Pool
An isolated lending arrangement that supports the lending and borrowing of different Assets, each a lending Market.
Market
A specific Asset that can be lent and borrowed in a Pool.
Position
A specific lend or borrow position characterized by the Collateral Asset, Loan Asset, and Pool ID.
Funds
The amount of an Asset supplied in a specific Market.
Collateral Asset Price
The USD price of the Collateral Asset as reported by the Pool’s oracle price feed.
Loan Asset Price
The USD price of the Loan Asset as reported by the Pool’s oracle price feed.
Interest Rates
Interest Rate Curve
The specific model according to which the Interest Rate adjusts to the lending and borrowing activity in a given Market.
This model is implemented in Vesu’s lending hooks and configured in each Market individually.
Interest Rate Curve Controller
A submodule of the Interest Rate Curve that controls how the Full Utilization Rate, and thus the shape of the Interest Rate Curve, is adjusted based on the lending and borrowing activity in a Market.
Zero Utilization Rate
The per-second interest rate that applies for a Utilization of 0% in a given Market.
The Zero Utilization Rate is static and can only be changed by the Pool Curator.
Target Utilization
The Utilization that is configured as the target for a given Market.
Note, the Target Utilization is always larger than 0% and smaller than 100%.
Minimum Full Utilization Rate
The minimum value that the per-second interest rate can be for a Utilization of 100% in a given Market.
The Minimum Full Utilization Rate is static and can only be changed by the Pool Curator.
Maximum Full Utilization Rate
The maximum value that the per-second interest rate can be for a Utilization of 100% in a given Market.
The Minimum Full Utilization Rate is static and can only be changed by the Pool Curator.
Last Updated
The timestamp reflecting the block in which the Last Full Utilization Rate (and the Rate Accumulator) was adjusted the last time by the Interest Rate Curve Controller.
Last Full Utilization Rate
The last value of the Full Utilization Rate that was snapshotted at the Last Updated timestamp by the Interest Rate Curve Controller.
Full Utilization Rate
The current per-second interest rate that applies for a Utilization of 100% in a given Market.
The Interest Rate Curve Controller constantly adjusts the Full Utilization Rate within the Minimum Full Utilization Rate and Maximum Full Utilization Rate depending on whether the Utilization exceeds or subceeds the Market’s Target Utilization.
time_delta = current_timestamp - last_updated
if utilization < min_target_utilization:
utilization_delta = (min_target_utilization - utilization) / min_target_utilization
decay = rate_half_life + (utilization_delta * time_delta)
full_utilization_rate = (last_full_utilization_rate * rate_half_life) / decay
else if utilization > max_target_utilization:
utilization_delta = (utilization - max_target_utilization) / (1 - max_target_utilization)
growth = rate_half_life + (utilization_delta * time_delta)
full_utilization_rate = (last_full_utilization_rate * growth) / rate_half_life
else:
full_utilization_rate = last_full_utilization_rate
Note, the Full Utilization Rate is only updated by the Interest Rate Curve Controller if the current Utilization exceeds the configured threshold values Min Target Utilization and Max Target Utilization.
Target Rate Percent
The value of the per-second interest rate expressed as a percentage of the Full Utilization Rate of a given Market.
Target Rate
The per-second interest rate that applies for a Utilization exactly at the Target Utilization for a given Market.
target_rate = zero_utilization_rate + (full_utilization_rate - zero_utilization_rate) * target_rate_percent
Interest Rate
The per-second interest rate based on the current or a projected Utilization and the Interest Rate Curve of a given Market.
interest_rate(utilization) =
if utilization < target_utilization:
zero_utilization_rate + utilization * (target_rate - zero_utilization_rate) / target_utilization
else:
target_rate + (utilization - target_utilization) * (full_utilization_rate - target_rate) / (1 - target_utilization)
Rate Accumulator
An index tracking the accumulation of interest based on the current Utilization and Interest Rate in a given Market.
The Rate Accumulator always starts with a value of 1.0 for a newly initiated Market and is constantly updated with each user interacting with the Market based on the then applicable Interest Rate.
rate_accumulator = last_rate_accumulator * (1 + interest_rate(current_utilization)) ** (current_timestamp - last_updated)
Pools & Markets
Total Nominal Debt
The total debt outstanding in a Market, across all Positions, excluding accumulated interest.
Total Debt
The total debt outstanding in a Market, across all Positions, including accumulated interest.
total_debt = rate_accumulator * total_nominal_debt
Total Collateral Shares
The total shares outstanding, across all Positions, for a Market. These shares are eligible to claim the Market‘s Total Supplied.
Reserves
The portion of Funds in a Market that is not borrowed, or the idle liquidity in a Market.
Total Supplied
The total Funds supplied in a Market including Total Debt outstanding.
total_supplied = reserves + total_debt
Utilization
The percentage of Funds borrowed in a Market.
utilization = total_debt / total_supplied
Max Utilization
The maximal percentage of Funds that is enabled to be borrowed in a Market. By default, this is 100% but can be lower for different Markets.
max_utilization <= 100%
Total Liquidity
The total Funds available in a Market Borrowers to borrow and Lenders to withdraw.
total_liquidity = max_utilization * total_supplied
Liquidity
The remaining Funds available in a Market for lenders or borrowers to withdraw.
liquidity = max(0, total_liquidity - total_debt)
Debt Cap
The maximal amount of Total Debt of a Market beyond which borrowing is restricted.
total_debt <= debt_cap
Debt Floor
The minimal Position Debt, expressed in USD, a “Borrow” position must be created with.
Total Debt Capacity
The remaining debt a Market allows to borrow given its Liquidity and Debt Cap.
debt_capacity = min(liquidity, max(0, debt_cap - total_debt))
Borrow APR
The current simple interest rate, that is the interest rate without per-second compounding effect, that applies on a Borrower’s Nominal Debt based on the current Utilization and Interest Rate in a given Market.
borrow_apr = (1 + interest_rate(current_utilization)) ** (360 * 86400) - 1
Lending APR
The current simple interest rate, that is the interest rate without per-second compounding effect, that Lenders in a given Market earn.
lending_apr = utilization * borrow_apr
Positions
Position Nominal Debt
The debt of a Position excluding accumulated interest.
Position Debt
The debt of a Position including accumulated interest.
position_debt = rate_accumulator * position_nominal_debt
Position Collateral Shares
The shares of a Market owned by a Position.
Position Collateral
The Funds claimable by the Position Collateral Shares of a Position.
Position Loan-to-Value
The percentage value of a Position’s Position Debt given its Position Collateral.
position_ltv = (position_debt * loan_asset_price) / (position_collateral * collateral_asset_price)
Liquidation Loan-to-Value
The maximal Position Loan-to-Value of a Position beyond which it is available for liquidation in a given Market.
Max Loan-to-Value
The maximal Position Loan-to-Value of a Position beyond which borrowing is restricted in order to ensure a minimal health factor for newly created or updated Borrow Positions.
max_ltv = 0.95 * liquidation_ltv
Collateral Liquidation Price
The Collateral Asset Price that has to be reached for a Position to be liquidated, assuming the Position’s current Position Collateral, Position Debt and a constant Loan Asset Price.
collateral_liquidation_price = (position_debt * loan_asset_price) / (position_collateral * liquidation_ltv)
Loan Liquidation Price
The Loan Asset Price that has to be reached for a Position to be liquidated, assuming the Position’s current Position Collateral, Position Debt and a constant Collateral Asset Price.
loan_liquidation_price = liquidation_ltv * position_collateral * collateral_asset_price / position_debt
Position Debt Capacity
The remaining debt a Position allows to borrow, given the Position’s current Position Collateral, Position Debt and the Pool’s Max Loan-to-Value.
position_debt_capacity = (max_ltv * position_collateral * collateral_asset_price / loan_asset_price) - position_debt
Multiply
Multiply Position
A Position involving two correlated Collateral Asset and Loan Asset with the goal of increasing the (long) exposure to the Collateral Asset while “shorting” the Loan Asset.
A Multiply Position in fact is represented as a regular Borrow Position with the difference that the borrowed Loan Asset is swapped to more of the Collateral Asset which is then deposited as additional Position Collateral. Or, when closing a Multiply Position, a portion of the Position Collateral is swapped to the Loan Asset to repay the Position Debt.
Multiply Asset
The Asset multiplied in a “Multiply” Position or, in other words, the Collateral Asset in which exposure is built up.
Swap Quote
The spot price quoted by the external DEX market for the swap of borrowed Loan Assets to the Multiply Asset when creating (or increasing) the Multiply Position. Or, the spot price quoted for the swap of Position Collateral to the Loan Asset when closing (or decreasing) the Multiply Position or computing it’s Net Asset Value.
Note, currently Vesu is integrated with the Ekubo DEX spot market for the execution of Multiply Positions.
Net Asset Value
The amount of Collateral Assets a Multiply Position allows to withdraw after repaying its Position Debt, expressed in Collateral Asset units.
net_asset_value = position_collateral - swap_quote * position_debt
Multiplier
The exposure in the Multiply Asset expressed as the proportion of the Multiply Position’s total Position Collateral compared to its Net Asset Value.
multiplier = position_collateral / net_asset_value
Max Multiplier
The maximal Multiplier of a Multiply Position beyond which borrowing is restricted in order to ensure a minimal health factor for newly created or updated Borrow Positions.
max_multiplier = swap_quote * debt_asset_price / (swap_quote * debt_asset_price - max_ltv * collateral_asset_price)
Note, this formula accounts for a possible mismatch between the Assets’ Oracle prices and spot prices, as achieved in a DEX swap. The formula simplifies under the assumption that these prices are the same.
max_multiplier = 1 / (1 - max_ltv)
Net APR
The net yield of a Multiply Position when accounting for all accumulating yield on its Position Collateral and borrow cost on the Position Debt. The Net APR is expressed as a simple annualized rate, that is without accounting for per-second compounding.
net_apr = multiplier * (asset_apr + lending_apr + rewards_apr) - (multiplier - 1) * borrow_apr
Max APR
The maximal Net APR of a Multiply Position based on the Max Multiplier.
max_apy = max_multiplier * (asset_apr + lending_apr + rewards_apr) - (max_multiplier - 1) * borrow_apr
Liquidation Price
The price of the Collateral Asset expressed in terms of the Loan Asset that has to be reached for a Multiply Position to be liquidated, assuming the Position’s current Position Collateral and Position Debt.
liquidation_price = position_debt / (position_collateral * liquidation_ltv)
Effective APRs
Effective Borrow APR
The effective Borrow APR a Borrower will pay after taking out a Loan.
effective_borrow_apr(projected_utilization) =
(1 + interest_rate(projected_utilization)) ** (360 * 86400) - 1
with
projected_utilization = (total_debt + loan) / total_supplied
Effective Lending APR
The effective Lending APR a Lender will earn after her Deposit.
effective_lending_apr(projected_utilization) =
projected_utilization * ((1 + interest_rate(projected_utilization)) ** (360 * 86400) - 1)
with
projected_utilization = total_debt / (total_supplied + deposit)
Effective Net APR
The effectie Net APR of a Multiply Position will generate after taking into account a user’s Deposit (or Withdrawal) and new Multiplier.
effective_net_apr = new_multiplier * (asset_apr + effective_lending_apr(projected_utilization_lending) + rewards_apr) - (new_multiplier - 1) * effective_borrow_apr(projected_utilization_borrow)
with
projected_utilization_lending = total_debt / (total_supplied + deposit)
projected_utilization_borrow = (total_debt + delta_debt) / total_supplied