[Discussion] Optimize the COMP Liquidator contract


Improve and optimize the currently deployed COMP liquidator contract to maximize yields over the long-term, rather than a consistent dollar-based stream.


I propose that we optimize the recently deployed COMP contract to not simply sell 5000$ worth of COMP every week and distribute them to the SAVE contract. Currently, we’re seeing a major sell-off of DeFi tokens, and we’re being caught in the middle of it with MTA, but also with this COMP liquidator contract.

I feel we should look ahead to the long-term earning benefit to savers and consider streaming the liquidated COMP rewards proprotionally to current market flucations in the COMP/WETH market.

We could achieve this quite simply by NOT liquidating $5000 worth of COMP in the contract whenever COMP is below a treshold, and accumulating the saved COMP for the week after this.

When this occurs, we could also automatically reduce the mUSD stream of the previous weeks liquidation, to bridge the gap to the next liquidation event. We can also tweak this further to minimize consecutive dry spells and have more complex logic added to the contract as necessary.


Right now, we are simply liquidating $5000 worth of COMP every week to stream the revenue to the SAVE contract, and this can be very ineffective if the market is bearish and the sold token is undervalued. If we start developing a sound algorithm, we not only counteract the problem for the COMP liquidator, but also set a great framework for future liquidator contracts in different protocols and assets.

While this might take more initial work and auditing, it will ensure higher returns in the medium to long-term, benefitting all savers, and setting us apart from competitors with the highest possible returns. The COMP distribution will continue for a few more years, so dealing with this issue right now should scale well into the future, and allow us to leverage the upside of a more intelligent and economically viable selling of accrued tokens.


  • Higher long-term yields, therefore more incentive to put mUSD into the SAVE contract
  • Framework for future liquidator contracts, saving time, energy, and money
  • Building block for future buyback contracts, perhaps enabling MTA buybacks and similar initiatives
  • Could be a lego piece for future DAO treasury interaction, making more intelligent and timed sell/buy/store logic feasible


  • Additional development time and costs
  • Additional audits needed, as complexity of contract grows
  • Might not be in the best interest for short-term savers

Interested to hear your thoughts and opinions on this :))

Just something that randomly came when I saw the recent transaction and felt sorry for the poor COMP tokens being sold at such a bargain to the market for an APY boost that could’ve given so much more to everyone.

Happy Friday everyone and enjoy the weekend!

1 Like

I’m all for maximising system revenue, so this is a good proposal (although there are some actors to consider). For what its worth, we could implement something like this pretty trivially and roll it out. Its a case of determining the ideal behaviour.

For more context, the reason it is the way it is at the moment is because the $$ should be streamed to loyal SAVE users. If we were to save up the COMP for the next hype cycle, then it would be great for mUSD and thus MTA over that period, but would incentivise “flash savers” who could just come for the season and leave again. The 5k a week was a good compromise to extend the COMP selling as long as possible, with the view to increase that amount in the future if/when COMP starts pumping again.

WE would need to determine the optimal parameters for this. When would be time to sell? How much would be sold? Is it fair to people saving now that their earnings are being delayed? Is this something that can be presently accomplished with swift changing of weekly $ value tranches?

1 Like

Good morning :slight_smile:

Yes, that are some very good points, and gave me great food for thought over the weekend. To address some of the points:

1.) I think if we implemented a penalty system for flash-savers, and gradually removed this penalty over a x day period (30 days perhaps?), we could mitigate or even remove this risk in most cases. I also see this as sort of a horizon point to be tackled eventually anyways, as we’re not charging anything for entering/leaving the SAVE contract, other than the gas fees.

If you compare this to Rari Capital or some Set tokens, given the great APY we offer, it seems logical to introduce some sort of fee generation (split between savers and MTA stakers perhaps) as a great way to move forward.

2.) I was thinkin on the parameters some more, and we could simply use a Volume Weighted Average of the last x days (perhaps 30 days? adjustable via governance) of the decentralized oracle feed of COMP (Chainlink?) and then set a governable percentage parameter on what the treshhold is. Initially this could be around a 20% deviation from the average that would trigger the selling of COMP, or withhold the selling, with some smart bonding curve triggering a sale eventually if there wasn’t one in x consecutive days.

We could roll out the actual gains gained from a smarter allocation over x days as well, rather than streaming over a rolling 7 days (perhaps a rolling 30 days?), of course also governable in the future.

Those were the things I brooded over the weekend, happy to hear more thoughts and ideas around this! :slight_smile:

1 Like

Actually really solid proposal @shubidoobi with parameters that can be tweaked via governance, although assessing the fair value of COMP tokens and when to sell them is going to be quite subjective.

Thanks for the feedback @derc, it’s much appreciated! :grin: (and whoever did the Twitter post, too!)

I was thinking around this some more during the week, and perhaps the Token Terminal P/S value might be a good indicator to go by when considering liquidations of accrued COMP tokens, perhaps in symbiosis with the previously mentioned ideas to avoid manipulation?

It seems to give a quite accurate representation of a tokens worth, which makes selling and buying decisions a lot more aligned to the real world vs just going by a number accrued over a particular time.

Hope we can move this to a next level of discussion soon. I’m unfortunately not a developer, so I don’t know how feasible my ideas are, but if it’s on a good track, I’m happy to keep contributing to the project in this way :grin:

Wishing you guys a good weekend and have a blast. I’ll be getting some more MTA at these prices :innocent: