Aave Resilient Through USDC Volatility

TL;DR

Over the weekend of March 11 - 12, Aave realized $300k in insolvencies due to USDC price volatility. Aave proved resilient and the insolvency was fairly limited. However, if the USDC price declined further, losses could have been much greater if the protocol had not been paused. Gauntlet’s recommendation to pause markets aimed to significantly reduce risk of realized insolvencies. Weighing risk considerations against the strategic and philosophical implications of pausing the protocol, the Aave Guardian did not implement a pause.

Timeline of Events

2023-03-10 16:39 UTC: California regulators report the closure of Silicon Valley Bank (SVB) due to insolvency
2023-03-10 23:50 UTC: Circle reports that SVB is one of six banks holding ~25% of USDC assets
2023-03-11 00:18 UTC: Gauntlet internally flags USDC price anomalies and starts work on analysis
2023-03-11 03:11 UTC: Circle confirms $3.3B of around $40b total USDC assets (~8%) are exposed to SVB
2023-03-11 ~3:30 UTC: USDC prices start falling rapidly across exchanges
2023-03-11 7:03 UTC: Gauntlet recommends Aave Guardian be prepared to pause the protocol if needed
2023-03-11 ~8:00 UTC: The price of USDC reaches a low of around 88 cents
2023-03-11 9:19 UTC: Gauntlet provides analysis and recommends pausing Aave v2 and v3 in a forum post. This recommendation aimed to halt liquidations and avoid realizing mark-to-market insolvencies at highly dislocated USDC prices. At this point, few liquidations had occurred, and no insolvencies had been realized. Gauntlet held the view that allowing high LTV accounts to be liquidated in this environment was a significant risk for the protocol. The recommendation to pause Aave v2 and v3 was not implemented at the time.
2023-03-11 ~10:30 UTC: BGD Labs suggests the initial step of freezing stablecoins and setting LTV to zero on Avalanche in a forum post
2023-03-11 11:13 UTC: Gauntlet supports the interim step of proactively freezing stablecoins and setting LTV to zero if a pause cannot be implemented
2023-03-11 ~13:00 UTC: Aave Guardian freezes USDC, USDT, DAI, FRAX, and MAI on Aave v3 Avalanche and sets LTV to zero, stopping users from opening new positions but allowing liquidations to continue.
2023-03-11 ~21:00 UTC: Insolvencies start to become realized (even if USDC immediately returned to $1)
2023-03-12 all day: Gauntlet continues to perform analysis and provide risk updates
2023-03-12 22:15 UTC: US regulators announce that all SVB deposits (including USDC accounts) will be made whole
2023-03-13 ~00:00 UTC: USDC price recovers to over 99 cents and markets begin to stabilize

For transparency, Gauntlet’s recommendation to pause Aave was not implemented. It is important to note that pausing the protocol stops liquidations from proceeding, while freezing markets does not. Given user collateral ratios at the time, Gauntlet’s analysis showed liquidations increased insolvency risk. Aave ultimately realized around $280k in insolvencies from v3 Avalanche eMode and around $20k from v3 Arbitrum. We will focus the rest of this analysis on the v3 Avalanche markets as the other markets exhibited similar behavior on a smaller scale.

Post-Mortem Analysis

At the time of Gauntlet’s pause recommendation, Aave v3 Avalanche had about $500k of mark-to-market insolvencies, none of which had been realized yet assuming pricing returned to normal. Due to later liquidations, these insolvencies were realized into ~$280k of bad debt. The chart below shows mark-to-market (blue) and realized insolvencies (red) on v3 Avalanche. We see that the first realized insolvencies started around 21:00 UTC on March 11.

Digging deeper into the liquidations that occurred, we can look at specific accounts’ collateral ratios. In the chart below, we see that collateral ratios for the top 3 insolvent accounts (0x2092, 0x45b4, and 0xbf2a) fell steadily as they were liquidated. If the collateral ratio is initially less than (1 + Liquidation Bonus), partial liquidations push the account further into insolvency. This data also aligns with our assessment that liquidations were most harmful once the USDC price had somewhat stabilized below $1. By 18:00 UTC on March 12, the three accounts shown had fully realized their insolvencies and reached a collateral ratio of near zero. We conclude that the liquidations that occurred while USDC was below ~98 cents were harmful to protocol health. During the dislocation, the protocol was effectively positioned long USDC, and liquidations closed this long position at a significant loss.

Zooming in to a specific account to see how the insolvency progressed, we isolate the borrow and supply for 0x45b4. This account exclusively supplied USDC and borrowed USDT. Once its USDC supply dropped below its USDT debt, insolvency was realized even if the USDC price returned to $1. Over the course of March 12, the account’s USDC collateral was drained by recurring liquidations until only the insolvent debt portion remained.

While pausing Aave would have likely reduced insolvencies, it also would have had some costs. The expected revenue loss from pausing the markets from March 10 through March 13 was roughly $23k, split between $6k of interest revenue, $11k from liquidation protocol fees (0.1% of the total amount liquidated), and $6k flash loan fees. This is an order of magnitude lower than the insolvencies that occurred.

Unfreezing Stablecoin Markets on v3 Avalanche

To reiterate, we recommended pausing Aave v3 Avalanche on March 11 due to the high risk of liquidations increasing realized insolvency. Though the pause was not implemented, stablecoins on Aave v3 Avalanche were later frozen, preventing users from opening new positions. Since USDC has returned to a $1 price and stablecoin markets have been normalizing, we evaluated whether it is appropriate to restore full functionality. In doing so, we compared the risk profile of the market now to before the USDC volatility. We note that market conditions are still recovering and baseline risks remain elevated. The graph below shows our estimates for maximum insolvency on March 11, as a function of USDC price. Since DAI is partly backed by USDC and moved similarly over the weekend, we assume that DAI and USDC prices are equal for this calculation. On March 11, we expected a price of $0.85 would result in insolvencies of $969k, assuming all are fully realized. A greater dislocation would cause an increase in insolvencies for the protocol.

As of March 14, the risk exposure has changed substantially. As shown in the updated graph below, insolvencies do not begin until USDC drops below 90 cents. This tells us that the potential insolvencies have mostly been realized and the current composition of the loan book (excluding the bad debt) is significantly less risky than before. Since this offsets some of the uncertainties around current risk conditions, we recommended unfreezing the markets on March 15.

Theoretical Losses on Aave v2

It is impossible to know what exactly would have happened had USDC prices continued to dislocate. Due to similar conditions, however, we can reasonably theorize that v2 would have evolved analogously to v3 eMode. Since the Liquidation Threshold on v2 was 87.5% versus 97.5% for v3 eMode, this scenario would have occurred at a lower USDC price. We estimate that should USDC prices have stabilized at 80 cents, Aave v2 could have about $1mm in insolvencies, assuming all insolvencies were realized. At greater deviations, the insolvencies would increase as shown in the chart below.

Frequently Asked Questions

Q: Why did healthy liquidations not occur on Aave eMode? How did accounts get underwater in the first place?

A: The window for healthy liquidations to occur was very brief. We do not know the exact number of blocks where healthy liquidations were possible, but it was likely too few to meaningfully improve protocol health. Some liquidator bots may have also been poorly configured to work in a USDC volatility scenario, due to the view of USDC as a safe haven. During the window where healthy liquidations were theoretically possible, there may not have been many participants able to realize the opportunity.

Q: What does Gauntlet mean when saying adverse liquidations would happen at the “worst” price points?

A: When buyers returned to the market at a discount, the USDC price temporarily stabilized below $1. Profitable liquidations can occur when there is sufficient liquidity for a flashloan or to immediately sell USDC on various exchanges. In these scenarios, the USDC collateral will likely be liquidated at highly adversely selected prices, making liquidations even more costly.

Q: Gauntlet recommended pausing the protocol. This would stop all liquidations, including liquidations on other positions, like ETH collateralized positions. Were you not worried about this?

A: We were worried, but given our objective of mitigating insolvencies on the protocol, the USDC volatility was a far greater risk than other assets at the time of that recommendation.

Q: Why did Gauntlet recommend pausing v2 in addition to v3?

A: At the time of our initial forum post, there was almost 1 billion USDC in Aave V2, with a Liquidation Threshold of 87.5% and a Liquidation Bonus of 4.5%. The USDC oracle price was near its low of 88 cents. Though this outcome, fortunately, did not materialize, the v2 protocol was very close to a similar liquidation and insolvency dynamic as occurred in v3 eMode. Given the much larger size of the v2 USDC pool, we recommended pausing v2 to mitigate the potential worst-case scenarios.

12 Likes

A bit of delayed reply here, but I’d be curious to understand any historical context regarding the Avalanche market.

It’s not obvious to me why the Avalanche v3 market in eMode had meaningfully more exposure to USDC price swings vs. other markets. Does Gauntlet have any analysis on Avalanche and its nuanced difference vs. other markets?

Along the same lines, why did the Avalanche market lag behind the other markets in USDT borrows even with eMode on USDC and a large market?