Merge pull request #55 from bitshares/bsip31

Add BSIP 31: Update Short Position's Margin Call Price After Partially Called Or Settled
Abit 2018-02-18 21:11:08 +01:00 committed by GitHub
commit 1f91ed3c9a
No known key found for this signature in database
2 changed files with 66 additions and 0 deletions

View File

@ -38,3 +38,4 @@ Number | Title |
[28]( | Worker Proposal Improvements | Bill Butler | Protocol | Draft
[29]( | Asset issue change to require owner authority | Fabian Schuh | Protocol | Draft
[30]( | Always Allow Increasing Collateral Ratio If Debt Not Increased | Abit More | Protocol | Draft
[31]( | Update Short Position's Margin Call Price After Partially Called Or Settled | Abit More | Protocol | Draft

65 Normal file
View File

@ -0,0 +1,65 @@
BSIP: 0031
Title: Update Short Position's Margin Call Price After Partially Called Or Settled
Author: Abit More <>
Status: Draft
Type: Protocol
Created: 2018-02-16
Replaces: -
Worker: To be done
# Abstract
Currently, when a short position get partially called or settled, the call
price won't change, that said, even if its actual collateral ratio is higher
than others, higher than minimum required, it will still be selling collateral
at a low price, taking precedence over other short positions.
This behavior is causing several issues:
* it's somehow unfair, thus brought bad experience to shorters, and
* it prevents black swan event from being triggered in time when needed,
because the collateral ratio of the 2nd even overall short positions may
be too low but not being checked, thus risks the pegging system.
This BSIP proposes a mechanism to improve this situation.
# Motivation
Make the exchange system more user-friendly.
# Rationale
To attract more users, the system should be fair, should be well balanced.
It's common sense that short positions with least collateral ratio should
get margin called first. This can be achieved if always update the margin
call price after every fill.
# Specifications
In `fill_order( const call_order_object& ...)` function of `database` class,
update `call_price` field of `call_order_object` after debt or collateral
changed to a non-zero value.
In addtion, after `call_price` get updated, the iterators initialized with
`by_price` index may be invalidated, so need to review / revise involved code,
E.G. `check_call_orders(...)` function of `database` class.
# Discussion
[to be added if any]
# Summary for Shareholders
[to be added if any]
# Copyright
This document is placed in the public domain.
# See Also