Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bonds and LBP #176

Merged
merged 2 commits into from
Oct 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions docs/bonds.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
id: bonds
title: Bonds
---

import useBaseUrl from '@docusaurus/useBaseUrl';

The HydraDX Protocol uses **Bonds** as part of its strategy to **grow and diversify its Protocol-owned liquidity (POL)**. For this purpose, the HydraDX Governance can at any time decide to **issue a given amount of bonds** which will be traded against assets that the HydraDX Treasury wishes to accumulate.

All HDX bonds have a **maturity date**, which marks the moment when the bond can be **swapped against the underlying asset (HDX)**. The HydraDX Protocol can decide the manner in which bonds are sold: For example, it can host a **dynamically priced LBP event**, or simply place an **OTC order against a fixed price**. Once acquired, bonds are **transferrable and tradeable on the secondary market** (e.g. OTC), also before they have reached maturity.

On this page you will find more info on the origins of bonds, as well as the process of a bonds campaign.

## History of Bonds

The concept of bonds was first pioneered by OlympusDAO in 2021 as a tool which would help grow its POL. In the case of OlympusDAO, the Protocol was heavily relying on unsustainable yields as an incentivisation strategy for attracting liquidity - a strategy which ultimately resulted in an inefficient use of funds outside of bull markets.

## The Process of a Bonds Campaign

The first step of a Bonds campaign is the issuance of the bonds by the Protocol. Any member of the HydraDX Community can initiate a governance discussion and a referendum to issue a given amount of bonds with a predefined maturity date, in order to obtain a given asset as POL.

Once bonds are issued, the HydraDX Governance must decide on the method of trade. One option is to host a dedicated LBP event, which limited in time and allows for dynamic pricing thanks to the interplay between time-based weights shifting and demand (more info in our [LBP docs](/lbp)). Another option is for the Protocol to place an OTC order against a predefined price per bond.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which limited in time and allows for

which is limited in time and allows for


<div style={{textAlign: 'center'}}>
<img alt="metadata" src={useBaseUrl('/bonds/bonds-screen.jpg')} width="800px" />
</div>

## After a Bonds Campaign

All bonds have a maturity date. Once matured, the bonds can be swapped against the underlying asset (HDX) in a 1:1 ratio. In the meantime, the bonds are transferrable which means that they can be traded between users (e.g. by placing an OTC order).
93 changes: 93 additions & 0 deletions docs/lbp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
id: lbp
title: Liquidity bootstrapping (LBP)
---

import useBaseUrl from '@docusaurus/useBaseUrl';

**LBP** (Liquidity Bootstrapping Pool) is a **permissionless Automated Market Maker (AMM)** built for the Polkadot ecosystem. Its aim is to **empower young crypto projects** by allowing them to **bootstrap liquidity** and **navigate initial price discovery** while performing a **fair distribution of tokens to their communities**. Another possible use of LBP is to conduct bond campaigns which allow the Protocol to acquire Protocol-owned liquidity (POL).

An LBP uses a **mechanism of time-based weights shifting** which exerts a **continuous downward pressure** on the price. This is being **counteracted by any buy orders** that change the amount of tokens in the pool and drive the price up.

:::warning
The information in this article is for illustrative purposes only. Every LBP is different and it is impossible to predict in advance how the price will develop.

The starting price of the LBP, its weights settings and the overall general interest in the project raising liquidity are all factors which will affect the price navigation during LBP.

Do your own research before aping!
:::

## Overview of General LBP Trajectory
### **At Start**
An LBP event begins with a predefined starting price. Projects can decide to set an unrealistically high price and let the weights push it down, but this is not necessarily always the case. You should DYOR with regard to the starting price.

If the starting price is (many times higher) than the expected valuation, it may not be wise to buy at the very beginning of the LBP event.

### During the LBP Event
Every LBP event is set to run for a specific amount of time (usually 3-5 days). Through the pre-programmed changing of the token weights in the pool, a downward price pressure will begin to be exerted during the course of the LBP event. This programmed decline will have its highest downward pressure at the beginning periods of the LBP. This is because when the token weight ratio changes from, say, 90-10 to 89-11, that is a 10% increase in supply of the latter asset vs if the weighting changes from 60-40 to 59-41, which is a 2.5% increase in supply.

As such, this programmed downward pressure allows participants to enter once price reaches what they deem a reasonable level. When participants begin to buy from the LBP, this will change the expected price trajectory because this will change the ratio between the two tokens. In addition, the size and timing of the buy order also affects how large the price impact will be. Placing a very large order will drive the price up (a lot), meaning that splitting orders into smaller chuncks may be a good idea.

Eventually, as the downward pressure decreases, the buy pressure from participants will overcome the further downward pressure (supply) programmed and prices will begin to rise. At this time, some participants may also sell back their acquired tokens to the LBP. This would also change the expected price trajectory of the LBP.

## Model Scenario Examples (illustrative)
Let’s take a look at how the LBP price trajectory may change based on user actions. Please note that the examples and prices below are for illustrative purposes only.

### Chart 1: If nobody buys

If nobody buys, the price will continually decline based on a similar curve displayed below:

<div style={{textAlign: 'center'}}>
<img alt="lbp" src={useBaseUrl('/lbp/model_1.jpg')} width="600px" />
</div>

### Chart 2: If someone buys (with small bids)

In case of a small but consistent buy pressure just above the $0.01 mark, the curve would look something like this:

<div style={{textAlign: 'center'}}>
<img alt="lbp" src={useBaseUrl('/lbp/model_2.jpg')} width="600px" />
</div>

### Chart 3: If someone buys (with a large bid)

If someone buys 1/4 of all tokens at the price of $0.005, and nobody else buys or sells, the curve would look like this:

<div style={{textAlign: 'center'}}>
<img alt="lbp" src={useBaseUrl('/lbp/model_3.jpg')} width="600px" />
</div>

### Chart 4: If someone buys (with a large bid at the end)
In cases of large buy orders towards the end of the LBP event, the price may pump significantly. This is because at the end of the LBP, the downward pressure from the weights is very small while the effect of large buy orders is relatively bigger:

<div style={{textAlign: 'center'}}>
<img alt="lbp" src={useBaseUrl('/lbp/model_4.jpg')} width="600px" />
</div>

## Real-world LBP **Examples**
The abstract model scenarios above should shed some light on the interaction between user orders and the shifting weights.

Now let's take a look at several real-world examples of an LBP:

### Exhibit A

Price was initially sniped by bots/whales and pumped significantly over the initial price. This was eventually counteracted by the reweighting over time and demand picking up once a more reasonable price was reached.

<div style={{textAlign: 'center'}}>
<img alt="lbp" src={useBaseUrl('/lbp/exhibit_a.jpg')} width="600px" />
</div>

### Exhibit B

Initial price was not sniped and allowed to fall before the significant demand from buyers pushed up prices materially. Buyers still had a good window of opportunity to enter in on acceptable prices given the duration of the LBP.

<div style={{textAlign: 'center'}}>
<img alt="lbp" src={useBaseUrl('/lbp/exhibit_b.jpg')} width="600px" />
</div>

### Exhibit C: HydraDX LBP
Finally, you can take a look at our [analysis of the HydraDX LBP](https://hydradx.substack.com/p/lbp-analysis) back in February 2021 which helped HydraDX raise 22.9M DAI to become one of the most successful LBPs ever conducted.

<div style={{textAlign: 'center'}}>
<img alt="lbp" src={useBaseUrl('/lbp/exhibit_c.jpg')} width="600px" />
</div>
2 changes: 2 additions & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ module.exports = {
"omnipool_security",
"omnipool_impermanent_loss",
"omnipool_hydrated_farms",
"bonds",
"lbp",
"tokenomics",
"spending_fw",
],
Expand Down
Binary file added static/bonds/bonds-screen.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/exhibit_a.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/exhibit_b.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/exhibit_c.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/lbp.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/model_1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/model_2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/model_3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/lbp/model_4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading