From a38836001cb551304f8cf566b37dcf173445463d Mon Sep 17 00:00:00 2001 From: abitmore Date: Fri, 16 Feb 2018 22:01:13 +0000 Subject: [PATCH] Add BSIP 31 --- bsip-0031.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 bsip-0031.md diff --git a/bsip-0031.md b/bsip-0031.md new file mode 100644 index 0000000..55a5b70 --- /dev/null +++ b/bsip-0031.md @@ -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 + Discussion: https://github.com/bitshares/bitshares-core/issues/343, + https://github.com/bitshares/bitshares-core/issues/649 + 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. + +# Rational + +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 + +* https://github.com/bitshares/bitshares-core/issues/343 +* https://github.com/bitshares/bitshares-core/issues/649 +* https://bitsharestalk.org/index.php?topic=25926.0