Hey all – forgive me for the large wall of text but I’d like to introduce motivation for and specific paths towards re-enabling borrowing on Moonwell!
Moonwell did a great job mitigating the damage from the Nomad depegging by quickly pausing borrowing when
the attack started. This should be lauded. Despite being exposed to $100M+ of risk, the protocol has less than $10M of bad debt on its books.
Moonwell is currently in this paused state where borrowing is disabled.
If we re-enable borrowing of non-Nomad assets, we can start to build trust with new users that the protocol has and will continue to operate properly so that they start supplying assets. Healthy money markets have two sides to them: We need borrowers to incentivize suppliers. When the protocol is chugging along, bad debt in the native markets (GLMR, xcDOT, and FRAX) can be slowly rebuilt via the reserve factor and protocol sieze share of liquidations (see below for definitions).
Re-enabling borrowing of non-Nomad assets is safe only if Nomad assets cannot be used as collateral.
There are other changes that would also probably be helpful for the protocol, but this post will only focus on the goal of re-enabling borrowing at this time as this is clearly a very important immediate step to take at this moment.
There are several knobs to turn to encourage this behavior:
- Decrease the collateral factor on Nomad assets (to zero or to some percentage of the “true market price”)
- Increase the reserve factor on Nomad assets
- Change the oracle price away from the “peg” price
And, further, the manner in which these knobs are turned over time is up for debate:
- The rate at which the values are changed (instantly, quickly, or slowly)
- The point at which the values stop changing (collateral factor to 20% or 0%)
I will elide some of the basics and terms that aren’t as critical to understanding this post, but please read through the official Moonwell docs to learn more about how the protocol works.
Collateral factor is the maximum percentage that can be borrowed against some given asset as collateral. For example, with a collateral factor of 60%, if I provide $1000 USDC as collateral, I can borrow $600 worth of assets against that collateral before my loan becomes unhealthy.
Reserve factor is the percentage of the interest that a borrower owes that goes back to the protocol. For example, with a reserve factor of 20%, if I borrow $1000 USDC and the borrow rate is 10% APY, than over a year I’ll owe an extra $100 on my loan. Of that $100, $20 goes to the protocol, and $80 goes as extra interest to lenders.
Liquidation is the process of paying off the debt of another user whose health has dipped below 1.0. Close factor is maximum percentage of the collateral that can be liquidated at once. The liquidation incentive is an extra percentage paid out to incentivize folks to liquidate others in debt. The protocol sieze share is the percentage that gets paid out to the protocol. For example, for a user with $1000 of collateral and health below 1.0, with a close factor of 50%, liquidation incentive of 10%, and protocol sieze share of 3%, a liquidator can sieze $600 of collateral if they pay $500 of the debt and of that extra $100, $30 is given to the protocol and the liquidator pockets $70.
Looping is the process of lending and borrowing the same asset over and over again. This is profitable in cases when incentives make borrowing less expensive than the rewards paid for lending.
Bad debt is debt that could be liquidated but it is unprofitable to actually liquidate because the debt is more expensive than the collateral that can be siezed (even after the liquidation incentive).
- The collateral factor for all assets on Moonwell (both Nomad and non-Nomad) is currently set to 60%
- The reserve factor on USDC is 25%; on ETH and BTC is 30%
- The close factor on all assets is 50%
- The liquidation incentive on all assets is 10%
- The protocol seize share on all assets is 3%
- A governance vote takes 3 days and has an additional 24 hour timelock delay after it passes before any changes take effect.
- Nomad borrowers concerned with liquidation can acquire cheap (below oracle price) assets from StellaSwap if they don’t have enough in their wallet.
- Despite borrowing being disabled, withdrawing and repaying loans are enabled and so looped positions can still be unwound.
- Rational liquidators will repay any Nomad asset borrowed against native assets (GLMR, xcDOT, or FRAX) because those are profitable.
- Rational liquidators may repay any Nomad asset borrowed against another Nomad asset as long as they could sell the siezed asset at a profit (note: This is complex because it depends on StellaSwap market prices of the Nomad assets being siezed).
- Rational liquidators will probably not repay native assets (GLMR, xcDOT, or FRAX) borrwed against a Nomad asset unless the value borrowed is <19% (the current likely redemption value) of the amount siezed.
See the following spreadsheet on Nomad Collateral Reduction Impact which contains data pulled from the public retool subgraph with a few extra computed columns. I suggest making a copy and playing with the “New Nomad CF” value in the top-left.
Extra columns in the spreadsheet:
- Liquidatable (TRUE/FALSE): Whether an account has health > 1 given variable amounts of Collateral Factor applied to Nomad assets
- Native Borrowed (TRUE/FALSE): Whether an account has any native assets (GLMR, xcDOT, or FRAX) borrowed
- Native < 19% Nomad (TRUE/FALSE): Whether an account’s native asset borrow balance is < 19% of the Nomad asset collateral value
- Realistically Liquidatable (TRUE/FALSE): If an account is Liquidatable, AND has Native assets borrowed, AND Native assets are < 19% of Nomad collateral value
- Pure Nomad Liquidatable (TRUE/FALSE): If an account is Liquidatable, AND has NO Native assets borrowed
Insights from the spreadsheet:
- With the current 60% collateral factor, there are 0 nomad liquidatable accounts and 0 realistically liquidatable accounts (if there were, there would have been an arb opportunity as liquidation would be profitable).
- At 50% collateral factor, one big whale who is looping Nomad USDC can be liquidated (0x87839e0378c62d8962c76726cfdd932a97ef626a with a $1.667M position) ($1,667,741.75 total).
- At 40% collateral factor, 9 accounts are now Nomad-liquidatable but the total is only increased by ~$6k ($1,673,879.90 total)
- At 30% collateral factor, 11 accounts are now Nomad-liquidatable and the total is only increased by ~$12.5k ($1,686,359.90 total). A single account becomes realistically liquidatble but only for $2.25 of native assets.
- At 20% collateral factor, 11 accounts are still Nomad-liquidatable ($1,686,359.90 total). 4 accounts are now realistically liquidatable but only for $5.92 of native assets.
- At 10% collateral factor, 16 accounts are Nomad-liquidatable for ($1,789,912.92 total). 5 accounts are realistically liquidatable for $125.47.
- At 0% collateral factor, nothing new happens, it’s the same as 10% ($1,789,912.92 on Nomad liquidatable and $125.47 for realistically liquidatable).
Moreover these numbers asume Nomad borrowers don’t repay anything which is unlikely when a governance vote starts.
I am undecided between two paths and I’d like to hear thoughts from others in the community before we put up a governance proposal.
- Both paths don’t involve touching the oracle price as that can be quite hairy.
- Both paths do propose changing the reserve factor to 100%; this will push the supply APY down to 0% on all the Nomad assets. The supply APY is already small, but it doesn’t hurt to make it smaller as maybe this would be a trigger for someone to unwind their position if for some reason they’ve missed all other cues.
- Both paths (eventually) ramp collateral factor down to zero. I beleive this is safer than trying to move the collateral factor down to a safe RFV of Nomad assets as the market is a bit illiquid and unpredictible. For the health of the protocol, I think we should just effectively “ban” these assets as being collateral which is what a 0% collateral factor does.
- The only risk that I see of making these changes to the collateral factor are liquidations caused by users not paying attention to their positions. There is no possibility of someone who is paying attention being unfairly liquidated since positions can still be unwound. The only reason not to immediately turn the collateral factor to zero on Nomad assets, for example, is in service of these folks who aren’t paying very close attention.
- A negligable amount of realistically liquidatable (non-Nomad) funds are at risk of liquidation even if no one pays attention to this change.
- Phase1: Ramp down the collateral factor to 30% and increase the reserve factor to 100% on all the Nomad assets
- Phase2 (wait 1week after phase1 before starting governance vote again): Move the collateral factor to 0% on all the Nomad assets
Why this path? By doing a slower ramp down, hopefully many of the 11 users (should they not notice this change is coming) will notice their health factor significantly decrease or will only get partially liquidated. Maybe this will indicate to those users that they should unwind their positions to avoid being fully liquidated.
- Immediately move the collateral factor to 0% and reserve factor to 100% on all Nomad assets
Why this path? There is already a 4 day delay (3 days for governance vote + 24 hour timelock) which in theory is enough time given that the Nomad hack was all over the news so, in theory, anyone that still has Nomad assets in Moonwell is paying close attention.
Thanks for reading everyone! Please share your thoughts below if you disagree on any details or which Path you think is best for Moonwell.
Note: I have run this post by the Moonwell team to make sure that (a) all objective information I am sharing is accurate, (b) that the raw data was collected properly, and (c) that the computed data was evaluated properly. While the Moonwell team helped me with fact-checking, and I am an advisor for the company, the opinions expressed here are my own as an independent community member of the Moonwell ecosystem.