Automatically refresh IDLE reward speeds

Following from a conversation in Discord:

The incentives have been very suboptimal and with the high gas prices, refreshes have been less frequent. As a result, the DAO is incentivizing users to deposit in lower-yielding pools, which in turns reduces the value of performance fees collected by the DAO.

In short: Relying on users to rebalance → consistently suboptimal IDLE speeds → poor incentives → reduced revenue.

To fix this, I believe we can implement a process that monitors certain conditions, and automatically refreshes IDLE reward speeds when those conditions are met. If the expected additional revenue over some finite time period is greater than the gas costs, then the app should automatically trigger a refresh to maximize fee revenue.

This would be a complicated calculation with several assumptions, but here is a simplified version of the concept, using just 2 pools, to demonstrate feasibility.

  • The DAO gets 10% of APR as a performance fee.
  • At time writing, sUSD Best is earning 44.71% with $1.2M deposited and pays 26 IDLE per $1M deposited; while USDC Best is earning only 11.98% with $49M deposited and pays 51 IDLE per $1M deposited. Much more money is in the USDC pool, even though it has a lower interest rate, in part because the USDC pool earns more IDLE and therefore greater combined earnings.
  • For those two pools combined, each day the DAO earns about $1,768 in performance fee revenue.
  • If we refreshed reward speeds right now, it would shift IDLE rewards rate from the USDC Best pool to the sUSD Best pool. This would incentivize depositors to move from USDC Best to sUSD Best. We don’t know how much of the pool would migrate, but for the point of this argument, let’s say half, about $24.6M.
  • With more funds now in the higher-earning pool, assuming the interest rates stayed the same for one more day, the DAO would earn an additional $2,200 revenue per day after refreshing.
  • At the moment, a refresh costs $867 in gas costs, so even after costs, this active refresh strategy would increase revenue by $1,333 per day, 75% more (!!!) than the current strategy of not refreshing.
  • In addition to increasing revenue for the DAO, I believe this proposal, if implemented, will also improve user satisfaction, knowing that their IDLE earning incentives will be aligned, and that the rewards can’t be manipulated by large depositors looking to refresh only at times that benefit them, while relying on high gas fees to prevent small depositors from refreshing themselves.

A few acknowledgements:

  • This example is simplified; I have not attempted to model it yet over more than 2 pools
  • This example assumes that interest rates remain constant. In reality, they fluctuate constantly. I don’t have data for this, but anecdotally, I have observed that the IDLE rewards per deposits have consistently been misaligned with potential performance fees, for at least the last several weeks.
  • Because the refresh costs gas up-front while rates fluctuate, refreshing too often or at the wrong times could result in a net decrease in revenue. I believe this can be mitigated with some controls using EMA and StDev of each pool’s APY, resulting in a statistical confidence interval that can be used in the refresh algorithm to ensure that the interest rates will hold for long enough to be worth the gas costs.

I do not have the technical capabilities to test or implement a fully-functional version of this proposal, so I call on the community to develop the auto-refresh algorithm and implementation to boost revenue and increase alignment between IDLE holders and users.


It might incentivise whales or integrators but not small holders. There is no easy or cheap way to switch between pools. For example, if I wanted to swap pools once, I will wipe out about 6 months worth of earnings. Also my daily IDLE earnings is basically nothing and it’s not going to get appreciably better switching pools. So I say again, there is absolutely no incentive for me.
The main reason for this is the high cost of withdrawing (mainly due to sorting out the underlying gov tokens).

sUSD is the only asset which has these spikes and they don’t last long. I’m not sure how representative your calculations are, particularly because I’m not convinced that in such an event you’d see half of the AUM of a pool switch to another pool.

Is it a good idea to incentivise jumping between different assets? I was under the impression if you get large shifts in allocations will ultimately kill the APY anyway because the reason the APY is high is because there is high demand for that token. Might this effect the overall stability of the APYs? I dunno, correct me if I’m mistaken.


sUSD has big spikes, but USDC interest has also underperformed USDT and DAI despite having 2x the IDLE rewards per amount deposited. The point is less about big changes and more about ensuring aligned rewards when interest changes.

This would actually benefit many small depositors who prefer to stay in one pool. For example, if you deposited in sUSD, DAI, or USDT in December when those had the best IDLE rewards, you have been rewarded with far less IDLE since the last rebalance weeks ago that shifted rewards to USDC while it had a temporarily higher APR, and never refreshed again. And you’ve been stuck in your pool because of gas fees. If there had been active refreshing, greater IDLE rewards would have returned to your pool at several times over that period, rewarding you AND perhaps promoting large depositors to switch to a pool generating more revenue for the DAO, since they can more easily overcome fixed gas fees.

Also, remember that this strategy doesn’t necessarily refresh only when there’s a flip in interest rates. For example, if pool A is earning the most interest at 11% and pool B is earning 7%. Even if pool B rises to 10% and pool A stays at 11%, it may be beneficial to refresh reward rates.

1 Like

Nice @jnova that you brought this topic up.

I agree with @Stealthbird97 and I have some doubts about the economic feasibility of this part.

sUSD is subject to periodic spikes (50-100% apy) but they last a few days, and this does not incentivize people to swap their money from a token to another. Investors know these trends and there are other factors that determine the stable asset selection (e.g. some people are scared about algo stablecoins and use only regulated ones, others refuse USDT/USDC due to centralization).
Each swap consists of a 0.3% exchange cost + at least 3 transactions (about 50$/each in these days). We can assume that only whales can afford these expenses and move back and forth between Idle pools.

Lastly, apy changes dynamically and we are not able to know what will be its value one minute/block later, so the proportions never match with pool weights and the protocol can not estimate if it will reach the break even point.

This is why such action should be triggered by LPs: actors (e.g. Harvest) might be incentivized to call the method each time there is a misalignment, as they can profit more from their past and current deposits.

Small/medium investors might join the forces in a group and share those costs (how to do it in a decentralized way?), so they benefit from the rebalance without paying the whole fee alone.


Yes, but sUSD was used as just an example above. Feel free to take another example: the USDT pool has had higher APY than USDC for most of the last 2 months, but about 1/4 the IDLE rewards per dollar deposited.

More broadly, when need to consider the situation across all pools, not just a pair of two that I used to illustrate the problem.

I think we can agree on the following:

  • When refreshed, IDLE reward speeds are designed to reward the pools that produce the greatest marginal yield, and therefore also the greatest revenue to the DAO
  • Because of how and when reward speeds are refreshed today, they do not succeed in rewarding the pools that produce the greatest marginal yield at all times.

This proposal addresses that.

Correct, and that’s part of the problem we’re solving for here. There is a persistent misalignment between pool APY and pool IDLE rewards, leaving many small investors with two options: stay in a pool with suboptimal rewards or leave the protocol completely. This degrades the user experience, reduces satisfaction in IDLE distribution, and disproportionately benefits the whales who are able to afford the costs to unilaterally rebalance.

This I think lacks creativity. No, we don’t know exactly what the APY will be one block later, but we can use signals to create a conservative view on when we are likely to break even and when we are not. Making this kind of determination is the entire basis of investing.

Investors do this every day when choosing to buy a stock or a coin. Idle’s users do this every day when they enter an Idle pool without knowing if gas will become so expensive to eat their gains when they want to leave. And the Idle protocol does this every day when it chooses to rebalance the underlying lenders without knowing if the rates will change 1 block later and cost depositors more in gas an unearned yield than they gain.

None of these things are certain, so they come down to confidence intervals. Similarly, we can apply confidence intervals to ensure that auto reward speed refreshes have a positive expected return on investment—both in revenue and in user satisfaction.


It’s also worthwhile to consider ease and cost of fiat on-ramp. Coinbase offers USDC for free with no fees, vs Dai for 2%. USDT and sUSDC are not offered on CoinBase or Kraken which are 2 of the largest exchanges in the US so users would need to go and pay even more to swap on uniswap or equiv. Rewards may incentivize what currency I buy from fiat, but they’d have to be very large to get me to swap currency over for the promise of short-term gains.

Additionally - where can I read about how the idle reward and rebalance mechanism works?

1 Like