Author Topic: New BSIP:GS protection via core code  (Read 22196 times)

0 Members and 1 Guest are viewing this topic.

Offline sahkan

  • Sr. Member
  • ****
  • Posts: 247
    • View Profile
    • BitShares DEX
I understand you. It's easier to blame others than to find the real reason or solution.
I'm not sure if you do, at least on this issue. I was just stating a fact.

bitSILVER, bitGOLD and bitBTC always had 10% MSSR and never applied BSIP42 but GSed long ago. This fact doesn't support the assumption that a higher MSSR will prevent undercollateralization from happening.
It takes more than MSSR. At least a combo of MSSR and MCR. But The weaker the bitAsset the higher they need to be; as en example bitCNY can have lower settings and still function properly. If you don't have liquid market on butAssets GS will happen no matter the MSSR and MCR if the right conditions are met.

If we can find a proper way to incentivize the involved parties, we'll solve the problem.
No matter the incentive, there will be always someone (maybe someone that no longer pays attention to his debt) that will let it ride. If we don't come up with a way to automatically close the debt the GS will always be there.
Quote
I will give everyone another option to think about on the GS issue:
When collateral reaches 1:1 simply force settle that debt based on percentages. If there are 1000 smart coins issued, 10 is being force settled; each holder would see 1% of their smart coin force settled by the blockchain. This avoids GS alltogether and good debt stays in the system.
This is also an option if our only goal is to avoid undercollateralization (btw technically 1% is not guaranteed that all undercollateralized positions will be settled, also technically we can increase the percentage when it's the case).

IMHO this option does more harm than good, because we have other goals which IMHO are more important, one of them is to give debt asset holders as much freedom as possible to decide by themselves, because we assume they're risk haters. On the other hand, debt position holders are risk lovers, so it's fine to have more aggressive rules on them, e.g. margin calls and force settlements. Please see discussions in https://github.com/bitshares/bsips/issues/179.

Also it would be a crisis for businesses built on top of BitAssets because they have no easy way to convert the collateral back to BitAsset when collateral price bounced back up. Imagine that if someone deposit bitUSD to an exchange but later can only withdraw some BTS and some BitUSD. In short, don't remove coins from users' balance, otherwise users will leave.

Alternatively, perhaps we should give asset holders an option on whether *automatically* settle a part of their holdings when feed price is closed to GS price, which may slightly improve the situation, but is not that hard.

bitAsset is not a currency or not even a coin, it's a contract between 2 parties that agree that particular asset will have a value equivalent to that asset in real life and will be backed by BTS. If anyone (exchanges) are running their business on that asset they should be able to adjust their holding (and users) to bitAsset+BTS. They already do it for some forks, air drops etc. This would not be any different and would always avoid GS. And I think that's the goal to have liquid market where the bitAsset is equal to it's RL counterpart ie: 1 bitUSD = 1 USD
Auto settling bad debt on a bit asset holder would be somewhat like force settlement on the debt holder. A risk on both sides.


Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore

Choosing MCR and MSSR is a surprisingly complex issue. Like abit said, 10% MSSR didn't protect BitUSD from GS last December.
   
The MSSR did not work because BSIP 42 introduced price manipulation and the MSSR was offset by fake price feeds.
I understand you. It's easier to blame others than to find the real reason or solution.

bitSILVER, bitGOLD and bitBTC always had 10% MSSR and never applied BSIP42 but GSed long ago. This fact doesn't support the assumption that a higher MSSR will prevent undercollateralization from happening.

Actually the assets got into undercollateralized situation simply due to
1. lack of incentives for borrowers to keep shorting (lack of desire to put more collateral, because putting more collateral would mean the potential to lose more in a downtrend, thus they chose to "stop loss"), and
2. lack of incentives for debt asset holders to settle when CR is low (because settling when price is dropping simply means loss, we assume most of debt asset holders tend to hold stabler assets, although some of them may don't know about GS or don't care, anyway finally they chose to take no action before GS).

If we can find a proper way to incentivize the involved parties, we'll solve the problem.

Higher MSSR is not an incentive for borrowers who decided to stop loss (aka so-called "bad borrowers" although I don't like to label people), although it may be an incentive for borrowers who have enough funds to add collateral.

GS is actually an incentive for borrowers who decided to stop loss, but not an incentive for borrowers who have enough funds to add collateral.

Quote
I will give everyone another option to think about on the GS issue:
When collateral reaches 1:1 simply force settle that debt based on percentages. If there are 1000 smart coins issued, 10 is being force settled; each holder would see 1% of their smart coin force settled by the blockchain. This avoids GS alltogether and good debt stays in the system.
This is also an option if our only goal is to avoid undercollateralization (btw technically 1% is not guaranteed that all undercollateralized positions will be settled, also technically we can increase the percentage when it's the case).

IMHO this option does more harm than good, because we have other goals which IMHO are more important, one of them is to give debt asset holders as much freedom as possible to decide by themselves, because we assume they're risk haters. On the other hand, debt position holders are risk lovers, so it's fine to have more aggressive rules on them, e.g. margin calls and force settlements. Please see discussions in https://github.com/bitshares/bsips/issues/179.

Also it would be a crisis for businesses built on top of BitAssets because they have no easy way to convert the collateral back to BitAsset when collateral price bounced back up. Imagine that if someone deposit bitUSD to an exchange but later can only withdraw some BTS and some BitUSD. In short, don't remove coins from users' balance, otherwise users will leave.

Alternatively, perhaps we should give asset holders an option on whether *automatically* settle a part of their holdings when feed price is closed to GS price, which may slightly improve the situation, but is not that hard.
« Last Edit: July 20, 2019, 01:45:06 pm by abit »
BitShares committee member: abit
BitShares witness: in.abit

Offline sahkan

  • Sr. Member
  • ****
  • Posts: 247
    • View Profile
    • BitShares DEX

Choosing MCR and MSSR is a surprisingly complex issue. Like abit said, 10% MSSR didn't protect BitUSD from GS last December.
   
The MSSR did not work because BSIP 42 introduced price manipulation and the MSSR was offset by fake price feeds.

I will give everyone another option to think about on the GS issue:
When collateral reaches 1:1 simply force settle that debt based on percentages. If there are 1000 smart coins issued, 10 is being force settled; each holder would see 1% of their smart coin force settled by the blockchain. This avoids GS alltogether and good debt stays in the system.

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
Quote from: bitcrab

so in my above example, obviously the pool has lower CR and will be settled with price 0.05USD.

maybe at the time the feed price is 0.042(not exact), but when user settle, they have to settle the pool with price 0.05, not the margin call order with price 0.04?

you tell the people the price is 0.042, but you only allow them to settle at 0.5...confusion...
feed_price = 0.04
settlement_price = 0.05

两个数,没毛病。

现在UI也是两个数:
feed_price = 0.3
settlement_price = 0.303

如果你硬是要因为 settlement_price = 0.05 而显示 feed_price = 0.05 才让人更困惑,明明外盘成交价在0.04

0.303=0.3*1.01, easy to understand the relation of these 2 figures.

0.05 and 0.04 is an example, even higher gap is possible, maybe the settlement price is 0.08 and feed price is 0.04, because the settle price of the pool may be much higher than market price.

when force settlement price does not refer the feed price, what sense does the feed price make? although it is the market price?

难道不是喂价格A, 然后爆仓价是A/MSSR, 清算价是A*(1+force settlement offset),保持这样一种关系才是正常的吗?
The purpose of implementing GS protection into core is, no matter witnesses feed what price, force settlements and margin calls will execute at the protected price. So it's clearer for traders to know what's the feed price (produced by witnesses) and what's the settlement price (decided by the blockchain). Actually it's a UI issue, so we don't need to argue here. UI can even should a third price: what will be the settlement price and margin call price if GS protection is disabled.

On the other hand, if GS protection is implemented into core, witnesses will no longer need to and should not publish adjusted price feeds which was criticized as price manipulation.

IMHO, whether the blockchain should take over the bad debt is the main thing to debate.
« Last Edit: July 20, 2019, 04:32:19 am by abit »
BitShares committee member: abit
BitShares witness: in.abit

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 1928
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
I've been thinking about this a lot lately, and am writing a paper which I'll potentially submit to the Decentralized 2019 conference on the topic.

Choosing MCR and MSSR is a surprisingly complex issue. Like abit said, 10% MSSR didn't protect BitUSD from GS last December. Maybe this was because MSSR penalties are paid out of collateral, which means that there's less margin before a GS. Or maybe the GS happened because MSSR was too low, so there wasn't enough demand for margin calls. Or, maybe this was just because the BTS market was so bad that BitUSD was going to global settle no matter what.

I'm generally in favor of MSSR, and one of the things this paper is going to say is that 0% MSSR may be one of the worst options of all. However, I think one of the bigger issues is that there really isn't a good incentive for individual traders to protect against a GS event. Because of this, I'm loosely in favor of any proposal that gets rid of GS. I totally agree with bitcrab that GS is like suicide. However, I've yet to see a replacement that I really like. It'll be one of the major focuses of my research project.

yes, when the market is bad enough, bad debt will happen no matter either the MSSR is 1.01 or 1.5.

I tried to change MSSR of bitUSD from 1.02 to 1.01 at this time, because I feel now either 1.01 or 1.02 does not change the market status, however 1.01 will lead to a better pegging than 1.02.
« Last Edit: July 20, 2019, 12:01:55 am by bitcrab »
Email:bitcrab@qq.com

Offline biophil

  • Hero Member
  • *****
  • Posts: 880
  • Professor of Computer Science
    • View Profile
    • My Academic Website
  • BitShares: biophil
The market will run as your thought? en,that's very interesting.

How about we just increase MSSR to to least 5%? Margin calls will be bought before GS happens. If you continue to 100% protect the debt holders GS events will happen all the time.

If you settle the under collateralized positions to smart coin owners that's just stealing from them and goes against DEX rules.

GS happens because of 1 thing:
1. debt positions don't adjust debt

To correct that DEX should:
1. Margin call their position with enough incentive for the position to be liquidated (MSSR), the margin call should be such that debt holder would want to adjust their debt or close it.

Shifting risk to the DEX, smart coin holders or anyone else is just not a good business practice.

But you are most likely a debt holder so you probably want others to pay for the risk you took and lost. When BTS goes up I don't see any debt holders creating GS funds, they just want to use other people's money to cover their risk. And that's the gist of it. The sad part is that by seeing only your way, you fail to notice that BTS continues to slide because of people's mistrust and bad practices.

I've been thinking about this a lot lately, and am writing a paper which I'll potentially submit to the Decentralized 2019 conference on the topic.

Choosing MCR and MSSR is a surprisingly complex issue. Like abit said, 10% MSSR didn't protect BitUSD from GS last December. Maybe this was because MSSR penalties are paid out of collateral, which means that there's less margin before a GS. Or maybe the GS happened because MSSR was too low, so there wasn't enough demand for margin calls. Or, maybe this was just because the BTS market was so bad that BitUSD was going to global settle no matter what.

I'm generally in favor of MSSR, and one of the things this paper is going to say is that 0% MSSR may be one of the worst options of all. However, I think one of the bigger issues is that there really isn't a good incentive for individual traders to protect against a GS event. Because of this, I'm loosely in favor of any proposal that gets rid of GS. I totally agree with bitcrab that GS is like suicide. However, I've yet to see a replacement that I really like. It'll be one of the major focuses of my research project.
Support our research efforts to improve BitAsset price-pegging! Vote for worker 1.14.204 "201907-uccs-research-project."

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 1928
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
Quote from: bitcrab

so in my above example, obviously the pool has lower CR and will be settled with price 0.05USD.

maybe at the time the feed price is 0.042(not exact), but when user settle, they have to settle the pool with price 0.05, not the margin call order with price 0.04?

you tell the people the price is 0.042, but you only allow them to settle at 0.5...confusion...
feed_price = 0.04
settlement_price = 0.05

两个数,没毛病。

现在UI也是两个数:
feed_price = 0.3
settlement_price = 0.303

如果你硬是要因为 settlement_price = 0.05 而显示 feed_price = 0.05 才让人更困惑,明明外盘成交价在0.04

0.303=0.3*1.01, easy to understand the relation of these 2 figures.

0.05 and 0.04 is an example, even higher gap is possible, maybe the settlement price is 0.08 and feed price is 0.04, because the settle price of the pool may be much higher than market price.

when force settlement price does not refer the feed price, what sense does the feed price make? although it is the market price?

难道不是喂价格A, 然后爆仓价是A/MSSR, 清算价是A*(1+force settlement offset),保持这样一种关系才是正常的吗?
Email:bitcrab@qq.com

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
I'm for the 4th option now:
* allow undercollateralization
* no globally settlement
* has individual settlement, the system take over the undercollateralized debt positions (which would form a pool)
* when undercollateralization happens and someone tries to settle, fill the settlement request with the positions with lowest CR (can be the pool) first, so first settler will get less

so the pool as a debt position may have CR<1, when some tries to settle, how can the pool fulfill the request with CR<1? or the pool can only fulfill the request with CR>1?
The pool pays less BTS per bitUSD.

so when someone tries to settle,
the pool has a settle price of 0.05USD,
the margin call order price is 0.04USD,
the normal force settlement price is 0.043USD

which will fill the settle request? the pool?
Compare CR of the pool and the call order, whose CR is lower gets settled.

If CR of the order or pool > 1 / (1+force_settle_offset), fill settle order at normal force settlement price,
if CR of the order or pool < 1 / (1+force_settle_offset), fill settle order at CR.

so in my above example, obviously the pool has lower CR and will be settled with price 0.05USD.

maybe at the time the feed price is 0.042(not exact), but when user settle, they have to settle the pool with price 0.05, not the margin call order with price 0.04?

you tell the people the price is 0.042, but you only allow them to settle at 0.5...confusion...
feed_price = 0.04
settlement_price = 0.05

两个数,没毛病。

现在UI也是两个数:
feed_price = 0.3
settlement_price = 0.303

如果你硬是要因为 settlement_price = 0.05 而显示 feed_price = 0.05 才让人更困惑,明明外盘成交价在0.04
« Last Edit: July 19, 2019, 05:12:10 pm by abit »
BitShares committee member: abit
BitShares witness: in.abit

Offline sschiessl

  • Administrator
  • Hero Member
  • *****
  • Posts: 662
    • View Profile
  • BitShares: sschiessl

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 1928
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
I'm for the 4th option now:
* allow undercollateralization
* no globally settlement
* has individual settlement, the system take over the undercollateralized debt positions (which would form a pool)
* when undercollateralization happens and someone tries to settle, fill the settlement request with the positions with lowest CR (can be the pool) first, so first settler will get less

so the pool as a debt position may have CR<1, when some tries to settle, how can the pool fulfill the request with CR<1? or the pool can only fulfill the request with CR>1?
The pool pays less BTS per bitUSD.

so when someone tries to settle,
the pool has a settle price of 0.05USD,
the margin call order price is 0.04USD,
the normal force settlement price is 0.043USD

which will fill the settle request? the pool?
Compare CR of the pool and the call order, whose CR is lower gets settled.

If CR of the order or pool > 1 / (1+force_settle_offset), fill settle order at normal force settlement price,
if CR of the order or pool < 1 / (1+force_settle_offset), fill settle order at CR.

so in my above example, obviously the pool has lower CR and will be settled with price 0.05USD.

maybe at the time the feed price is 0.042(not exact), but when user settle, they have to settle the pool with price 0.05, not the margin call order with price 0.04?

you tell the people the price is 0.042, but you only allow them to settle at 0.5...confusion...
Email:bitcrab@qq.com

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
I'm for the 4th option now:
* allow undercollateralization
* no globally settlement
* has individual settlement, the system take over the undercollateralized debt positions (which would form a pool)
* when undercollateralization happens and someone tries to settle, fill the settlement request with the positions with lowest CR (can be the pool) first, so first settler will get less

so the pool as a debt position may have CR<1, when some tries to settle, how can the pool fulfill the request with CR<1? or the pool can only fulfill the request with CR>1?
The pool pays less BTS per bitUSD.

so when someone tries to settle,
the pool has a settle price of 0.05USD,
the margin call order price is 0.04USD,
the normal force settlement price is 0.043USD

which will fill the settle request? the pool?
Compare CR of the pool and the call order, whose CR is lower gets settled.

If CR of the order or pool > 1 / (1+force_settle_offset), fill settle order at normal force settlement price,
if CR of the order or pool < 1 / (1+force_settle_offset), fill settle order at CR.
« Last Edit: July 19, 2019, 02:40:28 pm by abit »
BitShares committee member: abit
BitShares witness: in.abit

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore

The word "settle" is used in too many places but means different things.


I was referring to "Force Settlement" and the idea that the first person that settles bad debt gets less BTS.
Current rule aka GS means everyone who settles bad debt gets less BTS.

Yes, and that's bad business. And how about if we introduce a 24hr debt settlement where the debt holder gets a chance to close his debt before GS?
Before discussing your idea, how about you think about the 4 options I described?
It's better if you can explain what are the pros and cons first then ask others.

In your words you mentioned "debt holders", I guess you mean "debt position holders"?
When the debt positions turned into margin calls, the debt position holders are already willing to close their positions. It's that nobody buys into the margin calls caused the final undercollateralization. It's the debt asset holders' fault.

When it's already undercollateralized, what's the use of the 24 hours? Assume some debt asset holders will settle, what's the fair price? where to get the collateral to pay them? You still need to face the fact: whether first settler will get less.
I am not here to argue your points. I simply state my thoughts. If we were to increase MCR and MSSR (tools we already have) we might be able to avoid GS or "GS protection". That's my point. You think otherwise and that's ok, we are all entitled to our opinions.
Increasing MCR may probably reduce chance of undercollateralization, however, it may probably lead to the opposite as well.

With increased MCR, less bitUSD can be produced with same amount of BTS as collateral. Higher MSSR means debt position holders will lose more when being margin called, it means higher risks for debt pisition holders. So it will lead to lower bitUSD supply, poorer liquidity, and likely higher premium.

If we want to grow, we need to bear some risks.

Take bitEUR as an example. Its overall collateral ratio is very "healthy", but it has too little supply.
BitShares committee member: abit
BitShares witness: in.abit

Offline bitcrab

  • Committee member
  • Hero Member
  • *
  • Posts: 1928
    • View Profile
  • BitShares: bitcrab
  • GitHub: bitcrab
I'm for the 4th option now:
* allow undercollateralization
* no globally settlement
* has individual settlement, the system take over the undercollateralized debt positions (which would form a pool)
* when undercollateralization happens and someone tries to settle, fill the settlement request with the positions with lowest CR (can be the pool) first, so first settler will get less

so the pool as a debt position may have CR<1, when some tries to settle, how can the pool fulfill the request with CR<1? or the pool can only fulfill the request with CR>1?
The pool pays less BTS per bitUSD.

so when someone tries to settle,
the pool has a settle price of 0.05USD,
the margin call order price is 0.04USD,
the normal force settlement price is 0.043USD

which will fill the settle request? the pool?
Email:bitcrab@qq.com

Offline abit

  • Committee member
  • Hero Member
  • *
  • Posts: 4664
    • View Profile
    • Abit's Hive Blog
  • BitShares: abit
  • GitHub: abitmore
I'm for the 4th option now:
* allow undercollateralization
* no globally settlement
* has individual settlement, the system take over the undercollateralized debt positions (which would form a pool)
* when undercollateralization happens and someone tries to settle, fill the settlement request with the positions with lowest CR (can be the pool) first, so first settler will get less

so the pool as a debt position may have CR<1, when some tries to settle, how can the pool fulfill the request with CR<1? or the pool can only fulfill the request with CR>1?
The pool pays less BTS per bitUSD.
BitShares committee member: abit
BitShares witness: in.abit

Offline sahkan

  • Sr. Member
  • ****
  • Posts: 247
    • View Profile
    • BitShares DEX

The word "settle" is used in too many places but means different things.


I was referring to "Force Settlement" and the idea that the first person that settles bad debt gets less BTS.
Current rule aka GS means everyone who settles bad debt gets less BTS.

Yes, and that's bad business. And how about if we introduce a 24hr debt settlement where the debt holder gets a chance to close his debt before GS?
Before discussing your idea, how about you think about the 4 options I described?
It's better if you can explain what are the pros and cons first then ask others.

In your words you mentioned "debt holders", I guess you mean "debt position holders"?
When the debt positions turned into margin calls, the debt position holders are already willing to close their positions. It's that nobody buys into the margin calls caused the final undercollateralization. It's the debt asset holders' fault.

When it's already undercollateralized, what's the use of the 24 hours? Assume some debt asset holders will settle, what's the fair price? where to get the collateral to pay them? You still need to face the fact: whether first settler will get less.
I am not here to argue your points. I simply state my thoughts. If we were to increase MCR and MSSR (tools we already have) we might be able to avoid GS or "GS protection". That's my point. You think otherwise and that's ok, we are all entitled to our opinions.