Share Dialog

We are excited to announce the deployment of Angle’s OptimizerAPRStrategyV2 💹
This upgrade brings two improvements that will increase the yield generated by the protocol and ultimately returns received by veANGLE holders and USDC and DAI depositors.
While this is far from obvious to do in practice, we have taken inspiration from how validity proofs work to maintain the fully permissionless aspect of Angle yield strategies.
Before diving into the details, let’s give some context!
Angle **invests funds deposited in the protocol by users minting stablecoins and Standard Liquidity Providers over-collateralizing it into yield strategies to earn a return on its assets. These investments are handled by smart contracts called strategies. Their goal is to invest those assets into platforms earning low-risk yield, to generate some returns for users and the protocol.
Here is how the protocol’s new strategy works👇
The main improvement of this new strategy is the ability for it to split itsfunds between multiple protocols in an optimal ratio.
The protocol’s strategy consists in allocating its funds to lending platforms like Euler, Compound, and Aave.
In its first version, the strategy, called OptimizerAPRStrategy , was comparing the different platforms APRs, and would deposit all its funds on the protocol providing the highest yield. While this enables the protocol to fetch revenue from the best source, this strategy is far from optimal. The best allocation of funds between different lending protocols usually does not consist in going all-in in one protocol, but rather in splitting funds between them.
While it’s really complex, if not impossible, to compute an optimal split of funds on-chain, the new version of the strategy is now able to split its funds between multiple protocols in an optimal ratio, while keeping the update permissionless.
Now, the harvest function (used to update the strategy’s investments) can be called with a proposed funds split between the available protocols. Instead of recomputing this on-chain, the contract just checks that this distribution ratio improves the current APR of the strategy.
If it does, the strategy is harvested and setup with the new distribution. If it doesn’t, the strategy is harvested as well but keeps the old distribution offunds.
Thanks to this upgrade, the net APR of the strategy can be significantly increased, and its smart contract risk diluted between the protocols it’s invested in.
In practice, this also means the strategy can now accept any amount of funds without impacting its performance. It will balance its lending proportions between the different supported lending protocols, effectively acting as a yield arbitrageur.

Let’s say the strategy has 10,000,000 DAI to lend between Aave and Compound. With V1, the contract would have computed the platform that would pay the best yield, after taking into account the decrease caused by the strategy’s funds.
For example, if Aave yield is 4% after deposit and Compound yield 3%, with V1 the 10M would have all been deposited on Aave and earned 4%.
In V2, it accepts a funds split. In this example, maybe that depositing only 5M on Aave yields 5%, and 5M on Compound yields 4%. In this case, V2 will invest 5M on each platform returning $0.5 \times 0.05 + 0.5 \times 0.04 = 4.5 \%$ instead of the previous 4%.
This represents a 12.5% increase in revenues for the protocol ✨
As part of this upgrade, the protocol can now invest funds on Euler!
Euler is a leading lending & borrowing platform, and recently started distributing EUL incentives to USDC depositors which will help grow the strategy APR even more.
With these additions, the OptimizerAPRStrategyV2 now compares yield between Aave, Compound and Euler to find the optimal mix.
The strategy upgrade was approved by veANGLE holders through AIP-43 after this post in the governance forum. All the new contracts addresses can be found in Angle’s developers documentation.
It’s also worth noting that this type of solution can be extended to many other on-chain mechanisms. It will be interesting to see how other use cases profit from this on-chain verification of off-chain optimizations in the future … 👀
No comments yet