bsips/bsip-0042.md

167 lines
6.7 KiB
Markdown
Raw Normal View History

2018-08-22 02:20:16 +00:00
BSIP: 0042
Title: Adjust price feed to influence trading price of SmartCoins
Author: Abit More <https://github.com/abitmore>
Status: Draft
Type: Protocol
Created: 2018-08-22
2018-08-22 03:04:14 +00:00
Discussions: https://bitsharestalk.org/index.php?topic=26948.0
https://bitsharestalk.org/index.php?topic=26315.0
2018-08-22 02:20:16 +00:00
Worker: TBD
# Abstract
We here propose to dynamically adjust price feed in order to influence trading
price of smart coins to achieve tighter peg.
# Motivation
To get mass adoption, it's better that the SmartCoins can peg to targets more
tightly. E.G. bitUSD pegs more tightly to Fiat USD.
# Rationale
When BTS is in a downtrend, the SmartCoins are always being traded at a
premium; when BTS is in a uptrend, the SmartCoins tend to be traded with a
discount. Here is a chart showing historical trading price of bitUSD:
https://coinmarketcap.com/currencies/bitusd/
Typically a premium is around 10%, and a discount is around 5%. Although some
people think the numbers are not very large, other people think they're too
large. In this BSIP we aim to reduce the numbers.
Trading price of a SmartCoin is influenced by
* underlying value guaranteed by collateral;
* demand vs supply.
## Downtrend and premium
When BTS is in a downtrend, before a black swan event, supplies of SmartCoins
are squeezed, while the underlying value is still guaranteed if price feeds are
around real trading price, thus trading price of the SmartCoins will be pushed
up.
If we slightly adjust the price feed, thus slightly loose the guarantee on the
underlying value, hopefully we can push the trading price of SmartCoins towards
par. Since adjusting price feed affects supply as well, ideally we don't need to
adjust much to achieve the goal.
Other options include decreasing MCR to stimulate supply, or decreasing MSSR to
suppress demand.
### Negative feedback
Actually we don't know what's the best offset to be applied to the inputs, but
we can adopt a negative feedback approach. When adjusting the inputs, keep an
eye on the result (trading price of SmartCoins). If the adjustment is in the
correct direction, the price should move towards par. If the price moved too
little, we adjust more; if the price moved too much, we adjust less. Finally
this will lead to a stable result.
2018-08-22 13:16:37 +00:00
We may consider setting a hard limit on the offset which may make us feel safer.
Actually, to be safe, we do need to start with a small offset, and adjust little
by little. Since it's expected that the best offset will be figured out by the
negative feedback mechanism, a preset limit may impact the mechanism negatively.
A few witnesses publishing too far away offset doesn't harm much because
they won't move the median much. In addition, stake holders may vote down
perceived bad actors.
2018-08-22 02:20:16 +00:00
### Risks
All the adjustments (price feed, or MCR, or MSSR) in a downtrend actually looses
requirement of collateral ratio, so it seems it will increase the possibility
of black swan events. This is actually the most contraversial part of this BSIP.
The counter argument is about liquidity. As we can see, even without the
adjustments, black swan events have occurred on bitHKD, bitSGD and some other
SmartCoins due to poor liquidity. In contrast, bitCNY, bitUSD and etc have
survived due to good liquidity. With the adjustments, hopefully we'll have
better adoption, which means better liquidity in the markets, so possibility
of black swan events would likely decrease.
### Guarantee of value
Adjusting price feeds impacts force settlements. Specifically, a user will
likely get less by force settling when the price feed is adjusted. This lead
to an argument says it breaks guarantee of SmartCoins' value.
The counter argument is also liquidity. With good liquidity, users should buy
from market rather than force settling. It's up to UI to guide users for better
experience. If a user has a large volume to trade, she has to be patient,
since even go the force settlement approach she will likely encounter the
volume limitation as well.
### Margin call price
Actual price (in FIAT) when buying into a margin call would be unchanged,
because the adjustment will shift trading price of SmartCoins but not BTS.
It's expected that margin calls will be less though.
### User experience changes
Currently, GUI shows median price feed on the market page. By looking at the
price,
people know what price BTS is trading around. Then people can check lastest
trading price of BTS / SmartCoin pairs, to know how much premium or discount
that the SmartCoins are trading at.
After applied the adjustments on price feeds, the median price feed showing
on market page of GUI will no longer mean trading price of BTS, instead, it
will mean a somewhat "guiding price" for SmartCoin production. People may get
confused especially in the beginning of applying the adjustments.
On the other hand, after applied the adjustments, hopefully SmartCoins will
be traded on par, so latest trading price of BTS / SmartCoin pairs will
indicate trading price of BTS.
It's up to the GUI development team to optimize the GUI for better user
experience.
## Uptrend and discount
When BTS is in a uptrend, usually SmartCoins are oversupplied which results in
devaluation. Ideally, to reduce supply, the best approach is to increase MCR.
However, at this moment, there is a bug in BitShare-Core so we can't adjust MCR
freely (more info is here:
https://github.com/bitshares/bitshares-core/issues/1270). Before the bug is
fixed, we can adjust price feed instead, similar to downtrend, with negative
feedbacks, but in opposite direction.
Note: when adjusting price feed in a uptrend, we should set a fair force
settlement offset at same time, see [BSIP 16](bsip-0016.md) for more info.
# Specification
When witness publishing a price feed, after got price of BTS from exchanges
(assuming it's `P`), check trading price of the publishing SmartCoin,
adjust `P` with an algorithm.
2018-08-22 13:16:37 +00:00
To be safe, the algorithm should start with a small offset, or a value near
the median, and adjust the offset little by little.
2018-08-22 02:20:16 +00:00
The algorithm should implement negative feedback,
that said, it should track historical adjustments and historical differences
on trading prices of SmartCoins, and make new adjustments accordingly.
2018-08-22 13:16:37 +00:00
We don't force all witnesses to use a same algorithm, instead, witnesses are
2018-08-22 02:20:16 +00:00
encouraged to implement different algorithms for same goal.
2018-08-22 13:16:37 +00:00
We also don't set a hard limit about how much the offset should be within, in
order to let the negative feed back mechasim find the best result by itself.
Witnesses should make their own decisions on whether to set a hard limit and
how much should it be if need to set one, generally, to reduce impacts caused
by bugs.
2018-08-22 02:20:16 +00:00
# Discussion
[To be added]
# Summary for Shareholders
[To be added]
# Copyright
This document is placed in the public domain.