I’ve been thinking about this topic just about non-stop and I wanted to put some of my thoughts down on paper. Take this all with a grain of salt as I’m kind of thinking out loud here, open to discussion/insights/feedback.
What causes rebalancing
Rebalancing is triggered when there is +/- 2.5% deviation in the price of ICX/USD from centralized exchanges vs sICX/bnUSD on Balanced (adjusting for sICX/ICX price).
The cause of rebalancing/broken peg appears simple. Too many people buying sICX with bnUSD. However, it’s far more than that. It’s about how much bnUSD is in the entire system, in all of circulation. Frankly speaking - there is way too much bnUSD in circulation right now.
Flow of bnUSD within the DEX
As mentioned above, you would think, since rebalancing is based on sICX/bnUSD price on Balanced vs a CEX, that rebalancing is only dependent on trading activity of that specific pool, and that used to be true.
But then we added the BALN/sICX pool, and a number of other bnUSD pools against stablecoins and other assets. This opened up the flood gates for bnUSD to freely flow between liquidity pools, making it susceptible to other market forces and ultimately resulting in arbitrage trading that significantly impacts the peg of bnUSD against sICX (and everything else for that matter). Here are some examples:
Example 1
Bob mints 10,000 bnUSD and buys BALN with it because he is bullish on BALN. This shouldn’t effect the peg of bnUSD against sICX, right? Wrong.
As soon as Bob executes this trade, circular arb bots do the following, over and over:
bnUSD → sICX → BALN → bnUSD, then they’ll have more bnUSD than they started with.
As you can see, this starts buying up sICX with bnUSD, affecting the peg.
Example 2
Bob mints 10,000 bnUSD and sells it for 10,100 USDS to take advantage of cheap USDS. This shouldn’t effect the peg of bnUSD against sICX, right? Wrong.
As soon as Bob executes this trade, circular arb bots do the following, over and over:
bnUSD → sICX → OMM → USDS → bnUSD, then they’ll have more bnUSD than they started with.
As you can see, this starts buying up sICX with bnUSD, affecting the peg.
Example 3
Bob buys 10,000 BALN with 10,000 sICX because he’s bullish on BALN. This shouldn’t effect the peg of bnUSD against sICX, right? Wrong.
As soon as Bob executes this trade, circular arb bots do the following, over and over:
sICX → bnUSD → BALN → sICX ->, then they’ll have more sICX than they started with.
As you can see, this starts selling sICX for bnUSD, affecting the peg.
There’s just too much bnUSD in circulation. It’s not about a specific pair, it’s about all bnUSD in circulation.
It’s safe to assume that the majority of our users are bullish on crypto. Therefore it’s reasonable to expect that it’s almost always going to be bnUSD → something else, not something else → bnUSD (unless it’s a stablecoin-only pool). This continuously injects more bnUSD into the system, and through the circular arbs mentioned above, will continuously break the peg of bnUSD.
So, what do we do about it as managers of this DAO??
Managing LTV
LTV Meta-governance thread
Managing LTV around the circulating supply of bnUSD is pretty straight forward. We don’t need an extensive discussion every time we need to change LTV, we just need to follow the below principles:
- If bnUSD is too cheap for too long → DAO must lower LTV to stop people from minting more bnUSD while also encouraging them to payback their debt
- If bnUSD is too expensive for too long → DAO must increase LTV to allow borrowers to mint more bnUSD
At some point, maybe we can make this algorithmic based on the amount of rebalancing occuring.
Pool Incentives
BALN allocations meta-governance thread
The current BALN allocations also play a role in the broken peg. There is currently a massive incentive to mint bnUSD and throw it into circulation through buying sICX or BALN then supplying to the liquidity pool.
The current BALN incentive allocations seem to be paying people to increase circulation of bnUSD, therefore breaking the peg.
Non-stablecoin pools that are paired to bnUSD should not be heavily incentivized, at least not right now. Stablecoin pairs are ok because selling half USDT for bnUSD isn’t a directional bet/trade; it actually brings more non-bnUSD assets into circulation and helps with the peg.
However, most users are not willing to sell half their crypto-assets (i.e. ICX) into bnUSD in order to supply liquidity because it is indeed a directional bet, so they end up minting bnUSD, dumping half of it for the other asset, then supplying liquidity. We are seeing the results of it now, as there is way too much bnUSD in circulation.
Borrowers already have a heavy incentive to supply liquidity to the bnUSD pool that matches their collateral type in order to hedge against rebalancing, therefore there doesn’t need to be strong BALN incentives. I’m writing a separate blog post about how to hedge yourself (on average) against rebalancing using the liquidity pools and will link it later. For now, here’s a twitter thread about it.
Influencing borrower behavior and the supply of bnUSD
Simply put, if there is too much bnUSD in circulation, borrowers should repay some debt (or at least take some bnUSD out of circulation). If there is not enough bnUSD in circulation, borrowers should mint more bnUSD and put it to work.
Let’s take a look at a few comparable borrowing protocols and how they manage borrower behavior, then apply the same logic to Balanced
MakerDAO
When DAI is below $1 for too long (too much DAI in circulation)
- MKR holders vote to jack up interest rates
- Rates increase significantly and borrowers are like “Oh sh*t, I need to lower my leverage and payback my debt asap!”
When DAI is above $1 for too long (not enough DAI in circulation)
- MKR holders vote to lower interest rates
- Rates decrease significantly and borrowers are like “Oh snap, time to lever up, debt is cheap!”
As you can see, MakerDAO punishes borrowers if there’s too much borrowing of DAI by jacking up interest rates until they pay it back. This process is done manually by MKR holders.
Omm Finance
Omm is not an algorithmic stablecoin, but still must manipulate borrower behavior based on utliziation. If too much of a pool is borrowed, it increases the risk of a bank run, where Omm won’t have enough money to honor withdraw requests by lenders.
If utilization is too high:
- Omm automatically increases interest rates on borrowers, then borrowers are like “Oh sh*t, I gotta close my leverage and payback my debt asap!” and lenders are like “Oh snap, these rates are amazing, I’m going to deposit more cash!”
If utilization is too low:
- Rates drop considerably. Borrowers say “Oh snap, cheap debt, time to borrow some USDC and use it to earn a higher yield by LPing on Balanced”
As you can see, Omm punishes borrowers / incentivizes lenders if there’s too much borrowing of an asset by jacking up interest rates until they pay it back or more lenders come in. This is an automatic/algorithmic process.
Balanced
When bnUSD is below $1 by more than 2.5%:
- Rebalancing kicks in and starts buying & burning bnUSD using borrowers’ collateral
- BALN holders vote to decrease LTV to stop the additional minting of bnUSD
- Borrowers buy up bnUSD to help stabilize the price and stop rebalancing
When bnUSD is above $1 by more than 2.5%:
- Rebalancing kicks in and starts minting bnUSD for borrowers and selling it for more collateral to add to their position
- BALN holders vote to increase LTV to allow borrowers to mint more bnUSD
- Borrowers sell bnUSD for other assets to help stabilize the price and stop rebalancing
As you can see, Balanced punishes borrowers if there’s too much borrowing of bnUSD by lowering LTV and rebalancing. Rebalancing is automatic/algorithmic while LTV management is currently manual.
Adding new collateral types might help
Every time we add a new collateral type, there should be a corresponding bnUSD pair to rebalance against with a minor amount of BALN incentives. Just enough incentive to get borrowers using that collateral type to be LPs. This way those borrowers are hedged against rebalancing while not creating too high an incentive to mint bnUSD just to participate in the pool.
This will ease the rebalancing burden of each individual collateral type, as right now the entire burden falls on the shoulders of sICX borrowers and the sICX/bnUSD pair. As an example, right now if somebody pumps BALN/bnUSD, the bnUSD flows to sICX/bnUSD, then sICX borrowers get rebalanced. If we add BALN borrowers, rebalancing would be spread across both of them to create accurate pricing on the sICX/bnUSD pool and BALN/bnUSD pool.
Next Steps
- Be active in managing LTV. If the peg is regularly broken below $1, get a proposal up to lower LTV, the opposite if above $1.
- Clear messaging/content around bnUSD, rebalancing and what it means to be a Borrower on Balanced. The role of Borrowers is to help maintain the stability of bnUSD against the asset they use as collateral. They can then hedge themselves in the corresponding liquidity pool
- Continue honing pool incentives. My current plan is to focus more on incentivizing BALN/sICX and less on sICX/bnUSD and BALN/bnUSD. sICX/bnUSD and BALN/bnUSD over-incentivize minting of bnUSD and dumping it into the pool.
- Add new collateral types and pair them to bnUSD. By doing so, I believe we spread the burden of rebalancing and maintaining the bnUSD peg across more and more pairs/borrowers. This is already in development per our previous roadmap update.