Gauntlet Reserve Factor Methodology for the Compound Protocol

Optimization Strategy: Adjust reserve factor values to account for expected insolvency values and reserve growth for the entire protocol (while minimizing total change to reserve factor parameters).

To drive more value to the Compound Protocol as a part of Gauntlet’s Dynamic Risk Parameters engagement, Gauntlet will begin making reserve factor parameter updates. In this analysis, we formulate an optimization problem around the safety of the protocol and economic benefits to users of the protocol. The purpose of this post is to inform the Compound community of Gauntlet’s quantitative methodology. We welcome feedback and questions from the community.


In plain English, our methodology aims to accomplish the following goals:

  1. Keep reserve growth within some target range.
  2. Maintain reserves that will be able to withstand insolvency risks for the entire protocol.
  3. Limit each reserve factor change in magnitude to limit shock to users of the protocol.
  4. Model expected liquidity changes within the protocol as a result of reserve factor changes for future reserve factor updates.

At the bottom of this document, we provide an example to illustrate our reserve factor methodology.


We assume that reserves collected from reserve factors provide capital buffer for the protocol. There are two competing forces here: users of the protocol want to minimize the reserve factor whereas the protocol wants to maximize it as a form of insurance against asset loss.

We can mathematically formulate this as a constrained optimization problem that minimizes an objective function f that maps reserve factors, rf, to a cost f(rf).

The constraints used will ensure that the liabilities covered by the reserve factors can still cover large-scale losses.

Define A be the finite set of assets contained within the protocol.

We will try to minimize the difference between the total value collected from the reserve factor and the Target reserve growth rate (goal 1). Formally, we can construct the following:

Screen Shot 2022-01-12 at 2.17.11 PM

Given this notation, we will first write down the optimization problem and subsequently describe the constraints and constituent components. The exact formulation of the target rate may change with time, but currently, we will measure the annualized 3-month trailing reserve growth of the protocol.

Formally, the problem we solve numerically is the following:

Screen Shot 2022-01-12 at 2.17.52 PM

where C_a is the current reserve for each asset and DR_asset is the expected default percentage on aggregated high volatility, high gas congestion simulations.

This first constraint ensures that Compound maintains reserves that will be able to withstand insolvency risks for the entire protocol. Specifically, the total value collected from the reserve factor will be greater than the expected shortfall value (given high volatility and high gas congestion settings, goal 2):

Moreover, the second constraint below encodes a restriction on the change of all reserve factors to be less than 0.05 per symbol (goal 3):

Screen Shot 2022-01-12 at 2.23.36 PM

Given the assumption that supply will be changed based on reserve factor (goal 4):

Screen Shot 2022-01-12 at 2.23.41 PM

The constraint on the aggregate change tries to eliminate the polarized and drastic solutions. In addition, as more reserve factor changes are introduced, this formulation will change. Additional constraints and assumptions about borrower elasticity will need to be added iteratively.

Methodology Example:

It may be difficult to visualize how this methodology could find solutions for reserve factors; this is a simplistic example using only two assets: ETH and USDC.

These are the inputs for an ETH and USDC pool used to generate the bounded optimization function:

Symbol Current Reserve Factor Current Reserve Size (USD) Target Reserve Growth Rate (USD, annualized) Supply (USD)
ETH 20% 2,337,114.78 1,011,191.33 5,345,284,060.21
USDC 7.5% 11,886,313.95 10,228,974.07 2,951,927,304.51

The above target growth rate is shown illustratively as the 3-month rate extrapolated to a year. In addition, we assume that the expected insolvency for the ETH pool will be 0.5% and for USDC it will be 0.01%.

The following is a contour plot of the objective function over reserve factors of ETH and USDC for the input conditions outlined above.

In this contour plot, the various shades of green represent differences in the objective function (having reserve growth match the target rate). Darker shades of green represent USDC / ETH reserve factor pairs where the reserve growth is close to the target rate (the difference between reserve growth and target rate is close to zero). The black line represents the boundary for insolvency: when the current reserves plus the increase in reserves equals expected insolvencies (goal 2 above). Thus, taking into consideration both the shades of green as well as the black line, we can see reserve factor solutions that would both minimize the objective function (having reserve growth match the target rate) as well as cover the expected insolvencies under high volatility and high gas congestion settings. For example, an ETH reserve factor of 18% and a USDC reserve factor of 7.5% would be a sufficient solution, as it both minimizes the objective function (dark green shade) but also resides inside the insolvency constraint (lies above the black line). We would note that when we run this methodology over more than 2 assets, it will be harder to visualize the solution boundaries.