Dynamic borrow fees adjustment proposal

Current model with fee curves is broken and needs to be replaced.

At the moment, JLP holders are suffering from very low utilization of assets. Traders do not want to open long positions at all. Actually, they are going for shorts, which rarely happened before. This morning ETH utilization became negative, as there are 22m$ shorts and 20m$ long positions. It happened because funding rates are extremely low at the moment and smart money seeks for best opportunities or even arbitrage deals. While jupiter borrow fee is much lower then funding fee paid, there will be an incentive to increase positions on jup-perps and vice versa.

Trader fee mechanics is fundamentaly different on traditional exchanges (no matter, if it is centralized, like OKX or decentralized, like Drift or Hyperliquid) and on jup-perps. While traditional exchanges use “funding fee” model to balance long/short position, which lead that sometimes people actually receive fees for holding long or short position, jup-perps always charges borrow fee, which can be high or low, but trader always pays. This difference is unavoidable by design of jup-perps, so we should just note, that it exists.

This is the primary reason of utilization imbalance. It does not matter, what is your fee curve or how high the borrowing fee is. It is about whether it is within the market range or not. At the moment, market offers negative-zero funding rates for SOL/BTC/ETH. Because of this any smart trader will open position on traditional exchange, not jupiter, because the difference in fees is too high. If fees are about the same - then trader could get attracted by decentralized nature or convenient interface or ability to make large instant trades or anything else, what makes jup-perps great product. But when the difference is high, traders will go where it is cheaper (or more profitable) for them.

This happened several months ago, when SOL utilization was 100% for a while. It happened because funding rates were incredibely high and jupiter borrow rate was too low, compared to them. This lead to excessive demand, which lead to talks about adjusting fee curve, implementing more complicated logic, playing around with AUM limits, just to keep utilization within desired range.

Now SOL utilization is all-time low, around 30%. Guess why? Because at the moment traders are charged 30% apr borrow fee, while they can enjoy very low or negative funding rates for their long positions on traditional exchanges.

This is the major point, I want to discuss: talking about jupiter borrow fees is useless, when not comparing them to market offer of funding fees. And the value of funding fees depends on everything: market conditions, sentiment, no one can predict how high or low founding fees will be tomorrow, there are too many factors to consider.

So to keep utilization within desired range the fees (most importantly borrow fee) should be within the market. And market is always different. Two months ago 50% apr was cheap as hell, today 5% apr is kind of too much. So to set correct fee value you have two options: difficult or good.

Difficult is to monitor market rates, calculate moving averages to prevent spikes, upload it onchain and adjust borrow fee accordingly. It is obvious, how much problems this method can incur, I won’t talk about it futher.

Good option is to actively adjust fee until it leads to desired utilization. You don’t need to know, what market conditions are, you just want utilization to be where you want it to be. The main idea is “If fees are LOWER then before, then MORE traders will open position assuming market fees are constant”. We don’t know, how much more, but this is absolutely not a problem, as no one knows, as it depends on everything: market conditions, funding rates, sentiments, everything! Analyzing previous data won’t help as well, as market conditions were totally different a month ago, not saying year. What was “low” two months ago and lead to highest utilization, where traders benefited from platform paying way lower fees, than market demands, might be “high” tomorrow and lead to low utilization when no one is interested in opening positions, because it is too expensive.

So instead of looking for non-existent correlations between utilization rate and fees just react on situation! Low utiluzation - reduce fees, high utilization - increase them.

I would like to propose the simple logic, which helps to achieve the goal: to always keep borrow fees within market range.

Make fee tiers, set target utiluzation (for example 80%) for each asset. All assets are independent, so logic applies to each of them separately. They can have different weights or multipliers if necessary.

Now split the utilization into 4 ranges, like optimal, good, bad, critical (there can be more or less ranges depending on desired granularity. It can even be non-linear, using some formula, but I don’t see why we want to overcomplicate things). Split the whole possible utilizations values into 8 ranges, so 0-20% will be “critical low”, 20-40% is “bad low”, 40-60% is “good low”, 60-80% is “optimal-low”, 80-85% is “optimal high”, 85-90% is “good high”, 90-95% is “bad high” and 95-100% is “critical high”, ranges were calculated from target utilization and number of ranges linearly.

Then set some “borrow fee adjustment” value, make it quite low, like 0.0001% / hour (about 3% from current, relatively low borrow fee), so one adjustment won’t change much at the moment. Then set multipliers for each range, like 1× for optimal, 2× for good, 3× for bad, 5× for critical. It is not really important, whether it will be 3× or 2× for bad range, it is just that when we are far away from target utilization - we adjust fee more agressively. Then simply react to current utilization by adjusting borrow fee every 8 hours (can be 24, 4, even 1 hour, I would say 8 hours is nice, because most exchanges use it for calculating funding rates, so this time period is not too small, not too big). Add some caps to borrow fee, like borrow fee can not go below 0.0001% per hour (1% apr) or be higher then 0.05% per hour (400%+ apr), to prevent situations when utilization is too low or too high for some unexpected reason.

If utilization is 35%, then we are in “bad low” range, so we should decrease borrow fee by 2 × 0.0001%. This is everything what should be done.

Repeat the process every 8 hours and your borrow fee will always be competitive and utilization will always be close to target.

No curves, no back testing, simply react to utilization and move borrow fees accordingly.

Of course, this won’t solve the problem, like today, when utilization (longs on SOL/ETH/BTC) is so low. Nothing can be done about this, but setting fees to very low value (that’s what gauntlet and chaoslabs also propose) at least to make JLP price more stable, not to earn money from long traders. Bear market doesn’t charge much on long positions, so neither can you.

But market will be different next month (hopefully), and maybe you will see another problem, when utilization is too high, then you will propose again to increase fees and it will continue forever, because there is no way to predict competitive market borrow rate.

Why sticking to inefficient borrow fee curves, when you can just regularly adjust fees reacting to current utilization level? Implementing this adjustments is easy and safe. In worst case, when you adjust prices too slow you will stick with too high/too low utilization, this is what happening during last months. If you adjust them too quickly, then you will have suboptimal borrow fee value which may decrease platform profits compared to optimal values. But platform suffers from profits decrease for a while, after implementing gauntlet’s curve suggestions and seems like this is OK for owners. So in any case things won’t be worse then now.

I know you would ask for some fancy charts, but I already explained, why charts are not working, I will repeat this important paragraph again:

The main idea is “If fees are LOWER then before, then MORE traders will open position assuming market fees are constant” . We don’t know, how much more, but this is absolutely not a problem, as no one knows, as it depends on everything: market conditions, funding rates, sentiments, everything! Analyzing previous data won’t help as well, as market conditions were totally different a month ago, not saying year.

So the way to implement this is to set starting borrow fee value to current one (0.003%/hour, around 30% apr), set relatively low multipliers (x1, x2, x3, x5) and base adjustment rate (0.0001%/hour) and then watch them moving according to utilization, collecting data on correlation between average market funding rate, jupiter borrow fee and utilization. I can help with data collection and analysis, if necessary, it is very trivial.

I am happy to discuss this question futher, I can’t see the reasons, why this should not be implemented.

6 Likes

hi @DimOK welcome :writing_hand:
It’s interesting to read carefully. Now, I’m looking for more info to learn. Time is running, and we need more knowledge in these ecosystems. Everything will be totally different soon. Your content is interesting to analyze

Regards! thanks again

2 Likes

Hey @DimOK, thanks for sharing your thoughts! I appreciate your passion for finding ways to optimize Jupiter’s fee model. However, there are a few key points from a risk-management perspective (as outlined by Chaos Labs) that are worth considering before jumping to a purely “utilization-chasing” approach:


1. JLP Caps and the Pool-Based Model

  • Jupiter’s liquidity is pooled at the oracle price with no price impact, which is fundamentally riskier than typical funding-based models.
  • Simply lowering fees when utilization is low doesn’t fix the possibility that a malicious actor could exploit cheap capital from the pool. That’s why open interest caps—and eventually dynamic price impact—are so critical.

2. JLP Risk Isn’t Just Underlying Volatility

  • JLP providers face more than volatility risk; they also shoulder market manipulation and directional exposure risks, without the ability to hedge like CEX or advanced DEX market makers can.
  • Because of these extra risks, providers need a higher “premium” rate. Slashing borrow fees too aggressively might undermine the incentives to provide liquidity at all.

3. Borrow Rates Alone Don’t Drive Volume

  • Historical data shows volume also depends on market volatility, token incentives, and broader liquidity conditions. Lowering fees doesn’t necessarily bring a proportional boost in open interest or trading demand.
  • For instance, utilization sometimes hit 100% and stayed there even with high rates, just because volatility or broader market conditions drove traders to open positions despite those costs.

4. Comparing Jupiter to Traditional Funding Models Can Be Misleading

  • Many CEXs and advanced DEXs use a funding rate mechanism where traders may earn funding instead of paying it, balancing long/short demand in real time.
  • Jupiter’s model charges a borrow fee regardless, so direct comparisons to negative or zero funding rates on other platforms overlook Jupiter’s unique design constraints.

Bottom Line

While a data-driven, gradually adaptive fee model is definitely worth exploring, fee changes alone won’t solve Jupiter’s deeper design challenges—especially the need to mitigate manipulation risk and properly compensate JLP providers. That’s why Chaos Labs advocates for structural enhancements (dynamic OI caps, better liquidity pricing) in tandem with cautious fee adjustments, rather than just reacting to utilization levels in isolation.

I do appreciate the ideas you shared, and it’s great to see the community brainstorming solutions. Hopefully this adds some clarity on why Jupiter’s current design requires a more nuanced approach!

3 Likes

great tecnical analisis,

I do have to agree that cheeper fees is better,
for everybody, if it brings more users.

for big numbers the fees are not an issue, but for smaller bets, it does matter alot.

it brings an interesting question, of how to make fees competitive,

2 Likes

I have decided to completely rewrite my proposal, so new model includes all fees, not just borrow.

Please, check it here: Dynamic Fee Model Proposal for Jupiter Perpetuals

As long as there were no meaningfull discussion in this topic, feel free to close / delete it.

1 Like