LP Collateralization Model

Under-Collateralized Model

To acquire a loan, it is the norm in DeFi to over-collateralize an asset to be able to borrow against it. This is a way to protect the lender from borrowers defaulting on their loans and not paying anything in return. If the price of the collateral drops below a certain threshold, the borrower's loan can become liquidated, meaning anyone on the network can repay the loan and take a cut from the liquidation fee which is taken from the user's collateral. Important to note that if we compare lending markets in Traditional Finance with DeFi, we see a clear contrast between each other in this context.

Cygnus allows the use of leverage to grant undercollateralized loans, while guaranteeing the lenders their loans back. The loan itself never leaves the protocol and is only to be used by the smart contracts for LP Farming. This means that the borrower can leverage their position multiple times without the lender worrying whether the loan can be repaid or not, since the moment the collateral becomes liquidatable anyone on the network can liquidate the position.

Lending in DeFi is mostly done with the borrower having full access to the loan which they may use in any other protocol. In the case of Cygnus, there are two ways borrowers can use the platform:

  1. Taking out a USDC loan against their LP position

  2. Leveraging their LP position

If the borrower chooses the first option, then they receive USDC in their wallet while Cygnus keeps the LP Token amount locked (still earning trading fees and liquidity mining rewards) until the loan is paid back. The maximum amount they may borrow is defined by the debt ratio and liquidation incentive of that pool.

If the borrower chooses to leverage, the loan doesn't go to the borrower's wallet, but instead stays with the protocol. By leveraging the position the protocol converts the USDC loan into more collateral. If the borrower wishes to exit his position they can only do so by de-leveraging first, meaning paying back the loan.

Lending in DeFi is mostly done with the borrower having full access to the loan which they may use in any other protocol:

In the case of Cygnus, if a user leverages their position, the loan doesn't go to the borrower's wallet, but stays with the protocol. If the borrower wishes to exit their position and take out their LP tokens, they must deleverage first (pay back).

LP Token fair pricing

To calculate the borrower's collateral value, Cygnus uses its own Price Oracle based on Alpha Homora's fair reserves mechanism to ensure that the price of the LP Token cannot be manipulated by any malicious actors. More information on our unique oracle can be found here LP Price Oracle along with the Github code for the oracle.

Debt Ratio Model

The DebtRatio for each pool is an upgradable parameter which dictates how much a borrower can borrow given a collateral amount (LP Token amount). By default, the debt ratio of each pool gets deployed at 90%, but this can be updated to a maximum of 95% or a minimum of 75%.

The debt ratio calculation tells a user their loan-to-collateral ratio and the code can be found on our Github: CygnusCollateralModel.sol.

Excluding liquidation incentive (to make the point clearer) a user may borrow up to 90% of their deposited amount.

/**
 *  @inheritdoc ICygnusCollateralModel
 */
function getDebtRatio(address borrower) external view override returns (uint256) {
    // Get the borrower's deposited LP Tokens and adjust with current exchange Rate
    uint256 amountCollateral = balances[borrower].mul(exchangeRate());

    // Multiply LP collateral by LP Token price
    uint256 collateralInUsdc = amountCollateral.mul(getLPTokenPrice());

    // The borrower's USDC debt
    uint256 borrowedAmount = ICygnusBorrowTracker(borrowable).getBorrowBalance(borrower);

    // Adjust borrowed admount with liquidation incentive
    uint256 adjustedBorrowedAmount = borrowedAmount.mul(liquidationIncentive + liquidationFee);

    // Account for 0 collateral to avoid divide by 0
    return collateralInUsdc == 0 ? 0 : adjustedBorrowedAmount.div(collateralInUsdc).div(debtRatio);
}

To calculate the price of the LP Token, we call our oracle with the LP Token address. Once we have the price of the LP Token and the quantity of LP Tokens deposited, we can calculate a user's position.

Cygnus uses the following model to calculate max borrows, given a debt ratio and liquidation incentive:

maxBorrow=priceLPdepositedLPDebtRatio1+Liq.Incentive+Liq.FeemaxBorrow=\frac{priceLP * depositedLP * DebtRatio}{1+Liq.Incentive+Liq.Fee}
maxLeverage=1+Liq.Incentive+Liq.Fee(1+Liq.Incentive+Liq.Fee)DebtRatiomaxLeverage=\frac{1 + Liq.Incentive + Liq.Fee}{(1+Liq.Incentive+Liq.Fee) - DebtRatio}

For example, let's say a WBTC/ETH pool gets deployed, with the following parameters:

Max Debt Ratio: 95%

Liquidation Incentive: 2.5%

LP Token Price:$8.2969

A user deposits 100 LP Tokens (thus, their position as priced by our oracle is $~829.69).

MaxBorrow = (8.2969 * 100 * 0.95) / (1 + 0.025 + 0) = $768.98

MaxLeverage = (1 + 0.025 + 0) / ((1 + 0.025 + 0) - 0.95) = 13.67 = 14.67x

leverageDebtCollateralMax BorrowBorrowers debt ratio

0

$0.00

$829.69

$768.98

0%

2x

$768.98

$1,598.67

$1,518.74

49.30%

3x

$1,537.96

$2,367.65

$2,249.27

66.58%

4x

$2,306.94

$3,136.63

$2,979.80

75.39%

5x

$3,075.92

$3,905.61

$3,710.33

80.73%

6x

$3,844.90

$4,674.59

$4,440.86

84.31%

7x

$4,613.88

$5,443.57

$5,171.39

86.88%

8x

$5,382.86

$6,212.55

$5,901.92

88.81%

9x

$6,151.84

$6,981.53

$6,632.45

90.32%

10x

$6,920.82

$7,750.51

$7,362.98

91.53%

11x

$7,689.80

$8,519.49

$8,093.52

92.52%

12x

$8,458.78

$9,288.47

$8,824.05

93.34%

13x

$9,227.76

$10,057.45

$9,554.58

94.04%

14x -> MAX

$9,996.74

$10,826.43

$10,285.11

94.64%

15x

$10,765.72

$11,595.41

$11,015.64

95.17%

Last updated