AIP - 70: Launch a savings infrastructure for agEUR

Hello,

This is a proposal to launch a savings contract on agEUR that can mint agEUR at a fixed rate depending on the amount of agEUR deposited in the contract on both Ethereum and Arbitrum.

Context

Angle is currently earning a revenue from people borrowing agEUR. While the borrowing cost is relatively small depending on the collateral assets (from 0.5% to 2%), the protocol is still earning some revenue from this source (close to $100k a year).

On top of that, there is a live governance vote that proposes to acquire with agEUR’s reserves tokenized Euro securities earning a yield, and to support these securities as a collateral for the stablecoin through the Transmuter system.
If this is voted positively and correctly implemented, this should enable the protocol to structurally earn a non null return over its assets, on top of what it is earning through its borrowing module, and this at scale. If Angle TVL grows and the protocol manages to keep its exposures to tokenized securities, it will still make the same % revenue relative to its TVL.

The space of tokenized securities is currently growing onchain, and we should expect to see more and more tokenized money market fund earning the risk free € yield coming onchain over the next few months/years. On top of this, with MiCA bringing a lot of clarity for centralized issuers, the competition in the € stablecoin space should become more fierce.

With all this in mind, for agEUR to remain a competitive asset people are actually looking to buy and hold, a savings contract paying all agEUR holders that want it with a yield (proportional to what the protocol earns through its borrowing module and its reserves in the potentially upcoming Transmuter system) may be key.

Proposal

We’re proposing here to deploy a savings contract on Ethereum and Arbitrum that has a minting power on the agEUR contract on the chain and initialize it with a rate of 0, meaning agEUR deposited in the contract are earning 0% a year.

Implementation

This proposal simply aims at deploying the contract and granting it the mint right on agEUR. In this proposal, the initial rate parameter is proposed to 0%, but a governance vote could then lead to increase it a bit once Transmuter is live and well running.

The contract implementation we propose to deploy and plug to agEUR can be found here. It was audited by Code4rena (audit report to be released soon). It’s a simple ERC4626 contract that comes with no further composability risk or risk of funds. agEUR deposited in the savings contract of a chain are not invested in other strategies (they remain idle in the contract) they are just earning the rate decided by governance. So there is no extra trust assumption for owning agEUR in the agEUR savings contract.

The only operation the contract does is to mint agEUR based on the rate that is proposed. If 100 agEUR are deposited in the contract and the rate is 2%, then after a year, the contract will mint 2 agEUR and the share of the depositors of the savings contract will earn 2% in value, which means they’ll be able to withdraw 102 agEUR. Rate in the implementation proposed accrues on a block by block basis.

Once launched, if the rate is increased, it should never be possible to borrow agEUR on any chain at a cheaper cost than what is paid in the savings contract. Otherwise the system is simply losing by giving free and riskless money to all agEUR borrowers. So any proposal to increase the savings rate should come with a proposal to increase the borrowing cost for ALL collateral assets across ALL chains of the borrowing module.

Rationale

The rationale for deploying the savings contract on Ethereum and Arbitrum is to leave several entry points to the savings contract. Like Ethereum is where most agEUR liquidity is available but gas is expensive, while on Arbitrum there is a decent agEUR liquidity but cheaper gas cost.
In order to let more people come in the system, it might be helpful to enable them to test it on a chain where they’re not paying much for transactions, and with small amounts before moving more at scale. As the operations performed by the savings contract are simply increasing the protocol’s liabilities overall, it does not matter where these are taking place and where the system’s assets are held. To this extent, savings contract implementations could be deployed on as many chains as possible.

The idea for first deploying the contracts with a rate equal to 0 is to give integrators (like frontend operators and builders of analytics of the protocol) the time to integrate and build around the system while it is not functionally “live” yet.

Next steps

If this is voted, an important next step would be to decide, through a vote, on which rate the protocol should pay to its stakeholders. This should depend on many factors:

  • the return the protocol is making over its assets
  • the share of agEUR to expect in the savings contract. If the protocol is earning on its assets 2% and 50% of the agEUR are in the savings contract, then technically the protocol
  • the share of the profits on its assets the protocol should keep for its equity and indirectly for veANGLE holders
    Launching such a system does not come without any risk, and it must be implemented with the proper risk management, parametrization and monitoring tools as it implies growing the supply of agEUR: the pace at which this supply grows should never be bigger than the pace at which the backing assets of the protocol are growing.
    An idea could be to increase the rate little by little till flywheel effects around agEUR are starting to appear. My take is that we should aim for the € risk free yield as a rate so there is no opportunity cost between owning agEUR and owning € in a money market fund in Tradfi.

Overall, this savings contract infrastructure aims to be down the line something which is net positive for agEUR and for the Angle ecosystem as a whole. Its main goal is to increase demand for agEUR and to get more people to swap their € stablecoins on which they’re earning nothing into agEUR.

By increasing demand for agEUR, this should help the protocol grow its TVL and so its revenues (net of what is paid in the savings contract) and so its equity.

This may take time to get this rolling properly but better to start somewhere and have the foundations laid out easily.

Happy to hear any thoughts you might have around the savings infrastructure and the ideas shared here. This is a draft proposal (notably concerning the choice of chains) so also happy to iterate on this.

4 Likes

Hey everyone,

Now that Transmuter is live and that the protocol has acquired some bC3M in its reserves and that the context is different, I’m suggesting to update this proposal!
Idea is to deploy the savings infrastructure on Ethereum first with a start rate of 4% and a schedule for the update of the rates depending on the utilization of the contract. We’re also suggesting in this proposal to increase borrow rates across all Angle vaults (to different levels depending on the vaults).

Context

Angle is making a revenue from people borrowing agEUR.
On top of its revenue, Angle is currently earning from the tokenized Euro bonds it is owning in reserves. In fact, protocol is controlling 50,272 bC3M (38,446 on the Transmuter contract and 11,826 on the governance multisig) for a value of 5,891,963€. The yield to worst of these bC3M is 3.61% which means an estimated annual revenue for Angle on this asset of 212k€.
Right now, 13,043,780 agEUR are considered to have been issued through the Transmuter(these are agEUR that were issued by the Core Module but that are now considered to come from Transmuter at the balance sheet level).
This means that the return over assets used to mint agEUR the protocol is making is 1.63%. Technically all agEUR that were minted from the Transmuter could be paid a yearly yield of 1.63%.

For the exact state of Angle Protocol balance sheet, you can check this page.

The borrowing rate paid by people borrowing agEUR is something which can be controlled by governance. As such, it can be voted to be equal to the overall return over asset the protocol is making on Transmuter, and to this extent, all circulating agEUR (and not only the portion corresponding to what was issued from Transmuter) could technically be paid 1.63%.

As mentioned in the original proposal, the space of tokenized securities is growing onchain, and more and more solutions enabling people to earn the € risk free yield are coming onchain. For agEUR to remain a competitive asset people are looking to buy and hold, a savings contract paying all agEUR holders that want it with a yield (proportional to what is earned) is key. It can be a significant growth factor to attract more people towards agEUR with respect to other alternatives.

The interesting element here is that not all agEUR are going to be in the savings contract.
Technically if only 50% of the agEUR are in the savings contract, the protocol could offer to the agEUR in the savings contract, and without making any loss a return of 3.2%.
For the sake of the competitivity of the system, we can take advantage of this to propose yields which are higher than what the protocol is effectively earning.

Proposal

Savings rate curve

Proposal is to deploy a savings contract on Ethereum that has a minting right on the agEUR contract and set its rate according to the following schedule:

Capture d’écran 2023-08-31 à 20.14.16

The fewer agEUR in the savings contract the higher the rate, and the smaller the return over assets the smaller the rate.
Here return over assets and utilization are defined as:

The numerator of the RoA is the revenue the protocol is making on its assets.

In fact, the formula simplifies to:

The parameter y is the max rate that can be set and x is in fact a buffer that the protocol is taking.

This spreadsheet can be used to simulate the shape of the curve for different values of x and y.

Here we’re proposing to set it with the following parameters:

  • x=0.9
  • y=10%

At launch as there are going to be no agEUR in the curve, we’re proposing to set the initial rate at 4%.

Borrow rates

The important question to decide on once the shape of the curve is known the borrow rates to set. There can be indeed big arbitrage opportunities if it’s possible to borrow agEUR for cheaper than what the savings contract brings: like borrow agEUR at 2%, put these agEUR in the savings contract for 4% and simply get paid 2% for providing no value to the protocol.

Arbitrage are to be put in parallel with the opportunity costs there are for taking it. The arbitrage of someone putting ETH to borrow agEUR at 2%, and staking at 4%, is not the same as the one that consists in putting a liquid staking token earning 3.5% to do the same arb. In one case, the arbitrageur is giving a way a “risk-free” opportunity of 1.5%.
There is a tension as well between having important borrow rates (reducing arbitrage opportunities but increasing RoA) and small borrow rates which facilitate demand for native agEUR borrowing.

With all this in mind, we’re proposing the following: increasing the borrow rates on all vaults with non-yield bearing collats to 2.5% and on all other vaults to 4%. This means:

  • increase borrow rate to 2.5% of: USDC vaults (Ethereum, Polygon, Optimism, Arbitrum, Avalanche), wETH vaults (Ethereum, Arbitrum, Optimism, Polygon), LUSD vault (Ethereum), wBTC vaults (Polygon, Ethereum, Arbitrum), wMATIC vault (Polygon), miMATIC vault (Polygon), wAVAX vault (Avalanche), OP vault (Optimism),
  • increase borrow rate to 4% of: wstETH vault (Ethereum), bIB01 vault (Ethereum), bHIGH vault (Ethereum), cbETH vault (Ethereum-, agstk-sd-2CRV vault (Arbitrum), agstk-sd-3CRV vault(Ethereum), agstk-crvFRAX vault (Ethereum), agstk-cvx-2CRV vault (Arbitrum), agstk-cvx-2CRV vault (Arbitrum), agstk-cvx-3CRV vault (Ethereum), agstk-cvx-LUSD3CRV-f vault (Ethereum), agstk-sd-LUSD3CRV-f vault (Ethereum)

Implementation

The savings contract implementation has been audited by Code4rena.
It’s a simple ERC4626 contract that comes with no further composability risk or risk of funds. agEUR deposited in the savings contract are not invested in other strategies and they are just earning the rate chosen above.

The only operation the contract does is to mint agEUR based on the rate that is proposed. If 100 agEUR are deposited in the contract and the rate is 2%, then after a year, the contract will mint 2 agEUR and the share of the depositors of the savings contract will earn 2% in value, which means they’ll be able to withdraw 102 agEUR. Rate in the implementation proposed accrues on a block by block basis.

In our proposal we have defined a schedule for the rate based on the return over assets the protocol is making. This is hard to implement onchain in a non manipulative way. Here we’re proposing the following set of rules to apply:

  • the savings contract comes with a maxRate function that can only be set by a governor address of the protocol: this one will be set to 10%
  • the guardian multisig can update the rate of the savings contract provided that it’s inferior to the maxRate . Here we’re proposing to make the mandate of the guardian multisig even clearer. The guardian multisig will be allowed to update the rate based on the schedule above under the following conditions:
    • last update was 7 days ago

    • or, the current rate is too high and causing the protocol to lose money based on the current utilization of the savings contract. For instance if many people come to mint with EUROC thus increasing utilization and decreasing RoA, it may no longer be profitable for the protocol to distribute at the current rate. Formally the condition for the guardian multisig to intervene in this case at a time $t$ writes:

    • or, the rate based on the schedule would be different from the current rate encoded in the contract by 0.5*. This writes:

Upon launch, all essential metrics for rate computation should be made available on Angle new analytics

Value to the protocol

Beyond the advantages mentioned above in terms of attractivity for agEUR, this setup provides a high degree of clarity for future agEUR stakers in terms of what they can expect for the yield they get. While there should be some substantial variations in the first weeks, this should converge and stabilize quite rapidly.

If this goes through, a point of focus should then be to increase the system’s return over assets through the acquisition of other forms of € securities (like bC3M).

Note that in this setup the protocol is still generating some revenue from its reserves and will be increasing its equity through this mechanism (thanks to the x parameter).

Risks

The risk here is the arbitrage opportunities with the protocol and the protocol paying agEUR too much with respect to what it is earning. The tightly controlled schedule here ensures that if the protocol starts losing, it will not lose for a long time and always come back to profitability.
There may be transiently some arbitrage opportunities if the schedule leads to a rate greater than the borrow rate proposed here. If these are taken, this should make according to the schedule the savings rate decrease hence killing arbitrage opportunities.

Next steps

This saving system affects agEUR at the balance sheet level. As such, it could be deployed on any chain where agEUR exists. We propose to stick to Ethereum for this initial proposal.

3 Likes

First question: is there any study on the effect of increasing loan interest rates on loan volume?
Second question: since the launch of staked ageEUR on ethereum is mandatory, what is the strategy regarding its launch on Ethereum L2?

  • Maker ahead of us is an interesting case study, and I haven’t seen from the data a drastic decrease in loan amounts
  • I think it should be part of the roadmap → on my end, I wanted to see operationally how it went with Ethereum only, before venturing into other chains. I believe strategy should be to go towards chains where we have support
2 Likes