Jupiter Perpetuals Borrowing Rate Mechanism - Jump Rate Model
Summary
This piece provides a recommendation corresponding to the Borrowing Rate mechanism in Jupiter perpetuals. Gauntlet recommends adapting to a Jump Rate model to reduce liquidity risk and utilization volatility in the JLP.
Goal
Define a mechanism that:
- Targets a level of utilization for an asset that ensures enough idle liquidity exists for expected trading and for JLP holders to redeem if desired.
- Targets a borrowing rate that is attractive for traders and properly compensates JLP for locking up capital.
- Incentivizes additional liquidity when asset utilization is above its target level.
- Compensates JLP appropriately when asset utilization is above its target level.
Problem
The borrowing rate mechanism in Jupiter perpetuals follows a single linear curve. Regardless of the level of utilization, the gradient of borrowing rates is the same. This makes it difficult to target utilization at a certain rate, and organically incentivize additional liquidity when utilization levels are elevated (liquidity risk).
In a single linear curve, the market generally will set and imply the target rate. If the max rate is set too low, utilization levels will remain elevated. This can be remediated by increasing the max rate, it comes with the side effect of more volatile utilization, which in turn creates more uncertainty in idle liquidity for forward looking trading. It is worth noting that this mechanism increases the volatility of delta for the JLP as well.
Jupiter Borrowing Rate Mechanism
Solution
Gauntlet proposes a Jump Rate model, a mechanism commonly used in DeFi spot lending & borrowing facilities. In this model, two linear curves are defined, with a kink located at the target utilization level. The gradient above target utilization is higher than the gradient below target utilization.
When utilization levels are elevated, this has the organic effect of incentivizing additional liquidity, or a portion of traders unwind their position as the new borrowing rate is too expensive relative to their expected return. In either case, liquidity risk is mitigated in a more efficient manner than a single curve.
Recommended Jupiter Borrowing Rate Mechanism
Parameters
Min Rate: Lowest acceptable borrowing rate when utilization is 0%
Max Rate: Highest borrowing rate when utilization is 100%. This rate should incentivize additional liquidity, and properly compensate JLP holders for the decrease in expected volumes.
Target Rate: Borrowing rate when the asset utilization is at equilibrium. This rate should remain attractive to traders, and also properly compensate JLP holders for locking up capital and associated delta risk.
Target Utilization: The equilibrium utilization rate. This level should be set such that enough idle liquidity exists for sufficient volume turnover.
Implementation
lower_slope =(target_rate - min_rate) / target_utilization
upper_slope = (max_rate - target_rate) / (1 - target_utilization)
if utilization target_utilization :
borrowing_rate = min_rate + lower_slope *utilization
else:
borrowing_rate = target_rate +upper_slope * (utilization - target_utilization)
Parameter Methodology
The main parameters to optimize and tune in this mechanism are Target Rate, Max Rate, and Target Utilization. Gauntlet will codify a methodology model to systematically and dynamically adjust parameters as conditions evolve.
Target and max rate are a function of asset volatility, an assumed risk premium, and historical realized utilization levels. The risk premium assumption between max and target rate will drive the slopes of the curve. A dual slope model has the nice side effect of parameterizing two different risk premiums, which significantly helps in reducing utilization volatility around its target.
In this approach, traders are paying a carry cost that’s a function of asset volatility and an assumed sharpe ratio to JLP holders. As asset volatility evolves, these rates will dynamically adjust. To address idiosyncrasies directly in the protocol, the borrowing rate parameters will adjust based on historical utilization to increase or decrease the target and max rate.
Target utilization is a parameter that should be dynamically managed, but ideally not changed often. Target utilization should reflect the optimal point that maximizes volume turnover & trading fees from idle liquidity and borrowing/carry fees from existing positions, in addition to risk sentiment of JLP holders.
Implementation
Below is a high level implementation of the dual slope borrowing rate methodology. For stable assets, we compute a weighted volatility measure using the risky assets weights.
1. For each market, define a target_utilization (currently 80%)
2. Define a target_util_risk_premium & max_util_risk_premium
3. Compute an asset_volatility measure
4. Compute a utilization_factor based on historical realized_utilization and target_utilization
5. Assign the rates as below:
target_rate = asset_volatility * target_util_risk_premium * utilization_factor
max_rate = asset_volatility * max_util_risk_premium * utilization_factor
Indicative Parameters
Asset | Min Rate (APR) | Target Rate (APR) | Max Rate (APR) | Target Utilization | Lower Slope (APR) | Upper Slope (APR) |
---|---|---|---|---|---|---|
SOL | 0% | 25% | 250% | 80% | 31% | 1125% |
ETH | 0% | 20% | 165% | 80% | 25% | 725% |
BTC | 0% | 23% | 170% | 80% | 29% | 735% |
USDC | 0% | 15% | 175% | 80% | 19% | 800% |
USDT | 0% | 15% | 175% | 80% | 19% | 800% |
Example Calculation
Below is an example calculation for illustration purposes. Risk premiums may not be the actual parameter Gauntlet uses in production recommendations.
1. target_util = 80%
2. target_util_risk_premium = .2 & max_util_risk_premium = 2.5
a. Ie for a 10% vol asset, this provides 2% and 25% return respectively
3. asset_volatility = 100%
4. utilization_factor = 1.1
5. target_rate= 100% * .2 *1.1 = 22%
max_rate= 100% * 2.5 *1.1 = 275%