Ever wondered how you can put your Bitcoin to work for you, without relegating to “dirty yield”, such as giving up custody to a third party, or converting to another token with unclear incentives or risk trade-offs? In other words, did you ever look to make your sats make sats?
Enter Zero protocol, which is a smart contract that enables bitcoin hodlers to lock up their bitcoin (in their own custody) to obtain bitcoin-backed stablecoins (denominated in US dollar). In turn, those stablecoins can be used to do anything you want: buy more bitcoin or maintain a stable reserve of USD-denominated value that can be exchanged for goods and services.
The Zero protocol also has a feature known as the “stability pool”. Users can deposit stablecoins in the stability pool to ensure the value of all tokens is backed by sufficient bitcoin value—at least 110% or more in USD-equivalent. This is done by swapping out “bad loans”—loans with insufficient bitcoin backing the outstanding loan value—and burning stablecoins when such loans are liquidated from the system.
Boring, right? Wrong! In return for their service, people that hold their stablecoins in the stability pool obtain bitcoin at an equivalent 8-9% return on their stablecoin value. Thus, Zero creates a self-custodial yield opportunity for bitcoin holders.
This article is the first of two articles intended to illustrate a use case of Zero’s stability pool now that DLLR and the new Zero Dapp are alive and kicking.
In this article, we show how we can use Zero to obtain controlled leverage and yield returns. We revisit our previously published algorithm called SuperHodl and explain how a new algorithm variant called StableHodl uses the Zero stability pool for reserve-based yield generation.
The algorithm we present here is a new collateral management algorithm of loans in the Zero protocol, using the stability pool to deposit a controlled reserve and yield returns from liquidations on the protocol.
If this above sentence is already making your eyes twitch, we understand. Let us try to break this down and make it easier to understand.
Before we dive in. Ever heard of those “dirty degens” looking to lever up to the eyeballs and take out insane loans to bet on bitcoin going up or deposit said leverage into “yield generation”? Well, we are not one of them. (Note: Always take caution when taking out any loan against bitcoin collateral, since the loan may be liquidated if you do not sufficiently monitor its health against market conditions.)
“Yield” is a notably dirty word for maxi bitcoiners (I count myself amongst them). Why? Well, it assumes a zero-sum game. Somebody loses so one can win. It’s a typical fiat mindset. In the true market sense, however, if we trade in one thing for another (for example, bitcoin against USD) it means we both have to win or else we would not make the trade. One side of the trade values having bitcoin more; the other side values having USD more. Those preferences and valuations may be very temporary and specific in nature. Even the most maxi of bitcoiners may at some point need to pay off, for example, some life-threatening, unforeseen medical emergency. Guess what’s better than holding bitcoin? Not dying—exactly.
However, since we believe in NGU, we are interested in leverage as a tool to extend into bitcoin beyond our current funds in a low-risk way. For that purpose, it is necessary to borrow funds. And who is a better lender for you, than you? Enter: Zero protocol on Sovryn.
Sovryn’s Zero protocol, for the uninitiated, is a smart contract launched by Sovryn that anybody can interact with on Rootstock, a bitcoin sidechain. It allows for non-custodial lending against your bitcoin as a collateral. Very much like any collateralized loan, that means if the value of the collateral goes too far down, the collateral gets liquidated.
What makes Zero so special? Well, it’s all in the name! 0% interest---you read that right---a key element to long-term leverage strategies, or else the “bet” must also cover the compounding cost of interest on the loan. How is 0% possible? In short, it is because you don’t technically borrow funds but rather mint them against your own collateralized bitcoin.
You see, Zero protocol is like a central bank controlled by each and every one of us, for all of us bitcoiners. It is a way to regain control over the USD, using bitcoin. To learn more about the fundamentals of Zero and how it works, see “If Bitcoin Is Magic Internet Money, Zero Is Magic Internet Borrowing”.
So, how do we leverage into bitcoin using Zero? One simple yet elegant strategy is a sort of lump-sum leverage, as is explained in “Buy more bitcoin with your bitcoin”. This immediately doubles your bitcoin stack leveraging Zero. Impressed? So are we.
Two downsides to identify here.
A first downside to this approach is having the newly purchased bitcoin sitting as collateral to keep the loan from being liquidated on a whim. Long-term that works, you can reasonably assume the loan will be safe at that point and accumulate DLLR as needed to pay back the loan whenever you see fit. Quite an interesting prospect! That is what leverage is all about: you essentially buy bitcoin at today’s prices and you pay for it later, when the value of that bitcoin is (much?) higher. In other words “the loan pays itself back”. With Zero, you are in full sovereign control of your destiny, and you pick when the time is right and whether you want to focus your economic activities to enable paying back sooner or prefer to hold back and do it later.
A second downside to the lump-sum approach is that you have no more reserves left over to keep the loan safe if the price goes down significantly. In our backtesting, a 200% collateral ratio (=2x the collateral value relative to the loan taken out) still runs the risk of liquidation when such a loan is taken out around historical highs in the BTC/USD price. For a primer on liquidation triggers and limits on Zero, please see the Sovryn Wiki.
In contrast to this approach, we propose here to take a longer view, do away with the lump-sum approach and build out leverage over time, against price appreciation of the collateral, while making sure we can always protect our collateral. Let’s break that down.
Our algorithm aims to provide “yield”, but not in the fiat sense described in the introduction: Nobody loses for the algorithm to win. In short, the algorithm shares our long view that bitcoin will go up in price against the USD over time and will hence mint more USD as price goes up to buy more bitcoin. Zero is the mechanism that enables this.
This is the reverse concept from “a loan that pays itself back”. In this case, the USD value of our collateral grows naturally as price goes up. Instead of repaying the loan, we extend our loan “for free” for the same security (= collateral ratio) offered by the collateral value at that given time.
OK, we’re clear on the leverage-over-time part. What about the collateral protection? This is simply summarized in that the algorithm does not spend all of the USD it mints. A smaller portion is used to leverage-buy bitcoin, and a significant second portion (“the reserve”) is held apart and kept accumulating returns over time, essentially putting our bitcoin to work for us.
In a first implementation of the algorithm, called SuperHodl, we have simply put our reserve funds to work for us in a lending pool and generate “yield” on the reserve in a quite fiat way but still in a rather low-risk fashion. Over backtesting, it has been shown that even if the interest rate on the lending pool tends to 0%, the algorithm is still profitable, since its main bitcoin stacking mechanism is not dependent on these returns. Of course, the interest returns do lead to a “cushioned” reserve fund that can hold more steadily.
There are several more details to the SuperHodl algorithm. If you are interested in learning more, see the article “Putting the Super in HODL, with Zero: #SuperHodl”.
In this article, we introduce a new algorithm that we call StableHodl. It differs from SuperHodl mainly in the way the reserve funds are kept: not in the lending pool but instead in Zero’s own stability pool! In a single sentence, the stability pool holds funds to ensure loans in the system remain unaffected as loans with poor collateral ratio get liquidated. Before you continue reading, please have a look at “Fishing for Gains in the Zero Stability Pool” to understand the purpose of the stability pool and its operating function.
An algorithm is not an algorithm if it it is not clear which steps should be taken at any given “iteration”, i.e., the fixed time amount that passes between two algorithmic operations. For example, in SuperHodl that time is roughly a “day”, and it does not depend on the number of users of an algorithm or the blockchain throughput.
Furthermore, we consider it “algorithmic” in nature if the decisions taken are static in nature against the input conditions and mathematically static. That does not mean certain dependencies may not change over time, since some input conditions may change over time or even be time-dependent (consider for example the derivative of a parameter): an algorithm with a feedback loop is still an algorithm.
For StableHodl, one of several cases is triggered and executed on an algorithmic basis:
Let’s go through each of these cases and explain with a flow diagram what happens to the user funds. First up, Case 1, what happens if liquidations have occurred during an iteration?
Step 1.A: At liquidation, USD tokens were taken from the user’s stability pool deposit and burned. This is noted at the start of the iteration.
Step 1.B: RBTC funds gained through liquidations are moved to both RBTC collateral and the user’s wallet in a known fixed %.
Step 1.C: Based on the increased collateral amount, and to maintain the CR, new DLLR tokens are minted.
Step 1.D: The reserve ratio (RR) (= loan/reserve ratio) is maintained by adding the new DLLR tokens to the stability pool.
Next up: what happens if the price moves up during an iteration, causing the CR to go beyond a certain Target %?
Step 2.A: Triggered by reaching a collateral ratio above a target %, the Zero loan is adjusted to mint new DLLR tokens until the new CR reaches the target.
Step 2.B: A (large) percentage of the newly minted DLLR is added to the reserves in the stability pool.
Step 2.C: A (small) percentage of the newly minted DLLR is exchanged for an equal amount of DLLR and used in the RBTC/DLLR AMM to buy RBTC.
Step 2.D: The new RBTC is added in a split between the RBTC collateral in Zero and the user wallet.
Third, let’s have a look at the steps taken when the price causes the CR to move below a certain Target % during an iteration.
Step 4.A: Use the reserve funds to pay back the loan to reset the loan conditions to reach the target CR. As a result, the reserve ratio (RR) will be degraded.
Step 4.A’: If the drop across the iteration time was too severe, or the stability pool reserves are empty, a “Safety Mode” trigger occurs and RBTC is used to top-up the Zero loan collateral directly.
Finally, it can be that nothing changed and the CR remains within its boundaries during an iteration. Then, nothing will be done that iteration and the funds remain static, including in the stability pool (i.e. there are no continuous returns).
So why does StableHodl opt for the design choice to deposit the minted USD into Zero’s stability pool? Glad you asked. The stability pool is a metaphorical marriage made in heaven for this algorithmic approach, for a few reasons.
Importantly, the stability pool provides a source of yield, just like the lending pool. As the article linked above shows, likely it can provide much more yield than the lending pool, because of its nature: every time a loan is liquidated, the stability pool depositor gets paid a premium for the opportunity cost of leaving funds “parked” in the pool.
Nobody wishes upon anyone to lose their bitcoin collateral in a Zero loan. However, when it does happen, the service providers in the stability pool ensure the capital is balanced against burned USD tokens, so that the outstanding minted dollars are still backed as per protocol requirements.
This service is worth around 8-9% of return to the protocol, i.e. the stability pool gets paid, in bitcoin, at an average 108-109% of the liquidated collateral USD value. In simple terms, if $100 of your USD tokens get burned, you receive (typically) $108-109 of bitcoin in return. That’s for each liquidation, and they add up if the USD gets replenished: the effective returns to the deposited dollars in “APY” terms can become multiples of 10%, especially when the stability pool has a small % of the outstanding supply in its deposits.
It’s a risky endeavor: if everybody keeps a tightly managed loan and takes very little risk, no liquidations will ever occur. In contrast, the traditional lending pool takes on a different type of risk. As a lending marketplace, the risk profile for the lender is relatively low, and hence typical returns for a healthy automated lending pool do not exceed 5-6%. What is more, lending pools are not a savings account (which is what we are looking for, essentially). If many people use the lending pool through an algorithm like the one presented, the demand side needs to keep up for returns to not drop to as low as below 1%. On the other side, the stability pool is rather empty now and returns are expected to be very high especially in the first few years. Even then, a stability pool such as the one for the Liquity protocol at over 60% of all circulating USD supply is still providing ample returns due to the fundamental nature of the math involved.
By its nature, it is uncertain when liquidations will occur, just as it is very hard to predict when price drops will occur, which causes the CR degradation in the first place. However, it is not just when price drops that liquidations can occur: People may “FOMO” in with a very low CR even during a bull run to find a local daily drop was enough to liquidate them. There are recent examples on Zero of liquidations occurring without notable price drops (a few % maybe). A calculated risk or over-the-top-all-in?
This is the beauty of the stability pool. Ultimately we depend on people’s behavior when using the protocol:
Any number of reasons could be valid. It’s human behavior that ultimately causes a loan to get to the bottom of the bunch and get liquidated. See Catching a Falling Knife: Zero Collateral Ratio and Stability Pool Decisions”
A second excellent reason to pick the stability pool is the liquidation mechanism dependency on price drops. While SuperHodl and StableHodl both buy bitcoin as price goes up, essentially doubling down on our leverage, the stability pool allows the algorithm to gain bitcoin exactly when the price hits rock bottom and most liquidation volume occurs. It’s a “buy the dip” strategic addition to the algorithm while not in essence losing any protection on the downside, since our algorithm will replenish the USD through a fresh Zero extension as you’ll see on the flow diagrams later. Because of this, it is very attractive to allocate more capital to stacking reserves for liquidation yield, compared to taking out dollars to buy bitcoin when price goes up. You’ll understand when you see simulated returns in Part Two.
Finally, several more technical but not irrelevant details make this tick. First, the stability pool interactions are entirely integrated into the same smart contract, which will reduce gas fees over many algorithm iterations. It allows selective control over liquidation yield to top-up the loan or be withdrawn to the user wallet. We can take funds in and out of the pool at will to buy bitcoin at market. There is no need to move into another stablecoin, further reducing gas fees, although with DLLR this will no longer be a concern.
So how do the two algorithms compare on a high level?
Hang in there to get insight into StableHodl performance in backtesting and simulation, and to understand what assumptions were made during those simulations. The second part in this two-part series will conclude our treatment of this new approach to the use of the Zero stability pool.