bitshares / bsips

BitShares Improvement Proposals and Protocols. These technical documents describe the process of updating and improving the BitShares blockchain and technical ecosystem.
https://bitshares.github.io
63 stars 86 forks source link

BSIP77: Require Higher CR When Creating/Adjusting Debt Positions #161

Closed abitmore closed 4 years ago

abitmore commented 5 years ago
BSIP: 0077
Title: Require Higher CR When Creating/Adjusting Debt Positions
Authors: Abit More
         @shulthz
Status: Draft
Type: Protocol
Created: 2019-09-30

Abstract

This BSIP proposes a protocol change which aims to improve overall collaretal ratio (CR) of smartcoins.

Motivation

Risk-loving traders tend to borrow as much debt as possible with as little collateral as possible, which impacts overall CR of that smartcoin. Smartcoin owners would like to have a tool to counter this behavior.

Rationale

Requiring a higher CR for new debt positions would introduce a buffer thus would increase the stability of the smartcoin.

Specification

Add one parameter "Initial Collateral Ratio" (ICR) to each smartcoin asset, which can be updated by the asset owner.

When adjusting a position, apply BSIP30 if current CR is lower than ICR but not MCR.

Before the protocol upgrade:

when creating a new debt position
  require CR > MCR

when adjusting a debt position
  if new CR <= MCR
    require CR increased and debt not increased

when current CR <= MCR
  trigger margin call

After the protocol upgrade:

Require ICR >= MCR

when creating a new debt position
  require CR > ICR

when adjusting a debt position
  if new CR <= ICR
    require CR increased and debt not increased

when current CR <= MCR
  trigger margin call

Note: logic around target collateral ratio (TCR) is not affected.

Discussion

This BSIP introduces a new tool for smartcoin asset owners to fine tune their assets. Having an ICR greater than MCR would probably result in less risk-loving traders borrowing that smartcoin, thus may lead to fewer market activities and worse liquidity. It's up to the asset owners to decide whether to use this tool.

References

Copyright

This document is placed in the public domain.

clockworkgr commented 5 years ago

Would this make TCR be X at minimum too?

abitmore commented 5 years ago

I don't think we need to limit TCR.

pmconrad commented 5 years ago

If I understood @bitcrab correctly, the purpose of lowering MCR is to make it easier to create new tokens and thus to increase the supply. Introducing a new X that limits token creation to a higher-than-MCR collateral ratio will have the opposite effect.

abitmore commented 5 years ago

Introducing a new X will keep the asset farther from GS (or GS protection). It may push premium higher in a down trend.

There is the impossible trinity.

bangzi1001 commented 5 years ago
  1. "when creating a new debt position require CR > MCR" I don't think this is useful because if MCR is 1.75, traders just set it to 1.76 or 1.7500001 if they are able too.

  2. "when adjusting a debt position if new CR <= MCR require CR increased and debt not increased" I agree this is very useful for traders exit from margin call territory but how this work if their accounts don't have extra BTS and BitAsset?

  3. Global settlement protection is just temporary. Please don't forget to replace global settlement with individual settlement. Force sell those positions that reach MCR = 1. Something like this:

2019-04-25_21h05_57

abitmore commented 5 years ago

@shulthz please explain how 2 parameters would work, and what's the pros and cons, and why. Thanks.

shulthz commented 5 years ago

@shulthz please explain how 2 parameters would work, and what's the pros and cons, and why. Thanks.

What i think maybe like this: Maintenance CR=X? Max Call Ratio=MACR=MCR? Custom Call Ratio=CCR Min Call Ratio=MICR


 let X >= MACR
 let MICR<=CCR<=MACR

 when creating a new debt position
   require CR > X

 when adjusting a debt position
   if new CR <= X
   require CR increased and debt not increased

 when current CR <= CCR
   trigger margin call

The PRO:

  1. If the price does not fall sharply, there will not be had a large number of margin call in the market; The present of margin call method will easily cultivate the market buying inertia; The current DEX seemed 100 times futures leverage, and will be margin call with a slight feed price change.
  2. The amount of MPA will be not decreased significantly in the early stages of prices declining;
  3. Because the market decline is iterative: falling, rebounding, falling, and rebounding, this will always make the buffer price space for the margin call;
  4. This will weake the effect of the feed price on the DEX, and the DEX price will be closer to the CEX price in the most of the time;
  5. The debter can chose the risk which they can carry;
  6. From 1.75 to 1.6, the price needs to fall more than 8.5%, from 1.6 to 1.35, and the price needs to fall 15.6%.

The cons:

  1. Have the critical point;
  2. May be encouraged the aggressive mortgage, but it maybe not be more aggressive than now;

e.g. X=1.75 MACR=1.6 MICR=1.35 CCR=1.35~1.6

Price drop: 1.75 to 1.6: 8.57% 1.6 to 1.35: 15.6% 1.35 to 1.1: 18.5%

abitmore commented 5 years ago

@shulthz apparently you introduced much more parameters which made the mechanism much more complicated. Can you explain them one by one, and set guidelines for adjusting them (e.g. under what conditions who should tune which parameter in which direction and how much offset)?

If people who are responsible for using/adjusting a parameter don't understand it, don't know when should do what, don't know the boundaries, we won't achieve desired results. Tools should be easy to use. BSIP42 was an example, due to lack of understanding as well as guidelines and also skills/interest, witnesses who meant to be responsible for fine tuning the parameters failed to do so.

shulthz commented 5 years ago
  1. Max Call Ratio and Min Call Ratio will be set by the community/asset issuer.
  2. CCR will be set by the debter; The default CCR will be Max Call Ratio, if the debter didn't set it.
  3. Max Call Ratio and Min Call Ratio was the limits of the CCR.
  4. CCR trigger the margin call.

If the X=1.75 The community can set: Max Call Ratio=1.6 Min Call Ratio= 1.35 The debter can set the CCR from 1.6 to 1.35 as the risk which they can afford. If the debter didn't set the CCR, the default CCR=1.6.

If the X=1.75 If the community didn't want much buffer, the communtiy can set: Max Call Ratio=1.74 Min Call Ratio= 1.73 The debter will only set the CCR from 1.74 to 1.73. If the debter didn't set the CCR, the default CCR=1.74.

It's vey simple to understand by the people. The people who didn't understand it will follow the default CCR.

The main buffer or parameter was contrlled by the communtiy.

another: if the current CR=1.4, the debter will set his CCR=1.45, should close his positon? or forbid to do like this?

and maybe need #160 to controll the risk of 1.6-1.35.

图片

bitcrab commented 5 years ago

frankly speaking, I don't think "a new debt position could be put into margin call territory very soon" is a problem, we need to accept that there are always margin call orders come out or stayed there.

shulthz commented 5 years ago

we need to accept that there are always margin call orders come out or stayed there.

Frankly speaking, we don't need it, it's a cancer.

froooze commented 5 years ago

To make things more simple, we need only 2 parameter:

People can only borrow more, when CR > MCR, but get only a margin call when CR < CCR.

This prevents bad debt on the one side, but doesn't punish the borrower, when price drops only little or suppress price or removes bitAsset liquidity.

@shulthz: If we let the user set a custom CRC, we get wild wild west.

1. "when creating a new debt position require CR > MCR"
   I don't think this is useful because if MCR is 1.75, traders just set it to 1.76 or 1.7500001 if they are 

The effect is very slim, but for correctness, CR should be higher than MCR, to allow increasing debt.

2. "when adjusting a debt position if new CR <= MCR  require CR increased and debt not increased"
   I agree this is very useful for traders exit from margin call territory but how this work if their accounts don't have extra BTS and BitAsset?

Agree

3. Global settlement protection is just temporary. Please don't forget to replace global settlement with individual settlement. Force sell those positions that reach MCR = 1. Something like this:

Support and where comes the bitAsset to settle?

abitmore commented 5 years ago

To be clear, "what tools to provide" and "how to use the tools" are different topics. The new parameters and new mechanisms are the "tools" we're discussing. Even the committee won't use any of the new tools on the committee-owned MPAs E.G. bitCNY or etc, IMHO the new tools would bring value for private MPA owners, thus would bring value for the whole ecosystem. So while the community/committee is discussing what's the best value after we have the new parameters, we can get the new parameters added to the system first, the bottom line is "by default, current behavior won't change".

In OP I didn't mention TCR , because it doesn't decide when to trigger margin calls. However, it's good to clarify the behavior of TCR when we have the new CR parameter. IMHO, we don't change the behavior: if the TCR set by a user is less than MCR, the "effective TCR" is MCR, where MCR is the threshold to trigger margin calls as defined in OP.

Other related topics:

Lots of topics. We should try to implement them all in one consensus release (IMHO best implement them as configurable parameters when possible so current behavior do not change).

shulthz commented 5 years ago

It's time to choose.

froooze commented 5 years ago

It's time to choose.

Setting MCR = 1.55, but only do margin calls on positions, which have CR < 1.45.

shulthz commented 5 years ago

It's time to choose.

Setting MCR = 1.55, but only do margin calls on positions, which have CR < 1.45.

I think it is not very safe, maybe Maintenance CR=1.6, Margin Call Ratio=1.5

ryanRfox commented 4 years ago

This discussion requires someone to draft a formal BSIP. Do I have any volunteers?

abitmore commented 4 years ago

@ryanRfox please assign a number for this BSIP. I'll draft one.

ryanRfox commented 4 years ago

Assigned BSIP77 @abitmore

abitmore commented 4 years ago

Thank you @ryanRfox. Created PR https://github.com/bitshares/bsips/pull/226.

froooze commented 4 years ago

@abitmore Your BSIP was not clear with X and no definition. You use MCR as call ratio and X as amount to borrow from blockchain? Would it not better to use CCR as call ratio and MCR as amount to borrow from blockchain ?

abitmore commented 4 years ago

@froooze OP updated, also see #226.

shulthz commented 4 years ago

I think we should pull BSIP74 and BSIP 77.

sschiessl-bcp commented 4 years ago

Is that BSIP considered completed @abitmore and all concerns from reviews adressed?

abitmore commented 4 years ago

@sschiessl-bcp there is no comment in the PR (#226). Personally I do think it's completed.

shulthz commented 4 years ago

I think this BSIP can cooperate with #160。

sschiessl-bcp commented 4 years ago
when adjusting a debt position
  if new CR <= ICR
    require CR increased and debt not increased

Can I really not increase the debt if my CR ends up > ICR/MCR?

abitmore commented 4 years ago

If your CR ends up > ICR/MCR, it means your "new CR > ICR", so you're not limited by the requirements under the condition "if new CR <= ICR".

litepresence commented 4 years ago

"The initial margin requirement is the margin required when purchasing securities, which currently must be at least 50%. The maintenance margin is the amount of equity that must be maintained in the margin account going forward. The minimum maintenance margin requirement set by Reg T is 25%." https://www.investopedia.com/terms/i/initialmargin.asp

These are the standards set forth by FINRA and US Federal Reserve for margin trading in FOREX.

In terms spoken of here that would be 1.50 and 1.25 respectively. Certainly a good move to head towards towards that direction. So, I fully support an ICR greater than the MCR.

However "normal" would never work in this environment, nor fix any of the actual issues at hand... because:

MSSR on the other hand is usually a proprietary number which is enacted by the exchange in order to maintain profitability. Unlike the 102 MSSR used by Bitshares - enacted humorously by those in debt, rather than those responsible for the chain - in industry, MSSR would be 200 to 10000; ie when you lack collateral liquidation is immediate to between 50 cents and a penny on the dollar. That's the way margin calls are supposed to work. That is how exchanges stay liquid; through liquidation of mal investment.

The system we have here is broken. MCR and ICR have little to do with it because your MCR is already well above "normal" "nanny state" regulations. The issue at hand - the reason bitassets are broken - is the absurdly low MSSR, coupled with statutorily fraudulent BSIP76 price feeds.

While enacting an ICR is a "nice thing to do" for novice margin holders.... Don't lose sight of what is the correct thing to do for the exchange itself. Double... triple... maybe 5 or 10X the MSSR.

Liquidation is the only thing that can purge rottenness out of the system.

abitmore commented 4 years ago

@litepresence about MSSR, here is my reply. Short version: don't treat bitasset markets as "normal" margin trading markets, look deeper.

Longer version: Not like other margin trading systems where a) there are usually sufficient external supply (aka not yet on the order book) on both side and b) if unable to close an undercollateralized position due to liquidity issue the exchange can take legal actions against the trader thereafter, bitasset (supply) is created by margin trading in BitShares, that being said, the main assets that are being priced in the system are bitassets, but not the collateral (BTS). In a traditional market, E.G. BTC/USD market (trading BTC with USD as collateral), there are theoretically unlimited supply of USD but limited supply of BTC, so when money comes, BTC price raises, when money leaves, BTC price falls. In the bitasset markets (trading bitassets with BTS as collateral), when money comes, bitasset price raises, when money leaves, bitasset price falls, regardless of what price BTS is in other markets (e.g. USD). Now the price feeding + margin call + force settlement mechanism is trying to manipulate the market price of bitassets to archieve "the peg", this is why all the strange things come out: force-settlement - you can forcefully buy unlimited amount at a fixed price, MSSR - you're not liquidated when nobody wants to buy at a high-enough price, global settlement - others' well-collateralized positions will be closed when your position is undercollateralized, etc, and later we came with topics about adjusting MCR/MSSR (which led to BSIP42), global-settlement protection, BSIP76, and etc. However, due to the Impossible Trinity, it's impossible to maintain the pegged price under all circumstances (see link and link). It would break sooner or later. Then all the means about rules/parameters adjustment are only to tune "when/where to break", and which direction and how big the price difference is when it breaks (a positive or negative premium) are acceptable. There is no perfect solution.

litepresence commented 4 years ago

I suppose I see things differently. We should not aim for sovereign monetary policy. Nor should we aim for a constant peg in the moment. What we should aim for is honest price feeds and immediate liquidation of under collateralized positions. We should aim for free markets. This allowance for price discovery will in the long run always push price back to the mean. Perhaps not on every trade... You might get some deep spikes... but the TREND will be towards the mean rather than a trend we see today... pushed by BSIP76 and BSIP41; later BSIP42... which push us toward thinner bid/ask margins; thinner high/low... and of course less liquidation; restrained discovery. But as a consequence we pull further and further from the peg as a result; diverging from the mean... then shocking back towards it upon correction when new policies are implemented.

Regarding the impossible trinity... monetary sovereignty should be seen as the evil not the aim. It should not be the state's role to enact monetary policy with aims to "correct" markets. There is a knowledge problem. It is only through price DISCOVERY in a free market that inefficiencies can be corrected and brought back to long running pegged mean.

If the common free market price for bananas is $0.50/lb. It should not surprise you when one business wishes to close out its over ripe banana stock one day for for a penny a pound... and on the following day another business sells bananas at $5/lb at a hungry music festival full of trust fund kids. In the end though... we trend back to $0.50. When the state comes in... they say, "no price gouging! no flooding the market with cheap product!", the end result will always be rotten fruit, dissatisfied consumers, and failed businesses.

http://rationalargumentator.com/issue43/austrianmarketprocess.html

abitmore commented 4 years ago

@litepresence please be aware that

abitmore commented 4 years ago

Draft merged in #226. Closing.