-
Notifications
You must be signed in to change notification settings - Fork 86
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
BSIP71: Add "Prevent Global Settlement" Flag for Smartcoin #193
Conversation
For implementation, I think we can reuse the "disable_global_settlement" option. That option is now used to prevent the asset owner from manually doing a global settlement. I see no reason to allow a manual GS if don't allow GS caused by price feeds. |
PMs need manual GS |
PM should not GS due to price feeds. Related discussions in #42 and bitshares/bitshares-core#460. |
A manual GS and the functionality described here are two different things. I think we should not mix them into one flag. |
I feel this BSIP should limit its scope to Smartcoin markets. I welcome designing a more robust PM model in #42 |
I'm OK with the specification, but after re-reading the whole document I noticed that the "Rationale" no longer matches the specification in two respects:
Perhaps add "Discussion" entries: Discussionsettlement_price / feed_priceSome may perceive it as confusing or unfair that borrowing and force settlement may refer to different prices. However, in a period where the least collateralized short position has insufficient collateral in terms of Least collateralized shortOnce a short position's CR drops below MSSR, it will be sitting on the market with a price that is worse than the price of other margin calls. It is thus less likely to be bought up and filled. This means that the
|
I went though all the discussion however am not sure I captured all the ideas from @pmconrad . It's acceptable to use I agree with @abitmore on below topic, I feel this method ensure both "having the least collateralized call_order filled" and "filling as much margin-called debt as possible ".
I still feel the "having the least collateralized call_order filled" principle is more important, leaving the least collateralized call_order there without being filled is just like leaving the biggest risk there without trying to remove it. |
I cannot agree that "filling as much margin-called debt as possible" is more important than "having the least collateralized call_order filled". consider one edge case: there are only 2 debt positions in USD markets, both become bad in one price downtrend, A has a settlement price 0.03USD, B has a settlement price 0.02USD, and the market price is 0.015USD. if we make B be filled/settled first, bitUSD will be more devalued in the process, as the value behind 1bitUSD become lower after B is solved. so "higher CR first" will lead to "let's buy the best with our USD, who care the left USD", it will maximize the devalue of bitUSD and delay the process to revive. "lower CR first" will lead to "let's solve the difficult problem first, then the left will be easy", it will minimize the devalue of bitUSD and speed up the process to revive. even more, as "higher CR first" allow the different bad call_order to sell in different price, it may be more friendly to shorting attack, as shorter can press price to create more bad debt call_order with lower sell price and make profit by filling. the least collatearlized call_order is the biggest threaten to the smartcoin system, it make little sense to process higher collateralized call_order and ignore the least collateralized call_order. |
The "lower CR first" rule is important as long as both debt positions are able to pay the market price. In your example though, neither A nor B have sufficient collateral to pay the market price, therefore neither position will be improved. |
@pmconrad in your example A was a bad debt but B was not. If we fill B but not A, the asset will be stuck in GS protection status unless price raises, if it's in a down trend, new bad debt may appear and unable to be bought which will make the situation worse. It's discussed in early stage of #179. One important purpose of this BSIP is to get the asset out of GS protection status as fast as possible, nevertheless, at the cost of collateral buyers. So in that case I would recommend that we fill A first even A can't fully pay her debt. Then, when the price falls and both A and B become bad debt, we still fill A first, because once the price raises, it's more possible that the asset will get out of GS protection status. |
But that makes things even worse. If A's |
Why did you get this idea? The idea was always to sell at no lower than |
Apparently we're talking past each other. In my example the market price was between A and B. A has worse collateral/debt ratio, B has better collateral/debt ratio. You said "we still fill A first" while I say that we can't fill A but we can fill B, and it's better to fill B now instead of waiting for A to be filled first. With "market price" I mean the best offer on the market, not feed price nor settlement price. |
So the idea is to always "hide" B behind A, because A's CR is lower. |
as @abitmore commented, One important purpose of this BSIP is to get the asset out of GS protection status as fast as possible, nevertheless, at the cost of collateral buyers. comparatively, "filling as much margin-called debt as possible" is not what we should try to seek. if we allow buyers to buy from B when A is still there, it will give buyers expectation that there will always be cheaper collaterals, the result may be finally the bad debts with higher CR were bought first and what left at the end is the bad debts with lower CR, this conflict with the purpose "get the asset out of GS protection ASAP". bad debts can be solved by 1. buying call_order 2. CR adjust 3. price recovery. buying call_order is the most valuable way and we need to lead them to focus on the least collateralized debt first. this is not price manipulation, this is just special way at special scenarios. frankly speaking, if the "having the least collateralized call_order filled first" principle can not be guaranteed, I prefer to not implement this BSIP and just keep the current status - let the witnesses ensure the feed price higher than GS price, although this depend on witnesses' work but it guarantee this "lower CR first" principle. |
What I fear is that once the market price has moved past the least collateralized short no margin calls are bought up anymore. I think that would be dramatically worse than the current situation, because that way we pile up more and more bad debt as the price goes down instead of resolving at least some of it through the margin calls. It would also be extremely bad for those debt positions that would normally improve their CR via margin calls. I imagine it would also lead to the much-cited "confusion and anger" from the owners of those debt positions. :-) Again, I agree that the "least collateralized first" rule is important. But here we're discussing the situation where the least collateralized position cannot pay the market price. I think it does not make sense to keep up the rule even in such an extreme situation. |
when bad debts pile up, BTS market is always very weak and the price is at the lowest level, at this time it is not good to try to sell cheap collaterals, "least collateralized first" rule is telling all, you can buy the cheap collaterals, but please buy the expensive one first. this is to force the smartcoin holders to guarantee the value of the smartcoin. we have observed that bitCNY and bitUSD both have experienced GS protection, actually the status do not keep long and the price recover soon, Why? because GS protection stop the feed price to go down and let every shorter know he cannot buy cheaper BTS. if we tell the shorters that they can buy cheaper BTS without solving the least collateralized first, they will just wait the cheaper collateral to come. the BTS price trend depend highly on the smartcoin rule. as rule designer we should try to avoid providing convenience to shorting attack. |
Hm, we're looking at this from very different perspectives. If I understand you correctly you mean that trading on the market essentially happens because traders want to buy up the margin calls, and that therefore the market price adjusts toward the margin call execution price. OTOH I assume that the market price centers more or less around the feed price and is otherwise independent from the margin call execution price. (Admittedly this is only true in one direction. As long as there are margin calls open they will keep the market price at or above MSSR.) In the presence of bad debt, traders who want to buy up the collateral from the bad debt would have to pay more than the fair price. Why would they want to do that? They didn't want it even when the price was better.
I don't think so. The BTS price is driven by many more factors than the margin calls on the DEX. This may be a little different on the bitCNY market, for reasons we have often discussed. But we're talking about a general mechnism here, not just about bitCNY. |
Yes you're looking from different perspectives. Game theory plays a role in the scenario. When bad debt is piling up,
I'd expect that the debt asset would devalue in this scenario, thus the market price of |
I think this is not quite applicable. The situation is a bit different there. Anyway, I'm unsure what's best. I see valid arguments for either side. I cannot predict how the market will behave (nor do I think that anyone else can :-) ). Any other opinions? @MichelSantos perhaps? |
one key point is, when bad debt appear, smartcoin begin to devalue. at this time, what's the value of bitUSD? it can be calculated by the value of the backed assets: sum(debt)/sum(collateral) = 50KbitUSD/2MBTS = 0.025bitUSD/BTS. as market price is 0.015USD, so ATM 1bitUSD = 0.6USD(fiat) if you allow buyer to settle B first ATM, means you allow buyer to buy collateral in B with price 0.02bitUSD, or 0.012USD. cheaper than market price 0.015USD, which is not acceptable. |
There is no single "true" answer.
The combination of all these creates the market price. I cannot tell where that will be. |
only the first 2 logic make sense, the other 3 do not. |
I'm arguing that if the market price moves away from the margin call execution price no margin calls will be filled anymore, even those that could afford the market price. That's why we are discussing the market price. |
market price depend on market, however, system logic should not be "if any bad debt position can be settled by market price, let the settlement happen", NO! actually currently the GS protection is running well, although there is uncertainty inside as it depend on witnesses' work, the intention of this BSIP is to remove the uncertainty by replacing the withesses' work with core code, without big logic change. if we cannot reach consensus soon, I suggest to stop the work on this BSIP and pay more time and effort on other important BSIPs like BSIP74 and BSIP62, I believe the "filling as much margin-called debt as possible" principle will introduce new risk which may be even worse than current uncertainty. |
Ok, like I said I'm not sure what's best. Changed the wording accordingly and added to "Discussion". Wrt the other point (borrowing price vs. settlement price) I have modified the rationale and also added a "Discussion" section. Please review. |
it's OK, in my view we can go ahead with this version. |
Thanks. @abitmore ? |
Looks good to me. |
Latest draft from #179