In our previous blog post, we provided an explanation of the Celo stability protocol as outlined in the Celo white paper, including an outline of the current implementation. This article is the first in a series of posts aiming to explore the detailed analysis of the current implementation and some of the lessons learned along the way. For the full analysis, please read the paper An Analysis of the Stability Characteristics of Celo.
Celo allows people to create crypto assets pegged to fiat currencies or a basket of goods. The Celo stability protocol can be thought of as a hybrid crypto-collateralization/ seigniorage-style model in which the reserve is used to adjust the supply of Celo Dollars in response to changes in demand. This post describes our initial analysis of the stability of the pegged currencies during times of market volatility.
In this analysis, we use simulation techniques to understand the behavior of the protocol and its potential vulnerabilities over a wide range of possible developments — including severe shocks, attacks, extremely positive and extremely negative market movements. We model a wide range of possibilities, rather than relying on historical data, because the space is too new to rely on historical prices for modeling purposes.
We will discuss this in three blog posts. In this first post, we give a brief overview of the model itself. In the second post, we will talk about the learnings from the simulation runs and how they have impacted the way we think around parameter settings and the stability mechanism. And finally, in the third post, we will discuss the stability mechanism in the context of highly adversarial participants.
We use a statistical process called Geometric Brownian Motion as a base model for simulating Celo Dollar demand over time.
We use Geometric Brownian Motion because it:
- provides changes that are relative to the level of demand in expected size and uncertainty.
- can be easily parameterized, given an expected growth rate and some uncertainty about future growth.
- has a lower bound of 0.
We chose the parameters for this process so that it simulates both large fluctuations in demand as well as extreme downturns over longer periods. In addition, we added demand shocks to the base model, building on the Merton jump diffusion model. Adding the Merton jump diffusion model allows us to model extreme shocks; for example, the demand could drop instantly in an adversarial attack on the peg.
A sample of resulting simulation paths for demand is shown below. Each line represents a different run of the simulation, with average growth rates declining from blue to green to red. As shown, the analysis assumes that demand could grow massively, it could drop to basically zero, or end up somewhere in between.
Now that we have established how we model demand, we can take a closer look at how the protocol reacts to changes in demand.
In general, there are two constraints to the protocol’s ability to adjust Celo Dollar supply in response to changes in demand. First, the supply of Celo Dollars cannot expand or contract faster than the market is willing to sell or buy the respective assets. Second, the supply of Celo Dollars cannot contract by more than the value of the reserve.
We focus here on the latter constraint. To model this constraint, we model the price of the assets in the reserve in a stochastic manner that allows for extreme market scenarios. We apply a similar process as we did in the last section (a Geometric Brownian Motion model with Merton jump diffusion-type shocks).
This time, we adjusted the Geometric Brownian Motion model by:
- using a multivariate version to account for the positive correlation between crypto assets, and
- assuming that idiosyncratic (affecting a single asset) as well as market-wide (affecting all assets) shocks on the prices of the reserve assets can occur.
Using this model, allows us to analyze scenarios in which the value of the reserve declines slowly over a period of time or even drops drastically in an instance.
Once we establish the parameters and models for demand and supply, we can simulate supply-demand paths for several different permutations of parameter settings. In our analysis, we explored scenarios ranging from paths in which all crypto assets lost more than 99% of their value, with highly volatile negative demand, to more stable scenarios in which reserve asset and demand fluctuations were less volatile and less negative.
We looked at several stability metrics, including the average absolute deviation, the respective percentiles of the observed prices and the fraction of days showing depegs larger than certain thresholds. Because of the wide range of parameter settings and the number of simulations, several of these simulation paths resemble attack scenarios. We will give a more explicit analysis of attacks in the third post of this series, but it’s worth mentioning that several key attacks (for example, the Soros attack) are simulated in these runs.
A few key learnings are that the initial overcollateralization of the reserve, the Celo Gold transfer fee, and the stability fee all play important roles in the protocol supporting stability. Furthermore, hedging the reserve, for example, by including some low-volatility assets in the reserve, has a positive effect on stability. When analysing the results, it is important to note that we are not accounting for other stabilizing factors, as for example trading of market makers and other sources of liquidity in the market for Celo Dollars.
In this post, we wanted to share with you an overview of our initial stability analysis, in which we modeled and simulated the reserve and the demand for Celo Dollars under a wide range of conditions. We tested millions of different scenarios, including strongly adversarial and highly unlikely situations. While a peg can never be guaranteed, our analysis showed stability through a wide range of adversarial conditions. More importantly, this analysis helps contributors to the protocol to understand the empirical behavior of the system under a range of scenarios, and helps to better understand the empirical nature of some of the key parameters affecting stability. In the next post, we will dive deeper into this aspect of the simulation.