The Liquidity Squeeze: Plans and Roadmap

In this post, we recap recent events, discuss next steps and propose the larger-scale protocol updates to prevent similar scenarios in the future.

What happened

On April 02, a massive withdrawal of USDT and USDC from a few addresses (~150m) resulted in a liquidity squeeze: there were no available assets to borrow or withdraw. A relatively massive exit caused a great deal of uncertainty in the markets.


A few days ago, Vires DAO supported the proposal to impose daily withdrawal limits on USDT and USDC markets. Although most of the accounts supplied amounts of funds lower than the established limits, the withdrawals don’t happen at scale. As a result, it relieved the markets surge: new deposits and repays are now visible, as large withdrawals can now be processed gradually, not instantly.

The problem of limitless lending and borrowing

The more significant issue for all pool-based lending protocols is the limitless nature of those: at any time, enormous amounts can be withdrawn or borrowed(given collateral provided). Although the model is statistically stable, it doesn’t account for extreme scenarios.

As no one borrows assets just to store them in the wallet, waiting for a bank run to repay instantly, this creates several risks for all protocol participants:

  • borrowers can’t rely on prognostic rates: borrowing at 20% and suddenly ending up with 80% is quite a stress for any strategy.
  • the not-so-fast lenders can’t expect to withdraw immediately.

Lenders can still sell their positions on the open market by exporting their LP tokens and trading at DEXes. Still, the massive liquidity exits(and borrows) need to be controlled.

What’s next

“Bank run” is not something one can effectively react to(probably except for withdrawal limits): there just can’t be a “bank run reserve fund” storing 50-70% of the whole market “just in case”.

However, what can be done is to adjust the protocol to prevent it from happening. Here’s what we have in mind:

1. Limits to automatically turning on at extreme market conditions

If a market utilization for asset A exceeds a certain threshold(say, 95%):

  • borrows of A are paused,
  • replenish and redeems of asset A are paused,
  • withdrawals are limited per account per timeframe;

Once the utilization is back below the threshold, the limits are off: borrows are open again, and withdrawals are available without restrictions.

2. Locking LPs for additional VIRES Rewards

The idea is simple: governance tokens for locking LPs(VIRES_USDT_LP, VIRES_USDC_LP, etc). This will guarantee there’re at least some assets in any market that will not self-inflict panic by attempting to exit immediately. Of course, there needs to be a reason for a lender to lock funds in a fixed-term deposit rather than being able to access it at any moment, and the answer is adjusted tokenomics.

The current tokenomics distributes VIRES rewards for both lenders and borrowers. Come to think of it, liquidity protocols are interested in stable long-term liquidity provision, so the LPs should be incentivized in the first place(Yes, lenders are interested in borrowers and liquidators).

Changing “receiving governance tokens from participation” to “receiving governance tokens for locking LPs” makes the system clearer and more to the point.

Here’s how we see it:

  1. no vires rewards for borrows or regular supplies(collaterals),
  2. only those who locked their liquidity tokens(3mo) receive vires rewards,
  3. rewards can be collected daily,
  4. locked supply doesn’t provide borrow power;

This achieves several goals:

  • Long-term(or at least predictable term) depositors receive all the rewards.
  • Liquidity mining(in other words, looping) becomes economically impractical(see 3., 4. above)
  • If you are the only one committing, you receive all the rewards.
    There is no need to sell LP tokens; just lock them to collect rewards.

Timeline

In the upcoming several days, we expect corresponding proposals to be prepared for the measures described above.

Keep calm and enjoy APY!

–
EDIT: explanations and clarifications.

10 Likes

Like the idea of LP lock.

Will it be auto unlock after 3m and I have to relock manually. With the option to reset the timer in-between. So say after 2 month I reset to 3 months

Ore can I just lock for three months and have it available on time after that?

1 Like

There is still the issue of lack of willingness to supply, because potential suppliers do not want to deal with the risk of USDN that is hard-coded to $1 as collateral. You cannot have a functional lending protocol where the collateral is not valued at market price.

4 Likes

General questions:

  1. If provided supply will not bear any interest while being used as collateral for borrowed funds what will be motivation to use vires instead of other lending platforms (ie Binance) with fixed low interest rate? as Vires will not be awarded as well.
  2. Right now present model gives share of borrowed interest for gvires holders - as we see decrease in borrow % immenent (as alternative platforms provide same function with low interest eventually borrow % will be simmilar to other products on the market in base case scenario) - what will happen to locked gVires rewards? I only see major decrease in rewards eventually.

Suggestions:

  1. We need liquid Borrow APR with exponential growth, the more time you don’t repay the more borrow % becomes. Meaning that borrower will have to repay and borrow again to restore normal borrow APR. The only thing we need to agree is what the formula could be (ie dependable on borrow deadline see p2). Increased APR will provide additional income for suppliers and gVires holders even if utilization is not at 100%

  2. Another option user could set/select a deadline for return while borrowing funds, so that if funds are not returned by declared deadline, provided liquidity could be liquidated to cover borrowed assets in similar manner as it is done with liquidation while health level is low. There could be different set of deadlines with different liquidation thresholds per day overdue (lets say possible periods could be: 1 week, 1 month, 2 months) and overdue daily liquidation amount (if health over 5%) could be 5% for daily borrow (in 20 days all will be liquidated), 10% for monthly amount (in 10 days could be liquidated position) and 15% for 2 month amount (in ~7 days could be liquidated). There could be some grace period after deadline (lets say 2-3 days) before actually liquidations are possible. Difference between supplied amount - borrowed amount - liquidation bonus will be left after liquidation.

Basically that way borrower will have to not just add liquidity to increase health to prolong borrowing but need to repay whole debt to borrow again otherwise will be liquidated by community. Also that way protocol will be more a live and we could see more liquidations on a regular bases.

3 Likes

Just remember that it is the borrowers who take the biggest risks and pay for everything here.

reset is ofc can be possible; adding any amount(including 0) can reset the timer.

Q:

  1. General provision provides Supply APY, but not Rewards APY. Locked supply provides both.
  2. The parameters are under the control of DAO, I see no reason to lower the rewards for locking VIRES.

S:

Good idea, maybe mode detailed modelling can do the job. It’s not exactly clear though how it fits supply-many borrow-many model. Which are to be liquidated? What order?

1 Like

I like this concept. The circuit breaker described in the first part closely mirrors a suggestion i made earlier. LP token locking is an excellent idea and will add to stability.

I realize that this concept is part of a process and not intended to fix everything all at once. However, i would like to point out an existing vulnerability not addressed by the above changes: if any (not just USDN) of the listed stablecoins depegs below their associated collateralization factor, it would enable actors to deposit the depegged asset and borrow funds in excess of the value of the collateral. Collateralization Factors must therefore reflect depeg risks.

1 Like

About point 1, OK.

With point 2 I have doubts. I can see that LP tokens have one value greater to corresponding asset, so this negatively affects the interest earned (same APY, but lower supply). And other question: Can this value change (go down) when I decide to import/redeem them again in the future?

I think the APY was reduced for borrowers and suppliers to give oxygen to a large debtor. Since we’re helping that debtor, we should be rewarded with a spread of vires. Maybe those of that borrower, since he did not stop earning vires at any time.

Anyway I was following other assets that didn’t have the APR limit at that time (BTC and ETH), they reached 100% too, but for a short time. As soon as the APR went up a lot, the liquidity arrived. So I don’t know if the solution is that complicated.

1 Like

I like it.

Question: Would the currently locked gVIRES be allowed to be converted into LP VIRES-USDC or will we have to wait until it unlocks to be able to provide the LP?

Considering the above is yes, could there be some amount (if not all) from the currently supplied USDC/USDT that could be added to the LP VIRES-USDC/USDT pool using the currently locked gVIRES?

For example:
A user currently has 10,000 locked (6 months as it has been relocked daily) gVIRES at a current value of 87,000 USDC

The user also has 87,000 USDC currently supplied which can only currently be withdrawn at 1k USDC per day due to the liquidity squeeze.

The user then would “approve” that all (or a portion) of the currently locked gVIRES be automatically unlocked from governance and the equivalent of that amount in USDC also be reduced from the current supply total, and become locked LP VIRES-USDC.

Say if the user chose to do that with 30% of his locked in governance gVIRES, or 3,000 gVIRES his funds would look like this after the change:

Supplied: 60,900 USDC (remaining 70%)
gVIRES locked in governance: 7,000 (remaining 70%)
LP VIRES-USDC locked for Y period of time: X amount representing 3,000 VIRES (30% of original gVIRES balance) 26,100 USDC (30% of original supplied USDC balance).

I’m asking cause I understand this would not bring any additional liquidity, but it would incentivize the current suppliers that have been faithful and have locked their VIRES in governance to continue to commit, at least a portion (if not all) to a period lock in LP, which should help since there would be less withdrawing liquidity.

The real issue, is that someone is playing central bank… Capping interest rates, have never worked for them, why the fuck would it work here?

" * borrowers can’t rely on prognostic rates: borrowing at 20% and suddenly ending up with 80% is quite a stress for any strategy."

  • Eeeeh… Sounds like you got a ton of debt… huh. Don’t borrow money if you don’t like the risk.
  • As a supplier myself, I find it quite bothersome… I supplied quite a decent amount at 106% apy… But at 40%? With the risk of my money being locked indefinitely? No thanks. I’ll be using the 1000 limit as much as possible.
    “Just sell at DEX”, you say? At a loss, no thank you.

This impulse reactionary adjustments, that fucks the suppliers and rewards borrowers for taking the dumbest risks. Ya’ll too arrogant.

6 Likes

I’m pretty much in agreement. I just got in today looking at the APY at 42%… instantly regretting it. Should have done more research. The most OBVIOUS thing to do in this case is to raise interest rates on the borrowing. Doesn’t even have to be much. Someone else proposed 1% per day til an equilibrium is reached. Duh. Why aren’t they doing that?

The fact they aren’t makes me think something not so legitimate is going on behind the scenes and I’ll also be getting out as fast as I can. Fees going to eat me up, but that’s better than losing sleep.

I mean… It wasn’t suppliers who voted to cap APY for borrowing. The proposal was almost rejected, the someone bought who knows how many Vires to vote for it. Like, obviously is was someone in debt, who considered it cheaper to cap APY with the extra expense, than to keep paying 100%… Only took like 30 - 50k usd tops, to get enough voting power… Against a few hundred thousand daily interest, probably paid off right away too with how it instantly paid 2% of lock as USDT and USDC.

With that said. I bought a ton of cheap supply on DEX as well. Cuz, well… I’m sure I’ll be able to import it eventually… This just a minor setback in my eyes… Hopefully I get some cheap vires too. <.<

1 Like

There’s some other things that I don’t like either. I was trying to do research before investing but there is no discord community to talk with and it’s a lot to figure out. Couldn’t find anything about WAVES coin’s tokenomics… The WAVES discord has no action. Vires doesn’t even have a discord. So many red flags…

Item 2 is interesting, as well as emphasizing token vires.
It deals with only 1 plan (3 months), but since the entire reward pool will be directed to a single passive earning method, having a set of plans with different ratios may increase interest.
For example flex x% plan, 3 months y%, 6 months z%
so the investor can choose which is the most convenient and appropriate in the interest of participating in the system.

Another point is that item 2 should be voted on before item 1

And item 1 is almost making perpetual what was voted to be temporary, with minor changes, and considering that if item 2 is approved half of item 1 is unnecessary.

There are 3 telegram channels for Vires: English, Spanish and Russian.

It’s right on the site…

1 Like

Uh… where’s the plan to incentivize unwinding the massive borrow positions so that debts can be repaid? Do we just not care about that?

2 Likes

Not that hard finding info on waves… They post most things on Medium, and there’s plenty telegram groups.

1 Like

Regarding proposed idea: supply-many borrow-many (times) scenarios should be covered by different sets of borrowed funds with dedicated deadline, so for every borrow there needs to be deadline selected and shown - separate repay as well. Liquidations could occur also based on every borrowed set based on deadline (so if 2 borrowed sets were created on same day with 5 hours difference so first 1 could be partially liquidated 5 hours before second).

Once again - partial liquidation is key issue here even if health is high.

The idea is good, but I don’t see a good strategy to avoid bots getting all the liquidity whenever borrow hits 95%.

The scenario is…
Utilization hits 94% bots split all their lp token into thousand of new accounts.
Utilization hits 95% limitation is activated, but bots have already split their lp tokens and can get all the remaining liquidity. In other words, limitations won’t work.

Solution
Maybe adding priority of withdrawing lp tokens to gvires holders would avoid this to happen

1 Like