Initialize Compound III (WETH on Ethereum)

Summary

Below are Gauntlet’s initial recommendations on interest rate curves for the WETH Comet for Compound III.

wstETH/cbETH supply → 0% (standard)

WETH borrow
Utilization 0% → 1% APR
Utilization 90% → 5.2% APR (match stETH stake rate)
Utilization 100% → 10.4% APR (double stETH stake rate)
Linear in between

WETH supply
Utilization 0% → 0% APR + COMP incentive
Utilization 90% → 1.7% APR + COMP incentive
Utilization 100% → 7.8% APR + COMP incentive
Linear in between

Recommendation Specification

borrowKink = 900000000000000000
borrowPerSecondInterestRateBase = 315360530
borrowPerSecondInterestRateSlopeHigh = 16398720000
borrowPerSecondInterestRateSlopeLow = 1639871893

supplyKink = 900000000000000000
supplyPerSecondInterestRateBase = 0
supplyPerSecondInterestRateSlopeHigh = 19236960000
supplyPerSecondInterestRateSlopeLow = 536111569

Note that these numbers will differ slightly from the APR numbers because of compounding interest in blocks.

Methodology and Rationale

Some core assumptions to this recommendation are that 1.) stETH has an annualized yield of approximately 5%, 2.) the current utilization statistics of the Compound II ETH market are based on the fact that there is no strong use case for borrowing ETH and not that the interest rates are too aggressive, 3.) the Compound III USDC Comet provides reasonable data points, but the WETH Comet will have a significantly different use case, 4.) users will be elastic with regards to interest rate changes around the boundary of stETH annualized yield.

Current USDC Comet IR curves

Since the WETH borrowed cannot be used as collateral, there is less market risk concerning WETH liquidations, and thus there is less need to make the max interest rate especially high.

By approving this proposal, you agree that any services provided by Gauntlet shall be governed by the terms of service available at gauntlet.network/tos.

5 Likes

This might be a silly question, but per the USDC IR Curves, how is the USDC supply interest rate higher than the USDC borrow interest rate at 100% utilization?

3 Likes

Hello @pauljlei !

If my calculations are correct, with the curves you are proposing the implicit reserve factor at 90% utilization would be 70% (and 53% at half utilization).

This instance of Compound III is very promising and could have a real organic traction without any rewards, with small reserve factors (see the metrics of stEth/Eth on Aave, Morpho-Aave, Euler…). It don’t understand why it should depend so much on COMP rewards.

Is the goal of this to profit from COMP distribution to increase the reserve of the Compound DAO? In this case, it should at least be explicit, in order for the community to discuss about it, especially if the reserve factor is so high.

2 Likes

The logic surrounding borrowing costs makes sense, @pauljlei.

I agree with @MathisGD that the implicit reserve factor could be significantly lower (e.g. interest rates across utilization rates could be higher); one of the original concerns with the market would be that native ETH suppliers would have below-average incentives to participate (vs, staking their Ether natively via proof of stake).

Are there other models that maintain positive implicit reserve factors, simply by adjusting supplyPerSecondInterestRateSlopeLow?

2 Likes

Thanks all for the feedback - relayed to our team and will come back here.

1 Like

Hi @AndrewA - great question, some color can be found below:

We agree that a highly important consideration is properly incentivizing supply. Our original supply interest rate (even without COMP incentives) is in line with historic data for ETH supply rates. We acknowledge that since ETH cannot be used as a collateral in this Comet, the protocol requires a higher supply interest rate to motivate users to supply. However, given the behavior of these linear curves, having interest rate values that are closer together (both at the base value and at the kink) leads to additional utilization points where there will be a negative reserve rate.

Our recommendation above (which we shall refer to as Option 1) constructs the interest rate curves such that there are fewer points in which there are negative reserve rates. There are some tradeoffs here:

  • With fewer areas in which there are negative reserve rates, there is less risk of “running out” of reserves.
  • However, the tradeoff is that if you want to minimize areas where there is a negative reserve rate, this means that the supply rate has to be lower. When the supply rate is lower, this means that there is less incentive for users to supply wETH. As such, growth in the market may be bootstrapped slower.

To @rleshner’s point about maintaining a positive reserve rate, one of our most important considerations was minimizing the behavior of negative reserve rate. However, if we assume that the utilization of the pool will mainly be around the CF and LCF (90%, 93%), we can build the curves below where suppliers have more incentive, but there will be more regimes with negative rates (thus increasing the chances that reserves “run out” in extended regimes of negative rates).

Open questions: what is the total amount of ETH reserves that the Comet plans to launch with? That will help give us bounds for how negative the reserve rate can be. If we seed the Comet with more ETH reserves, then we can be more aggressive with allowing negative reserve rates. With this additional data point, we can further fine-tune these recommendations.

Largest negative reserve rate for Option 2: -0.69423076% at utilization: 36.54%. This means that a reserve of $100k ETH (in USD) will run out in approximately 140 days.

Original recs (Option 1):
borrowKink = 900000000000000000
borrowPerSecondInterestRateBase = 315360530
borrowPerSecondInterestRateSlopeHigh = 16398720000
borrowPerSecondInterestRateSlopeLow = 1639871893

supplyKink = 900000000000000000
supplyPerSecondInterestRateBase = 0
supplyPerSecondInterestRateSlopeHigh = 19236960000
supplyPerSecondInterestRateSlopeLow = 536111569

Updated recs (Option 2):
borrowKink = 900000000000000000
borrowPerSecondInterestRateBase = 157680000
borrowPerSecondInterestRateSlopeHigh = 19552320000
borrowPerSecondInterestRateSlopeLow = 1639871893

supplyKink = 900000000000000000
supplyPerSecondInterestRateBase = 0
supplyPerSecondInterestRateSlopeHigh = 9460800000
supplyPerSecondInterestRateSlopeLow = 1356048000

4 Likes

Following the conversations on this thread, and discussions on recent community calls and in Discord, the parameters to deploy cWETHv3 have been finalized on the pull request:

The initial risk parameters follow Gauntlet’s recommendations:

  • wstETH: $100mm supply cap (64,500 tokens), 90% CF, 93% LCF, and 5% liquidation fee
  • cbETH: $10mm supply cap (7,100 tokens), 90% CF, 93% LCF, and 5% liquidation fee

The interest rate models follow Gauntlet’s first recommendation, with an adjustment to increase the supply rate slope. After the launch of the market, Gauntlet will monitor and consider recommendations to the interest rate model based on preliminary utilization & growth.

The price feeds of the deployment use the following inputs:

OpenZeppelin has completed an additional audit of modifications to the price input contracts, since the original post in this thread.

The cWETHv3 market has been deployed to 0xA17581A9E3356d9A858b789D68B4d866e593aE94.
A new proxy contract, to support advanced user transactions, has been deployed to 0xa397a8C2086C554B531c02E29f3291c9704B00c7. Please note that the UI will ask you to approve a new proxy contract to bundle multiple actions into a single transaction.

Initialization Proposal

To initialize the market, the deployment process deviates from the script used to initialize the USDC market, since the WETH market shares contracts in common with the USDC market, including the Configurator and Rewards contract.

The initialization proposal will take the following actions:

  1. Migrate the COMP distribution, 38.70/day, from Compound v2 ETH to the new WETH market
  2. Set the CometFactory for the new Comet instance in the existing Configurator
  3. Configure the Comet instance in the Configurator
  4. Deploy an instance of the newly configured factory and upgrades the Comet instance to use that implementation
  5. Configure the existing Rewards contract for the newly deployed Comet instance
  6. Seed the market with 500 WETH of reserves, by wrapping Ether held by the Timelock, then
  7. Transfer the Timelock’s WETH to the deployment
  8. Transfer 25,000 COMP from the Comptroller to the Rewards contract to refresh it’s supply

The deployment and proposal migrations have been built using the Comet scenario framework and deployed using the Comet deployment manager. The deployment was run through a GitHub action using seacrest and the scenario checks can be seen from the proposal branch CI checks.

7 Likes

One thing I’m curious on is Gauntlet’s denomination in $USD with their initial recommendation. On November 22nd of last year, ETH was $1100 USD. Today, ETH is closer to $1500 USD. With liquidity for wstETH and cbETH both being mainly in ETH, this means there’s deeper $USD liquidity for these assets as well.

If the whole market is denominated in ETH, could Gaunlet denominate their recommended supply caps in ETH as well? cc @pauljlei


From November 22nd to now, liquidity for newer assets like cbETH has improved meaningfully as well (greater than ETH’s increase in price). At the time of their initial recommendation, there was 1.5% slippage for $1.3mm sell of cbETH. Today, there is roughly 1.5% of slippage on a $7.3mm swap.

1inch, 1.5% slippage cbETH swap:

3 Likes

Your intuition is right, the governance cycle is too long, the market changes cause the data to change too much, and the previous data is not enough to support the conclusion of the parameters.

The result is that the coefficients introduced cannot match the market, and then they will modify the parameters many times to do some repetitive work.

3 Likes

The proposal is now live: Proposal 144.

6 Likes

Agree. Is there any possibility we can automate this process?

Hi @AndrewA, the proposal initializes the market with a supply cap of 64,500 wstETH and 7,100 cbETH.

Yep! The issue I was referring to was how this supply cap was suggested originally in $USD terms back in November, which leads to a meaningful difference in ETH terms.

The recommendation from November for $100mm of wstETH and $10mm of cbETH would have been roughly 82k wstETH and 9.2k cbETH at the time. This is a pretty meaningful difference from the 64.5k wstETH and 7.1k cbETH that was formally proposed.

And since this market and most of the liquidity for the two are denominated in ETH, I’d guess that suggesting parameters for this market in ETH terms would be more accurate as prices move.

1 Like

3 Likes

Till now (27Jan23), I summarized the borrow and supply statistics for cbETH:

+----+-----------+----------+-------------+-------------+---------+
|    | tx_hash   |   amount | direction   | from_addr   | token   |
|----+-----------+----------+-------------+-------------+---------|
|  0 |           |      112 | Supply      | 0x74a0      | cbETH   |
|  1 |           |      188 | Borrow      | 0x74a0      | WETH    |
|  2 |           |      170 | Borrow      | 0x74a0      | WETH    |
|  3 |           |      170 | Supply      | 0x74a0      | cbETH   |
|  4 |           |      150 | Borrow      | 0x74a0      | WETH    |
|  5 |           |      150 | Supply      | 0x74a0      | cbETH   |
|  6 |           |      135 | Borrow      | 0x74a0      | WETH    |
|  7 |           |      135 | Supply      | 0x74a0      | cbETH   |
|  8 |           |      125 | Borrow      | 0x74a0      | WETH    |
|  9 |           |      125 | Supply      | 0x74a0      | cbETH   |
+----+-----------+----------+-------------+-------------+---------+
[address]: 0x74a0 | [total borrow]: 768 | [total supply]: 692      
+----+-----------+----------+-------------+-------------+---------+
|    | tx_hash   |   amount | direction   | from_addr   | token   |
|----+-----------+----------+-------------+-------------+---------|
|  0 |           |       31 | Supply      | 0xEC9E      | cbETH   |
|  1 |           |       28 | Borrow      | 0xEC9E      | WETH    |
|  2 |           |       28 | Supply      | 0xEC9E      | cbETH   |
|  3 |           |       26 | Borrow      | 0xEC9E      | WETH    |
|  4 |           |       26 | Supply      | 0xEC9E      | cbETH   |
|  5 |           |       23 | Borrow      | 0xEC9E      | WETH    |
|  6 |           |       23 | Supply      | 0xEC9E      | cbETH   |
|  7 |           |       21 | Borrow      | 0xEC9E      | WETH    |
|  8 |           |       21 | Supply      | 0xEC9E      | cbETH   |
|  9 |           |       19 | Borrow      | 0xEC9E      | WETH    |
| 10 |           |       19 | Supply      | 0xEC9E      | cbETH   |
| 11 |           |       17 | Borrow      | 0xEC9E      | WETH    |
| 12 |           |       17 | Supply      | 0xEC9E      | cbETH   |
| 13 |           |       15 | Borrow      | 0xEC9E      | WETH    |
| 14 |           |       15 | Supply      | 0xEC9E      | cbETH   |
| 15 |           |       14 | Borrow      | 0xEC9E      | WETH    |
| 16 |           |       14 | Supply      | 0xEC9E      | cbETH   |
| 17 |           |       12 | Borrow      | 0xEC9E      | WETH    |
| 18 |           |       12 | Supply      | 0xEC9E      | cbETH   |
| 19 |           |       11 | Borrow      | 0xEC9E      | WETH    |
| 20 |           |       11 | Supply      | 0xEC9E      | cbETH   |
| 21 |           |       10 | Borrow      | 0xEC9E      | WETH    |
| 22 |           |       10 | Supply      | 0xEC9E      | cbETH   |
+----+-----------+----------+-------------+-------------+---------+
[address]: 0xEC9E | [total borrow]: 196 | [total supply]: 227
+----+-----------+----------+-------------+-------------+---------+
|    | tx_hash   |   amount | direction   | from_addr   | token   |
|----+-----------+----------+-------------+-------------+---------|
|  0 |           |     5039 | Supply      | 0xccFa      | cbETH   |
|  1 |           |     4250 | Borrow      | 0xccFa      | WETH    |
|  2 |           |      500 | Supply      | 0xccFa      | cbETH   |
|  3 |           |      200 | Borrow      | 0xccFa      | WETH    |
|  4 |           |      400 | Borrow      | 0xccFa      | WETH    |
+----+-----------+----------+-------------+-------------+---------+
[address]: 0xccFa | [total borrow]: 4850 | [total supply]: 5539
total WETH borrowed: 5814, total cbETH supplied:6458
1 Like