Money Market

NEP tokens are distributed to borrowers in the NEPRI money market. For additional information on NEP distribution for Lucra Protocol, see here.

Lucra's money market is a Compound-inspired lending protocol for lending out deposited NEPRI nYUSD stablecoins to borrowers. Lucra sources its deposit yields from lAsset-collateralized loans, where rewards of their lAsset collaterals are utilized to subsidize the deposit rate.

The protocol leverages lAsset rewards to catalyze a positive usage cycle: subsidies incentivize new nYUSD stablecoin deposits, lowering the borrow rate, which incentivizes more lAsset-collateralized loans, and enables more lAsset rewards to be collected.


Index-Based Interest Accrual

Interest on borrows is computed via the interest index. The interest index exists in two forms, a global value and a user-specifically stored value.

Global Interest Index

The global interest index acts as the reference value for interest accrual, tracking the amount of interest that a single unit of NEPRI nYUSD stablecoin liability would have accrued since protocol creation.

For every user interaction, the global interest index is updated to reflect the interest accrued since last user interaction. The effective interest rate between current time t2\text{t}_\text{2} and the time of last user interaction t1\text{t}_\text{1} is proportional to the borrow rate at t1\text{t}_\text{1} :

effectiveRate=borrowRatet1(t2t1)effectiveRate = borrowRate_ {t_{1}} ⋅(t _{2} ​−t _{1} )

To account for the interest accrual of effectiveRate\text{effectiveRate}, the global interest index Indexglobal,t1\text{Index}_{\text{global},\,\text{t}_\text{1}} is updated to the interest-accrued value of Indexglobal,t2\text{Index}_{\text{global},\,\text{t}_\text{2}} :

Indexglobal,t2=Indexglobal,t1(1+effectiveRate)Index _ {global, _{t_{2}}} ​ =Index_ {global, _{t_{1}}} ⋅ (1+effectiveRate)

Note that interest-only compounds when a user interaction occurs.

User Interest Index

For calculating the amount of borrow interest accrued to a specific borrower, the protocol snapshots the global interest index at the time of user's interaction. The snapshotted global index is stored as a user-specific value, named the user's interest index.

Whenever a user makes an interaction, interest is accrued for the specific user's liability. If the stored user's interest index value is Indexuser\text{Index}_{\text{user}} and the current global interest index is Indexglobal\text{Index}_{\text{global}} , the user's previous borrow liability amount of liabilityuser,prev\text{liability}_{\text{user},\,\text{prev}} is updated to an interest accrued value of liabilityuser,current\text{liability}_{\text{user},\,\text{current}} by:

liabilityusercurrent=liabilityuserprevIndexglobalIndexuserliability_{user_{current}} ​ = liability_{user_{prev}} ⋅ \frac{Index_{global}}{Index_{user}}

After the user's liability is updated to an interest-accrued value, the user's interest index is updated to the current global interest index.


Depositing nYUSD Stablecoins

The money market aggregates stablecoin deposits with matching denominations into a pool, called markets. Borrows are proceeded from this pool, and interest gained from them is equally shared among all unit of stablecoin deposits.

This pooling of deposits enable markets to have high liquidity. Deposits can be withdrawn anytime, unless every stablecoin in a market is borrowed.

Deposit interest is distributed through the value appreciation of Lucra NEP (lNEP), which are minted to depositors as a deposit receipt.

Lucra NEP (lNEP)

lNEP balances represent a depositor's share in the market. The exchange rate with their underlying stablecoin, the lNEP exchange rate, increases as deposits accrue interest, appreciating the value of lNEP. With time, holders can redeem lNEP with a greater number of underlying stablecoins, enabling depositors to collect interest simply by holding them.

The lNEP exchange rate is defined as:

lNEPExchangeRate=liquidity+liabilitieslNEPSupplylNEPExchangeRate = \frac{liquidity + liabilities}{lNEPSupply}

where liquidity\text{liquidity} and liabilities\text{liabilities} each refer to the amount of deposited stablecoins that are yet to be lent out, and the interest-accrued amount of lent out stablecoins.

Yield Reserve Collection

Every epoch, rewards of deposited lAsset collaterals are collected by the money market. Claimed lAsset rewards, which are likely to be in a non-stablecoin denomination, are converted to NEPRI nYUSD stablecoins and stockpiled separately in the market's yield reserve pool.

This process can only be triggered at most once in a 24-hour period. Markets wait for lAsset rewards to be transferred to the NEPRI Finance platform as reward claims of lAssets (excluding lNEP) involve a cross-chain transaction. Auxiliary operations such as NEP emission rate readjustment and yield reserve distribution are also conducted during this time.

Borrowing NEPRI nYUSD Stablecoins

NEPRI nYUSD stablecoins can be borrowed from the money market by creating a loan position with whitelisted lAssets as collateral. An account can only own a single loan position, though a user may create more loan positions with the use of multiple accounts.

lAssets collaterals are locked to open a loan position. Users are allowed to lock multiple lAsset types to a single position, diversifying collateral price exposure.

Borrow Limit

Borrows can be made until the user's liability reaches their position's borrow limit. The borrow limit is yielded as the sum of locked collateral value, times the maximum LTV ratio of collateral:

borrowLimit=amountLockedlAssetPricemaxLTV\text{borrowLimit} = \sum \text{amountLocked} \cdot \text{lAssetPrice} \cdot \text{maxLTV}

One should observe that the borrow limit fluctuates with the oracle-reported lAsset price. Loan positions with a liability higher than their borrow limit are subject to liquidation, where their collaterals are converted to stablecoins to repay their liabilities.

To prevent liquidation, borrowers can lock additional collateral to their position and increase their borrow limit. Collaterals can also be unlocked and withdrawn from a loan position, as long as the borrower's liability does not exceed the position's borrow limit.

Algorithmic Interest Rate

Stablecoins borrowed from a market all follow a unified, algorithmically determined borrow rate. The applied borrow rate constantly adjusts based on the market supply and demand for stablecoins, set to increase as a function of the utilization ratio.

Utilization Ratio

The utilization ratio quantifies a stablecoin's borrow demand relative to the amount of deposited stablecoins. In a market with stablecoinsDeposited\text{stablecoinsDeposited} amount of deposits and stablecoinsLent\text{stablecoinsLent} amount of borrows, utilization ratio is calculated as:

utilizationRatio=stablecoinsLentstablecoinsDeposited\text{utilizationRatio} = \frac{\text{stablecoinsLent}}{\text{stablecoinsDeposited}}

where stablecoinsLent\text{stablecoinsLent} and stablecoinsDeposited\text{stablecoinsDeposited} are both interest-accrued values.

Borrow Rate Model

The stablecoin borrow rate increases proportionally with the utilization ratio. Parameter values of the equation are initially configured to accrue a 30% annualized borrow rate when the utilization ratio is at 66.7%, with a minimum base borrow rate of 2%.

borrowRate=utilizationRatiointerestMultiplier+baseRate\text{borrowRate} = \text{utilizationRatio} \cdot \text{interestMultiplier} + \text{baseRate}

The borrow rate equation incentivizes markets to have sufficient liquidity at their equilibrium. An increase in borrow demand is met with higher borrow rates, incentivizing repayments, and restoring market liquidity.

Last updated