Add rounding rule for bsip 38
This commit is contained in:
parent
98d712ece6
commit
17dd78b6c7
2 changed files with 31 additions and 4 deletions
|
@ -7,7 +7,7 @@
|
||||||
Discussion: https://github.com/bitshares/bitshares-core/issues/132,
|
Discussion: https://github.com/bitshares/bitshares-core/issues/132,
|
||||||
https://github.com/bitshares/bitshares-core/issues/184,
|
https://github.com/bitshares/bitshares-core/issues/184,
|
||||||
https://github.com/bitshares/bitshares-core/issues/342
|
https://github.com/bitshares/bitshares-core/issues/342
|
||||||
Replaces: -
|
Superseded-By: 0038 (partly)
|
||||||
Worker: 1.14.96
|
Worker: 1.14.96
|
||||||
|
|
||||||
# Abstract
|
# Abstract
|
||||||
|
@ -261,7 +261,8 @@ The detailed rules proposed by this BSIP with new rules highlighted:
|
||||||
amount remaining), check the remaining amount, if the amount is too small
|
amount remaining), check the remaining amount, if the amount is too small
|
||||||
so the order would receive nothing on next match, cancel the order.**
|
so the order would receive nothing on next match, cancel the order.**
|
||||||
|
|
||||||
* When matching a limit order with a call order,
|
* When matching a limit order with a call order (**note: this rule has changed
|
||||||
|
in [BSIP 38](bsip-0038.md)**),
|
||||||
* **if the call order is receiving the whole debt amount, which means it's
|
* **if the call order is receiving the whole debt amount, which means it's
|
||||||
smaller and the short position will be closed after the match, round up its
|
smaller and the short position will be closed after the match, round up its
|
||||||
paying amount; otherwise,** round down its paying amount.
|
paying amount; otherwise,** round down its paying amount.
|
||||||
|
|
30
bsip-0038.md
30
bsip-0038.md
|
@ -6,7 +6,7 @@
|
||||||
Created: 2018-03-05
|
Created: 2018-03-05
|
||||||
Discussion: https://bitsharestalk.org/index.php?topic=25924.0,
|
Discussion: https://bitsharestalk.org/index.php?topic=25924.0,
|
||||||
https://github.com/bitshares/bsips/issues/51
|
https://github.com/bitshares/bsips/issues/51
|
||||||
Replaces: -
|
Replaces: 0035 (partly)
|
||||||
Worker: To be done
|
Worker: To be done
|
||||||
|
|
||||||
# Abstract
|
# Abstract
|
||||||
|
@ -30,7 +30,7 @@ black swan, thus hurts the BTS ecosystem. Many participants in the discussion
|
||||||
agree that usually it's not really required to cover all debt (thus selling more
|
agree that usually it's not really required to cover all debt (thus selling more
|
||||||
collateral) when being margin called.
|
collateral) when being margin called.
|
||||||
|
|
||||||
After [BSIP 31](https://github.com/bitshares/bsips/blob/master/bsip-0031.md) is
|
After [BSIP 31](bsip-0031.md) is
|
||||||
in place, shorters will have more chance to not cover all debt on margin call,
|
in place, shorters will have more chance to not cover all debt on margin call,
|
||||||
but it's not 100% guaranteed, and they can only accept the result passively.
|
but it's not 100% guaranteed, and they can only accept the result passively.
|
||||||
|
|
||||||
|
@ -131,6 +131,32 @@ After a call order get matched with a limit order and about to fill,
|
||||||
* if `target_collateral_ratio` is set, calculate maximum amount of collateral
|
* if `target_collateral_ratio` is set, calculate maximum amount of collateral
|
||||||
for sale according to the equation described above, then process as before.
|
for sale according to the equation described above, then process as before.
|
||||||
|
|
||||||
|
### Rounding
|
||||||
|
|
||||||
|
Rules about rounding are defined in [BSIP 35](bsip-0035.md).
|
||||||
|
|
||||||
|
The rule for matching a limit order with a call order need to be revised as
|
||||||
|
(new rules **in bold**):
|
||||||
|
* if the call order is receiving the whole debt amount, which means it's
|
||||||
|
smaller and the short position will be closed after the match, round up its
|
||||||
|
paying amount;
|
||||||
|
* **otherwise,**
|
||||||
|
* **if `target_collateral_ratio` is set and it's receiving the maximum debt
|
||||||
|
amount calculated with `target_collateral_ratio`, see this order is smaller,
|
||||||
|
try to round up its paying amount;**
|
||||||
|
* **for edge cases, if its collateral ratio would not increase after being
|
||||||
|
partially filled due to the round-up (which may even cause a black swan
|
||||||
|
event in an extreme scenario), see `target_collateral_ratio` as not set for
|
||||||
|
this time, re-apply the filling rules for this match.**
|
||||||
|
* otherwise, round down its paying amount.
|
||||||
|
* if the limit order would receive nothing, cancel it (it's smaller,
|
||||||
|
so safe to cancel);
|
||||||
|
* otherwise, calculate the amount that the limit order would pay as
|
||||||
|
`round_up(receiving_amount * match_price)`. After filled both orders,
|
||||||
|
if the limit order still exists, the remaining amount might be too small,
|
||||||
|
so cancel it.
|
||||||
|
|
||||||
|
|
||||||
## UI/UX
|
## UI/UX
|
||||||
|
|
||||||
The new option need to be presented and can be used in UI after the hard fork.
|
The new option need to be presented and can be used in UI after the hard fork.
|
||||||
|
|
Loading…
Reference in a new issue