Skip to content
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

BSIP 87: Force-settlement Fee Ratio #260

Closed
abitmore opened this issue Feb 4, 2020 · 23 comments
Closed

BSIP 87: Force-settlement Fee Ratio #260

abitmore opened this issue Feb 4, 2020 · 23 comments

Comments

@abitmore
Copy link
Member

abitmore commented Feb 4, 2020

Just like BSIP74 (Margin Call Fee Ratio) which enables asset owners to charge a fee on margin calls, asset owners may also like to charge a fee on force settlements.

In recent days there was a volume of around 4.8 million bitCNY or say more than 20 million BTS generated in the BitShares DEX each day due to force settlements. If the network charge 1% on the force settlements, the income for the network would be around 200K BTS each day, which is not trivial.

The force-settlement fee ratio can be a per-asset option configurable by the asset owners.The fee would be paid in collateral asset when a force-settlement executes.

@shulthz
Copy link

shulthz commented Feb 5, 2020

This fee come from who?

If come from the debtor, when a healthy position was force-settlement, why he should pay the fees?

@abitmore
Copy link
Member Author

abitmore commented Feb 6, 2020

Similar to BSIP 74, paying fees in collateral asset is for easier implementation.

The receiver pays the fee. Actually it's the same no matter who pays it.

@shulthz
Copy link

shulthz commented Feb 7, 2020

OK, that seems good.

@shulthz
Copy link

shulthz commented Feb 12, 2020

and i think this should come with (New BSIP: Make the settlement offset vary with CR) #160 .

@sschiessl-bcp
Copy link
Collaborator

Would the fee be defined as 0-100% of the force settlement offset?

@abitmore
Copy link
Member Author

abitmore commented Feb 13, 2020

It is an additional fee to the force-settler, after the offset took place (on top of the offset).

@sschiessl-bcp
Copy link
Collaborator

sschiessl-bcp commented Feb 14, 2020

Existing API's and also UI's would still display the correct force settlement "fee" if the new fee is a part of the offset. That would be great for compatibility reasons and UX (the one that force settles still only cares about the penalty he has to pay, doesn't matter what it is composed of). The fee is a percent so at least looking at absolute values it shouldn't matter if you increase the offset and define part of it as owner fee, or add an additional fee. Do you have other strong consideration why it should be a separate fee?

@abitmore
Copy link
Member Author

There are 5 parties involved when filling a force settle order: the settler, the debtor, the debt asset owner, the collateral asset owner, the referral program. Ideally the API should include the amounts to all the parties, but actually there is some data missing already. With this BSIP we could probably fix the API. How UI would show the data for better UX is up to the UI dev team(s) to decide.

Back to the topic, while the settlers only care about how much they would pay and get, the borrowers only care about how they would pay and get too. The numbers now match. However, after added the new fee, the new numbers won't match. So IMHO not showing the fee would only bring more confusion.

@sschiessl-bcp
Copy link
Collaborator

sschiessl-bcp commented Feb 15, 2020

Of course, it should be displayed properly in the UI. Still, if ALL fees are within the force settlement offset and we ONLY add parameters to define to distribution of the fee, the old UI will still display the correct total fee. If we add additional fees, then the old UI (and people are lazy with updates) will display an incorrect fee to the users initiating the force settlement.

@shulthz
Copy link

shulthz commented Feb 21, 2020

offset
fee
settle: X bitcny
the settler buy X/(1+offset+fee), pay X bitcny;
the debtor sell X/(1+offset), get X bitcny.
the system will get bts =X/(1+offset) - X/(1+offset+fee)?

@bitcrab
Copy link
Contributor

bitcrab commented Feb 23, 2020

BSIP: 
Title: Force Settlement Fee Ratio
Authors:
  Jerry Liu [email protected]
Status: Draft
Type: Protocol
Created: 2020-02-23
Discussion: https://github.com/bitshares/bsips/issues/260
Worker: TBD

Abstract

This BSIP provide a solution to charge fee from force settlement.

Motivation

Force settlement is an important part in smartcoin design, it provides the power to smartcoin owner to ask for collaterals with reference to feed price, and then guarantees the peg of smartcoin.

The community continuously optimize the rules of smartcoin to balance the interests of relevant parties, taking bitCNY as an example, at the beginning the rules focus more on smart coin peg but care less on debt position owners’ interests, change are done to give debt position owners more protection, the force settlement offset has been changed from 0 to 2%, the max settlement volume per maintenance period has been changed from no limit to 0.5% of smartcoin supply.

In the past several weeks, force settlement happened more intensively than before, the background is that the crypto market seemly switched from bear to bull, and BTS price went above 0.22CNY - which is the voted threshold per BSIP76, at some time the frequently happened force settlements made the lowest debt position collateral ratio even higher than 3, this phenomenon triggered warm discussion, almost all the users agree that the settler need to pay more cost while executing force settlement, and the cost will be paid to system as fee.

Rationale

Force settlement fee can be seen as to pay part of the cost for smartcoin supply, stabilization and also the liquidation of collaterals, it is irrelevant to market fee sharing.
To ensure the debt positions can always be closed with suffcient smartcoin, it is more feasible to cut off part of the traded collaterals as fee, instead of smartcoin.

Specification

Add one new parameter Force Settlement Fee Ratio(FSFR) for each smartcoin, which is controlled by the smartcoin owner.
Force settlement order price = settlement price*(1+FSO)/(1-FSFR)

Here settlement price is a new introduced parameter which is defined in BSIP71, settlement price = feed price when there is no bad debt.

FSO is Force Settlement Offset.

When a force settlement is executed, the buyer sells smartcoin with quantity X and get collaterals in quantity X*(1-FSFR)/[settlement price*(1+FSO)], the settled debt position owner sells collaterals in quantity X/[settlement price*(1+FSO)] and get smartcoin in quantity X, the delta in paid and received collaterals in quantity X*FSFR/[settlement price*(1+FSO)] will be paid to the owner of the smartcoin as force settlement fee.

Copyright

This document is placed in the public domain.

@bitcrab
Copy link
Contributor

bitcrab commented Feb 23, 2020

@sschiessl-bcp possible to assign a new BSIP number to the above BSIP draft?

@abitmore
Copy link
Member Author

@bitcrab thanks. While waiting for a BSIP number, please create a pull request so other people could directly comment on the content (E.G. to fix typos).

@sschiessl-bcp
Copy link
Collaborator

Is there any strong reason why we can't consolidate ALL fees / deduction that are being applied when force settling into the force settlement offset?

Advantages of only one fee:

  • For the everyday / indifferent user it will be easier to grasp (there is ONE fee with a possibly deviating distribution depending on the asset)
  • For the power user it makes no difference because he is aware of the difference
  • There are no compatibility issues with existing code. The UI still displays the offset. It will only need an update to make the user aware of the distribution

@bitcrab
Copy link
Contributor

bitcrab commented Feb 24, 2020

Is there any strong reason why we can't consolidate ALL fees / deduction that are being applied when force settling into the force settlement offset?

Advantages of only one fee:

  • For the everyday / indifferent user it will be easier to grasp (there is ONE fee with a possibly deviating distribution depending on the asset)
  • For the power user it makes no difference because he is aware of the difference
  • There are no compatibility issues with existing code. The UI still displays the offset. It will only need an update to make the user aware of the distribution

the current offset is actually compensation, it is paid from settler to the debt position owner.

however fee is paid to the system.

so all this finally appear as the difference between feed price and force settlement price, but actually there are 2 parts that go to different destination. so I don't think how UI handle this is the key issue, but how to make the specification compatible with core code is important, hope core team member can advise.

@abitmore
Copy link
Member Author

For faster progress, @sschiessl-bcp please assign a BSIP number, and @bitcrab please create a pull request. My opinion about the fee split is above: #260 (comment), IMHO it's a UI issue so no need to waste time here.

@bitcrab
Copy link
Contributor

bitcrab commented Feb 24, 2020

@abitmore PR created, pls check.

@sschiessl-bcp
Copy link
Collaborator

@abitmore @bitcrab added it as 87

@abitmore abitmore changed the title New BSIP: Force-settlement Fee Ratio BSIP 87: Force-settlement Fee Ratio Apr 9, 2020
@abitmore
Copy link
Member Author

abitmore commented Apr 9, 2020

I think the fee should cover instant settlement (when settling a GSed asset) as well.

@sschiessl-bcp
Copy link
Collaborator

I think the fee should cover instant settlement (when settling a GSed asset) as well.

I understood as included. The force settlement operation is called, but executes instantly if asset in GS. This does not exclude it from the fee.

@shulthz
Copy link

shulthz commented Apr 11, 2020

This BSIP is meaningless, can't solve any problem, just want to charge fees.

It didn't have any logic, can't stand up to scrutiny.
Develop it is just waste money and time of bts holder.
One day all of you will pay for it.

@abitmore
Copy link
Member Author

Draft merged in #265. Closing.

@abitmore
Copy link
Member Author

Discussion in bitshares/bitshares-core#2151 (comment):

Mentioned by @abitmore:

Another thing is we also need to charge fees for instant force-settlements (for GSed assets).

Mentioned by @christophersanborn:

I'm not sure I agree with this. It's not mentioned in the BSIP — and I note there is something odd about an asset owner charging fees on settlement for an asset that's in a "failed" state, as opposed to letting claimants claim their full value from the settlement pool. It also could be a vector for an exit scam — as the asset owner could in theory ramp the fees up substantially after GS and make off with a big chunk of the pool, effectively abandoning their product and their customers.

I would argue that the differences between "instant settling" and "force settling" are not just semantic but also substantive, and enough so to argue that instant settling is not covered by the BSIP as written. I'm trying not to editorialize too much though.

If I recall, but I haven't gone back to double-check, the market fees mechanism is also not triggered during instant settle, (although perhaps it should be, since they are collected by the collateral issuer, who was not responsible for the GS). This also partly informed my choice not to touch the GS settle code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants