New BSIP: Debt Asset Feature - MPLP (Margin Position Liquidity Pool)
- Dominant language
- No language data
- Stars
- 59
- Forks
- 86
- PR merge metrics
- No merged PRs in 30d
Description
```
BSIP:
Title: Debt Asset Feature - MPLP (Margin Position Liquidity Pool)
Author: [bench]
Status: Draft
Type: Protocol
Created: 2019-08-27
Discussion: https://github.com/bitshares/bsips/issues/182
```
# Abstract
1. The `MPLP` enables a lower maintenance collateral ratio (`mcr`) with `mcr` < `MCR` and `mcr` > 1 by borrowing `extra debt asset` with `interest`.
1. The `liquidity pool` enables the `debt asset` holder to earn `interest` through lending.
1. The internal maintenance collateral ratio (`mcr`) is changed, but not the internal collateral ratio (`cr`).
1. When `extra debt asset` is removed `mcr` = `MCR` again.
# Motivation
- No motivation to create bitAssets #189
- Liquidity is eaten away by BTS shorter and not used to increase the `CR` of debt holder #181
- Increasing [CR](https://how.bitshares.works/en/master/bts_holders/dex_margin_mechanics.html#how-is-the-collateral-ratio-cr-calculated) only possible, when `collateral` is increased or `debt` is reduced
- Low balance of the shorting asset by the shorter
- Small price decrease triggers margin call wall and suppresses price further
- Increasing `MSSR` does also increase premium, selling pressure and penalty
# Rationale
- Minimize margin calls
- Increase circulating supply of `debt asset`, without increasing system risk
# Definitions
- `CR` = (`debt` - `extra debt asset`)/`collateral`(external collateral ratio)
- `MCR` = maintenance `CR` or margin call `CR`
- `ICR` = initial `CR` (amount to borrow from `liquidity pool` and blockchain)
- `cr` = `debt`/`collateral` (internal collateral ratio)
- `mcr` = internal maintenance `cr` = target `cr` (user based)
- `min mcr`(`MCR`, `ICR`, `lp1`, `lp3`)
- `extra debt asset` = (`ICR` - `cr`) * `collateral`
- `interest` = `extra debt asset` * `a` * (1/`cr`)^`b` * `interest rate`
- `interest balance` -= `interest`
- `insurance pool` += `interest` * `interest fee`
- `interest lender` = `interest` * (1 - `interest fee`)
- `interest balance lender` += `interest lender`
# Boundaries
## Margin Position Holder
- `cr` > 1
- `mcr` > 1
- `interest balance` > `interest`
- 1 > `interest fee` > 0
## Liquidity Pool
- `cr` ≤ 1 (t=0)
- `cr` ≤ `mcr` (t>0)
# Solution
- The `MPLP` or `liquidity pool` reduces margin calls by lowering the `mcr` without adding extra BTS or decrease the `debt` of the position
- The user has the option to increase the `CR` by locking the `extra debt asset` next to `debt`, without paying the current `debt` back
## Pools
- For every `debt asset`, there is a separated `liquidity pool`
- Every `liquidity pool` has a ` reward pool`, which collects the `interest lender`
- Every `liquidity pool` has a `insurance pool`, which is financed by the `interest fee`
## Timing
- Every `liquidity pool` has a certain `time threshold`, which defines the max. linear removing rate by the lender
- The borrower can remove `extra debt asset` instantly by setting `mcr` = `MCR`
- The `time thresholds` defines, how long a borrower has to pay the `interest` in front
## Interest
- `Interest rate` is defined by [supply/demand](https://medium.com/hydro-protocol/how-lending-pool-interest-rates-actually-work-375794e71716) of (`lp1`+`lp2`+`lp3`)/(`lp1`+`lp2`)
- `Interest` is paid in the `debt asset`. Lender can decide, if he wants to get paid in `debt asset` or `settled debt asset` (BTS)
- `Interest` is paid from a new `interest balance`, which must be held in the corresponding `debt asset`
- When integrated (Δt) `Interest` is as big, as the last paid `interest`, new `interest` must be paid to cover the `interest` for `time threshold` and current `cr`
## Liquidity Pool Portion
### Sub pools
- `lp1` is for users with `mcr` < `MCR`
- `lp2`is for users with `CR` < `ICR`
- `lp3` is available `debt asset`
### Distribution
- The `lp2` must be first fully filled, before `mcr` < `MCR`
- The `lp1` can only increase, when `lp3`> 0
- The `lp1` is distributed, to enable everyone the same `min mcr`
- Lender removes `debt asset` from `liquidity pool`:
If `lp3`> `debt asset`
than Δ`lp3` = `debt asset`
If `lp3`= 0
than Δ`lp1` = `debt asset`/`time threshold` (linear removed)
## Margin Call Gap
- `ICR` > `MCR`
- The `ICR` must be different from `MCR` to increase demand in `liquidity pool` before margin call gets active
- Every `liquidity pool` user increases demand from the `liquidity pool` until `CR` ≥ `ICR`
- Margin calls happen for `liquidity pool` and non-`liquidity pool` users, when `CR` < `MCR`
## Margin Calls
- prioritized by `cr`
- reduce `collateral`, `debt`, `debt asset` and demand for `extra debt asset`
### Partial 1
- if `cr` > 1 and `cr` < `mcr`
- than sell `collateral` to reach `cr` ≥ `mcr`
### Partial 2
- if `interest balance` < `interest`
- than `mcr` = `MCR` and sell `collateral` to reach `CR` ≥ `MCR`
### Full
- if `cr` ≤ 1
- than sell all `collateral`
The full margin call does change the ownership of the `collateral`, `extra debt asset` and `interest` to the `liquidity pool`.
The remaining `debt`/`debt asset` is covered by the `insurance pool`.
#### Recovery
- `cr` = `mcr`
The `MPLP` allows during a full margin call, to get the margin position with extra funds back. The `cr` needs to be increased with extra `collateral` or `debt asset` to `mcr`. This is only possible until all `collateral` is sold.
# System Risk
## Parameters
- `ICR`
- `MCR`
- `a` & `b`
- `interest fee`
## Insurance pool
`insurance pool` += (`ICR` - `cr`) * `collateral` * `a` * (1/`cr`)^`b` * `interest fee` * `interest rate`
The `insurance pool` covers the system risk, when:
- `mcr` < `MCR`
- `cr` < `MCR`
- `cr` ≤ 1
# Example
- Total supply: 3 million bitUSD (100%)
- Total supply in the liquidity pool: 0.6 million bitUSD (20%)
- `Interest rate` for 14 days (= `time threshold`): 2%
- `a` = 10, `b` = 7
- `interest balance` = 4 bitUSD
- `ICR` = 1.55 | `MCR` = 1.5
## Stage 1
- BTS price: 0.05 bitUSD
- 10k BTS as collateral
- 323 bitUSD debt
- `CR` = 1.55
## Stage 2
- BTS price drop to 0.04 bitUSD
- `CR` = `cr` = 1.24
## Stage 3
- 65 bitUSD are needed to reach `ICR` again
- `Interest`: 65 bitUSD * 10 * (1/1.24)⁷ * 2% = 2.88 bitUSD
- `interest balance` = 1.12 bitUSD
## Stage 4
- The 65 bitUSD gets locked to the margin position, without paying back the 323 bitUSD debt
- 10k BTS as collateral
- 323 bitUSD debt
- 65 bitUSD `extra asset balance`
- 258 bitUSD overall debt
- `CR` = 1.55
## Stage 5
After 14 days the 65 bitUSD balance gets removed from `extra asset balance`, if the user doesn't add extra funds to `interest balance`. Chances to get are margin call are now high because `CR` gets now reduced to `cr`.
## Conclusion
- Without borrowing from the `liquidity pool`, the user needs to sell 1178 BTS to cover the `MCR`
- With the `liquidity pool` only 2.88 bitUSD are needed, to cover the interest for `CR` increase to `ICR`
# Comparison
Case | `MPLP` | `MPL` | [BSIP-70](https://github.com/bitshares/bsips/issues/170)
------------ | ------------- | ------------- | -------------
Motivation | interest rate | market fee | interest rate
Borrower | peer | blockchain | peer
Input | debt asset | BTS/every asset | every asset
Purpose | increase `CR` & `debt` | increase liquidity | lending/trading
Collateral | no | no | yes
Order book | no | no | yes
- In a bear market the `interest lender` for the `liquidity pool` should be higher than BSIP-70
- In a bull market the `interest lender` for the `liquidity pool` should be lower than BSIP-70
# Discussion and Summary for Shareholders
The `MPLP` provides a free market solution to evaluate the best `CR` in terms of risk/reward or cost/reward based on the market liquidity. The `MPLP` enables a voluntary extra risk level for margin position holders, which is fully compatible to our current market mechanics. The amount of debt, which can be borrowed from blockchain and the system risk is here not increased.
## Negative Feedback Loops
### Proof of stake
The possibility to stake `debt asset` and profit from the `interest`, will increase supply of `debt asset` and demand for BTS. A lot of successful coins have staking options, which is still missing in the BitShares ecosystem.
### CR and Debt increase
Because the user gets a third option to increase `CR` from the `liquidity pool` with `extra asset balance`, no `debt` needs to be paid back.
### Interest Rate
The liquidity pool tries to find a fair market price for the inequity of `debt asset` distribution.
A higher `interest rate` means more inequity, which results in a higher `debt asset` supply for the `liquidity pool`.
### Market Liquidity
Markets with lower liquidity have a higher value for `min mcr`, `a`, `b` and `interest fee`.
### Worker Cost Reduction
Worker payments are hold in bitFIAT. The option to earn `interest` on bitFIAT, does reduce the worker costs and demand for BTS from the reserve pool.
# See also
- #213 - BSIP78: Asset Feature - MLP (Market Liquidity Pool)
- [Dynamic price feeds based on EMAs and smartcoin metrics](https://github.com/bitshares/baips/issues/7)
- #161 - BSIP77: Require Higher CR When Creating/Adjusting Debt Positions
- #164 - BSIP74: Margin Call Fee Ratio
- [Smart Bond lending system](https://docs.google.com/document/d/1kVxJF4_gojEOLaVNJcftviivgzDDLh5H3mKerTzylpw)
# Changes
- `Proof of stake` topic added
- Changed topic from `settlement fund` to `margin position liquidity pool`
- Removed `settlement`
- Added `interest rate`
- Removed `margin call fees`
- `CR and debt increase` topic added
- `Worker cost reduction` topic added
- `Example` topic added
- `Comparison` topic added
- `Margin call gap` topic added
- `Goals` topic added
- `Definition` topic added
- `Boundaries` topic added
- `Interest balance` added
- internal `CR` = `cr` added
- `Margin call` topic added
- `interest` parameters `a` & `b` added
- `System risk` topic added
- `Abstract` topic added
- `Market liquidity` topic added
- Introduced `ICR`/`MCR` instead of `MCR`/`CCR` (Call CR)
- `Recovery` topic for full margin call added
# Copyright
This document is placed in the public domain.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.