Discussion: CGP 59 - cREAL Fee Reduction

Hi everyone,

I am creating this post to let you know about our proposal to increase cREAL Mento bucket size (GCP 59 ). Any questions, comments and suggestions are welcome!

cgp: 59

title: Reduce Exchange Spreads for cREAL

date-created: 2022-07-08

author: @mento-protocol/core

status: DRAFT

discussions-to: Discussion: CGP 59 - cREAL Fee Reduction

governance-proposal-id: [if submitted]

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


This governance proposal suggests a reduction of the fee charged for cREAL exchanges via Mento, the Celo stability protocol.

In governance proposal CGP0042, the Celo Reserve has charged a fee of 0.5%, a value controlled via the spread parameter in the Exchange contract, on all cREAL trades with the Celo Reserve. This fee is supposed to compensate the Celo Reserve for taking on price risk as a liquidity provider.

A 0.5% spread effectively leads to an arbitrage free range on the cREAL/BRL rate of at least 0.5% in both directions. Additional fees an arbitrageur encounters, like fees at centralized exchanges, gas costs etc., further increase the range in which cREAL/BRL can fluctuate before arbitrage incentives are present that create pressure towards an exchange rate of 1:1.

We have been in extensive discussions with partners and community members engaging with cREAL. We came to the conclusion that in order to facilitate cREAL markets the spread parameter has to be decreased to 0.25% which is equal to the cUSD and cEUR spread parameter. Under the assumption that CGP0058 passes a spread of 0.25% will further increase the amount that can be minted or contracted from a factor of 20 (current versus only reserveFraction increased to 0.5%) to a factor 26 (current versus reserveFraction increased to 0.5% and spread lowered to 0.025%).

Proposed Changes

  1. Set cREAL Spread to 0.25%
  • Destination: ExchangeBRL (Proxy: 0x8f2cf9855C919AFAC8Bd2E7acEc0205ed568a4EA; Implementation: 0x21772Fc92AB1B15dfE4ed7559EaD98eDba883feE), setSpread

  • Data: newSpread = 2500000000000000000000 (0.0025 * 10^24 = 2.5e21)

  • Value: 0 (NA)


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

  2. Confirm Exchange addresses: run celocli network:contracts

Post-Execution Verification

  1. Confirm Exchange spreads changed to 0.0025: run celocli network:parameters


  • Oracle rate risk: In case of imprecise CELO/BRL, users could exchange cREAL or CELO with the reserve at a price that does not reflect the current market valuation. The decreased spread parameter would lead to a larger loss of the reserve in such a case.

Useful Links

Hi @Nadiem ,

Great to see your efforts in improving cREAL liquidity.

The tradeoff of great liquidity is the risk to get a big inventory of just one asset when the market is trending, the spread controls how sensible the position is to that moviment - high spread → high inertia.

I like to use the max/min ratio to figure out how risky is an asset, the problem which arises from this approach is how to choose the timeframe. A starting point is realizing that CELO is quoted in USD and cREAL in BRL, so it’s interisting to consider an interval which encompass one meeting of each monetary authority of US and BR, then choosing the last 45 days satisfies the initial condition.

So let’s take a look:

  • max(celo-45d) = 1.140 USDT (Binance) and 5.894 BRL (Novadax);
  • min(celo-45d) = 0.735 USDT and 3.821 BRL.

Then, the invetory risk a liquidity provider has to deal with by trading CELO-USD could be measure as:
1.140 USDT / 0.735 USDT = 1.55;
On the order hand, the invetory risk a liquidity provider has to deal with by trading CELO-BRL could be measure as:
5.894 BRL / 3.821 BRL = 1.54.

As you can see the risks are much the same and, at this moment, it’s look fair enough to me Mento sets cREAL spread equals to cUSD, i.e. 0.25%.