Skip to content
Closed
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
93 changes: 93 additions & 0 deletions bsip-0071.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
BSIP: 0071
Title: Add "Prevent Global Settlement" Flag for Smartcoin
Authors: Jerry Liu <https://github.com/bitcrab>
Status: Draft
Type: Protocol
Created: 2019-09-05
Discussion: https://github.com/bitshares/bsips/issues/179
# Abstract

This BSIP proposes a new solution to handle bad debt: the core idea is, while bad debt appears, the system does not take over the bad debt positions; instead, it accepts the smartcoin devaluation caused by bad debt and it lets borrowing, margin call, and force settlement all operate referring to the BTS/devaluated smartcoin price. This solution avoids any global/partial settlement, and keeps the borrowing, margin calls and force settlement features to continue and allow the market to decide how to finally remove bad debt, either by BTS price restoration or by debt position adjustment/ margin call order filling/force settlement.

# Motivation

BitShares has a mechanism to handle debt positions whose collateral is valued less than the debt itself ("bad debt"). This mechanism is called global settlement ("black swan") and is triggered when the published feed price (FP) is less than or equal to the product of the global settlement price (P<sub>gs</sub>) and the maximum short-squeeze ratio (MSSR).

FP &le; P<sub>gs</sub> &times; MSSR

If this does occur it means that the collateral ratio (CR) of at least one debt position is less than the MSSR.

Global settlement is not a good way to handle bad debt, as can be seen to what happened to bitUSD. After global settlement was triggered for bitUSD in December 2018:

- traders could no longer borrow bitUSD;
- the price of bitUSD dropped below USD because of insufficient collateral; and,
- it will take a long time for bitUSD to be revived.

The community has had extensive discussions about how to handle the bad debt in a better way in the future. However an easy way, BSIP58, has been implemented for smartcoins like bitCNY and bitUSD; it has worked successfully to prevent GS from happening with no other obvious impact. However, BSIP58 has some issues - it is suspected of market manipulation and it risks witnesses independence. Moving forward, this BSIP will be built based on BSIP58 and eliminate all its disadvantages.

# Rationale

We now have several choices on handling bad debt:

1. Global Settlement
2. Global Settlement Protection via Price Feeding
3. Convert Bad Debt Positions to Limit Orders
4. Take Over only Under-Collateralized Debt Positions without GS (aka Partial GS)
5. Prevent Global Settlement

We need to do a deep review on bad debt before evaluating above solutions.

Bad debt means in some debt positions the debt cannot be fully paid by selling the collaterals via margin call/force settlement at the market price. In other words, the relevant smartcoin loses sufficient collateral to back the value and will possibly devalue.

At this moment, the system should accept the fact that the smartcoin will possibly devalue, find ways to minimize the impact to different parties in the market and the time to revive.

In my view, a good way to handle bad debt need to follow below principles:

1. Do not punish good traders who have managed to maintain their collateral ratio well.
2. Do not stop the smartcoin features, including borrowing, margin call and force settlement, and all these operations should refer to the same price.
3. Ensure the debt positions/margin call orders be settled in the order from lower CR to higher CR.

In above mentioned 5 solutions, only "5. Prevent Global Settlement" fulfills all 3 principles.

Partial GS is another attractive solution: it is similar to Global Settlement but differs in that (a) only takes over the bad debt positions and moves them to a settlement pool without touching the debt positions with CR>1, and (b) users can issue force settlement from the pool, from the margin call orders, or from the good debt position depending on which has the lowest CR.

The problem of Partial GS is that borrowing and force settlement may refer to different prices which will lead to obvious confusion and unfairness.

The "Prevent Global Settlement" solution adopts a new idea to handle bad debt: while bad debt appears, the smartcoin will be devaluated at a ratio of the lowest CR from among the bad debt positions, yet all the smartcoin trading features, including borrowing, margin call and force settlement, will all switch to refer to GS price to ensure the continuity and fairness of all the features.

# Specifications

Add one flag "Prevent Global Settlement" to each smartcoin asset.

Introduce a new parameter: settlement price. Its value shall be calculated as:

```
if flag "Prevent Global Settlement" is enabled
setlement price = max(FP_M, P_gs)
else
settlement price = FP_M
```

where FP<sub>M</sub> is the median of the prices published by witnesses; witnesses should always feed the real market price.

All calculations of debt position collateral ratios and trading price determinations in borrowing, margin call and force settlement shall refer to the settlement price instead of directly to the feed price.


# Potential Risks

# References

- [New mechanism to handle bad debt (black swan)](https://bitsharestalk.org/index.php?topic=27273.0)
- [New BSIP:GS protection via core code](https://bitsharestalk.org/index.php?topic=28681.0)

# Discussion

- [New BSIP: Add "Prevent Global Settlement" Flag for Smartcoin (old title: Global Settlement Protection via core code)](#179)

# Summary for Shareholders

It is important to eliminate concerns about global settlement. This is currently achieved with the technical options that are available to the witnesses. A more advanced solution as proposed here is needed.

# Copyright

This document is placed in the public domain.