Economic parameters: Bucket sizes and Reserve allocation (CGP 43 & CGP 44)

I wanted to kick of the discussion on this thread of two proposals I have drafted, related to economics parameters:

Please take a look at the pull requests and discuss below!

Hey @martinvol – could you kindly include the text of both proposals and their implications here for those of us who are less familiar // capable of engaging on Github?

(Note that Github is a developer-biased platform and it seems to me like all proposal texts should be included here for discussion…)

Hi everyone and thanks @martinvol for kicking off this discussion. We had some more chats about this and are suggesting to move forward only with increasing the Mento bucket sizes (CGP0044) for now. The reason for the change of bucketsizes (more precisely the reserveFraction parameter) and the potential implications are explained in the proposal on github. Per request of @papa_raw, you can also find the proposal text below. We are actively looking for feedback so please let us know what you think!


cgp: 44

title: Increasing Mento Bucket Sizes for cUSD and cEUR

date-created: 2021-10-28

author: @martinvol, @rcroessmann

status: DRAFT

discussions-to: Economic parameters: Bucket sizes and Reserve allocation (CGP 40 & CGP 43)

governance-proposal-id: [if submitted]

date-executed: [if executed] <date created on, in ISO 8601 (yyyy-mm-dd) format>


Overview

This Governance proposal aims to reduce the slippage incurred when trading Celo stable assets, that is cUSD and cEUR, via the Celo stability mechanism (often referred to as Mento). All else equal, a reduction of the Mento slippage, which can be achieved via an increase of the Mento reserveFraction parameter, can be expected to tighten the arbitrage bounds on the cUSD/USD and cEUR/EUR pairs (collectively referred to as cXXX/XXX in this proposal).

Mento allows users to create or burn Celo stable assets by trading the cUSD/CELO and cEUR/CELO pairs with the reserve. It uses a constant-product-market-maker model to mitigate the depletion potential of the reserve by dynamically adjusting the on-chain price to one-sided trading. For more background on Mento, please refer to the documentation.

The reserveFraction parameter, which can be set for cEUR and cUSD individually, allows to control the sensitivity of the Mento prices to one-sided trading. The smaller this parameter, the smaller the resulting Mento bucket sizes and therefore the larger the price reaction to one-sided trading.

The main benefit of choosing a low reserveFraction is that this reduces the depletion potential of the reserve should there be imprecise CELO/USD oracle rates and/or manipulated CELO/USD market prices. This is because the Mento cXXX/CELO price adjusts quickly to one-sided trading if Mento buckets are small.

The main downside of a low reserveFraction parameter is wider arbitrage bounds on cXXX/XXX prices. For more background on the effects of the reserveFraction parameter, please see the Celo Stability Analysis, especially sections 4.3.2 and 4.3.3.

We propose to increase the reserveFraction parameters to adjust the above tradeoff to the current market environment, that is an increased demand for cUSD and cEUR as well as increased CELO market liquidity.

Status

In governance proposal CGP008, the reserveFraction parameter for the cUSD/CELO Mento pair was increased from 0.1% to 0.5% and has remained at that level since then. The cEUR/CELO reserveFraction parameter was set to 0.13% via CGP008. Both of these values were set in an attempt to solve the tradeoff between a strong protection of the Celo reserve and tight arbitrage bounds on the stable asset prices in the best way possible at the time.

Proposed Changes

We propose to increase the reserveFraction parameter for cUSD from 0.5% to 1.0% and for cEUR from 0.13% to 0.5%. All else equal, this should roughly double (quadruple) the daily expansion amounts of cUSD (cEUR) that can be minted at less than a 1% cost.

  1. Set cUSD reserveFraction to 1.0%
  • Destination: Exchange (Proxy: 0x67316300f17f063085Ca8bCa4bd3f7a5a3C66275; Implementation: 0xEDF3F7e01037e4583de2659C5e243621Ea2501A4),Exchange.setReserveFraction

  • Data: 10000000000000000000000 (1/100 * 10^24 = 1e22)

  • Value: 0 (NA)

  1. Set cEUR reserveFraction to 0.5%
  • Destination: ExchangeEUR (Proxy: 0xE383394B913d7302c49F794C7d3243c429d53D1d; Implementation: 0x622833AB6E9501C9072d2c706c60AaB5Ff0234d9),Exchange.setReserveFraction

  • Data: 5000000000000000000000 (5/1000 * 10^24 = 5e21)

  • Value: 0 (NA)

Verification

  1. Confirm proposal steps: run celocli governance:view --proposalID X // TODO add proposal ID once submitted proposal

  2. Confirm Exchange (cUSD) and ExchangeEUR (cEUR) addresses: run celocli network:contracts

Risks

  • Oracle rate risk: In case of imprecise CELO/USD oracle rates and/or manipulated CELO/USD market rates, users could exchange cUSD or CELO with the reserve at a price that does not reflect the current market valuation. The increased reserveFraction parameter would lead to a larger loss of the reserve in such a case. The equivalent argument holds for cEUR and the CELO/EUR rate.

Useful Links

1 Like

I am sorry for the confusion, the original post had the name of the proposals and the links to the text messed up.

Now they should be fine :pray:

1 Like

I have written a little report digesting some of our thoughts and analysis around CGP 40 : Reduce Exchange Spreads for cUSD and cEUR and CGP 44: Increasing Mento Bucket Sizes for cUSD and cEUR . Feel free to comment here or there: Mento-Parameter-Adjustment-CGP-40-CGP-44
Some of the discussions happened during our open meetings where @zviad | WOTrust contributed. I would like to encourage anyone who has an interest in stability or ideas for changes or improvements to participate!

1 Like

Looking forward to this change. Faster cUSD minting will keep peg tighter during high demand spikes, plus being able to mint more cUSD per day will mean more upwards price pressure on CELO during high cUSD demand times. All good stuff.

I would also highly encourage all DeFI protocol devs/owners to pay attention to these changes since cUSD is pretty integral to all current Celo #DeFI. It is important to understand rational and expected outcomes of these changes for those protocol devs. (i.e. Ubeswap, Moola, Mobius, etc…)

2 Likes

This looks like the right move given the increased demand for cUSD.

1 Like

Hi @roman , clarifying question - why just moving forward with 44? What was the thinking on the reserve freezing?

My thoughts/questions on reserve freezing:

  1. What does “frozen” mean? Does this mean that they can no longer be transferred (i.e. they no longer serve as collateral for stables?)
  2. “This could enhance the risk that occurs when a demand decrease for stablecoins (cUSD) exceeds the total value of the (now reduced) exchangeable assets in the reserve.” Is the word “decrease” a typo? Should this be “increase”?
  3. Why bother freezing? Why not just change the reserve target allocation instead?
  4. Generally, I think it’s important that we slowly but steadily move reserve assets towards our target of more BTC and more ETH, it just seems prudent. Do people generally feel we are to quick or too slow in moving towards BTC and ETH?
2 Likes

Thanks for chiming in @thezviad and @Patrick!

And @Pinotio.com, thanks for your questions wrt. the reserve freezing. I hope this helps to clarify things a bit:

  1. The frozen part of the reserve is the part of reserve CELO that cannot be transferred out of the reserve contract - not even by the exchange contract / Mento - at that particular moment in time. The unfreezing happens in a programmable way so frozen CELO is basically reserve collateral reserved for the future.
  2. The word “decrease” was intended. If the demand for cUSD decreases, cUSD to be bought of the market by the reserve. This is only possible if there is sufficient collateral in the reserve.
  3. Great point! Simply changing allocations is an option but there are some subtle differences between freezing and setting different allocations wrt. to the rebalancing afterwards. For example, if we would simply change the target weights to the current allocation, a price move of CELO/BTC would require a larger target rebalancing trade compared to the case of freezing to target. Simply changing the target allocation is nevertheless an option we should explore going forward.
  4. I wholeheartedly agree. The reserve is continuously trading towards target allocations but the speed of this trading is kept in relation to current liquidity levels. Still, new BTC and ETH are continuously added to the reserve (see celoreserve.org).

To elaborate a bit more on your main question: “What was the thinking on the reserve freezing?” The most important point around reserve collateral at this point, as you also stated under 4., seems to be that we need to continuously trade towards target allocations while accounting for liquidity when choosing the trading amounts. Freezing the reserve felt more like a cosmetic change at this point (as would changing target allocations) and therefore we would propose to simply continue reserve trading as currently conducted and have the distance to the allocation target clearly reflected.

2 Likes

Thanks @roman .

  • I notice that we are indeed making progress towards our reserve targets (helped by the upward price increase of ETH relative to CELO). Good to keep making progress.
  • As cUSD/cEUR supply increases I notice that our reserve ratio is going down at a reasonable clip. I guess this will tend to asymptote towards 1, but it will increase if we continue to see a rising crypto market.
1 Like

Thanks everyone for the feedback! The proposal is now live on mainnet.

1 Like