bsips/bsip-0006.md

309 lines
15 KiB
Markdown
Raw Normal View History

2015-12-16 11:17:27 +00:00
BSIP: 0006
Title: Market Maker Incentivization
Authors: Daniel Larimer <Dan@cryptonomex.com>
Fabian Schuh <Fabian@BitShares.org>
Status: Draft
Type: Protocol
Created: 2015-12-16
Discussion: <https://github.com/cryptonomex/graphene/issues/475>
<https://bitsharestalk.org/index.php/topic,20482.0.html>
Worker: TBD
# Introduction
The success and failure of a market depends to a large degree on the number of
participants in that market. The number of participants depends upon the
liquidity in a market. This is a chicken and egg problem that must be resolved
by bootstrapping a new market with liquidity. This bootstrapping process is
very risky because it involves trading in an illiquid market. With the proper
incentives it can become profitable to bootstrap a market until no additional
incentives are necessary.
# Market Makers
A market maker is anyone who has their order filled after being left open on the
books for a minimum period of time (at least 1 block). These individuals leave
an open order ready to meet the demand for someone looking to buy and/or sell.
Leaving orders on the books that are never filled does not qualify for being a
maker even if they add the appearance of depth. To be more specific, a market
maker buys and resells over and over again and pockets the spread between buying
and selling as their profit. This is not a risk free operation if the market
starts to move consistently in any one direction.
# Flexible Maker Fees
The first step toward increasing liquidity is to reduce the artificial costs
associated with trading in a market. This means simply lowering the trading fees
to 0 for those who provide liquidity (makers) while only charging those who
consume liquidity (takers). Under this proposal we would introduce a new
parameter to assets that allows the issuer to configure different market fees
for makers vs takers. Early on it may be desirable to have 0 maker fee, but for
the sake of flexibility we will parameterize it.
# Rewarding Market Makers
Simply reducing the fees does little to reduce the risks (costs) associated with
trading in an illiquid market. These costs are disproportionately borne by the
early adopters of a market, especially in volatile markets. In order to offset
these costs these market makers should be compensated for their risk in a manner
that does not impose costs to participants outside the market. The goal is to
reallocate the income generated by the market fees charged to the takers, to the
makers.
An instantaneous reallocation does little more than shift the equilibrium price.
Instead we propose to redistribute future market fees generated after a market
has been bootstrapped to the risk takers that facilitated the growth of that
market. Each market is like a startup business and like all startup businesses,
some capital is required get started. In the case of a market, the startup
capital required is liquidity provision. Shares in a company are usually
distributed proportional to how much capital each founder contributed. As the
company matures and raises future rounds of capital the company can sell their
shares for higher and higher prices (offer less shares for the same capital).
# Specifications
## Definitions
* `MSHARES` - a special asset that has maximum supply M and is rewarded to users
based upon the percent of the daily liquidity (volume) they provide to a
particular ASSET. Every ASSET has the potential to have their own unique
MSHARES.
* `RESERVE` - The total remaining MSHARES to be distributed over time
* `BUCKET` - a collection of MSHARES that is available to be divided among
current liquidity providers. This is used to implement the [leaky bucket
algorithm](https://en.wikipedia.org/wiki/Leaky_bucket)
* `DECAY_RATE` - The maximum percent of the RESERVE that can be moved into the
BUCKET per second. This defines the half life of the reserve and the extent
to which early liquidity providers have an advantage over later liquidity
providers.
* `B` - the total number of MSHARES in the BUCKET at any given point in time.
* `Bmax` - the maximum MSHARES the BUCKET may accumulate (a multiple of the
DECAY_RATE).
* `Vavg` - An approximation to the average volume in the market
* `Vperiod` - the number of seconds to average volume over (1 week recommended)
* `V` - the volume of the maker order being filled (measured in UIA units)
* `REWARD` - the reward in MSHARES that a MAKER receives
* `T` - seconds since last match
* `Tmin` - the minimum time a order must be on the books to be considered for
maker rewards.
## Calculations Performed on Match
Top off the bucket (but cap at `Bmax`):
Bchange = min( B + RESERVE * DECAY_RATE * T, Bmax ) - B
RESERVE = RESERVE - Bchange
B = B + Bchange
Reward a fraction of the bucket:
REWARD = B * V / (Vavg + V)
Remove Reward from Bucket:
B = B - REWARD
Update Weighted Average of Volume
Vavg = Vavg * MAX(0,Vperiod-T)/Vperiod + V
After calculating the REWARD the Maker's balance of MSHARES is increased.
## Distributing Market Fees
Every maintenance interval the accumulated market fees for an UIA are used to
purchase MSHARES in the UIA/MSHARES market. The percentage of market fees that
are directed to repurchase MSHARES is a parameters that is set by the issuer. It
may be increased, but never decreased.
All parameters are configured by the asset issuer including DECAY_RATE, Bmax,
RESERVE, Vperiod, Tmin, maker fee, and percent of market fees allocated to the
maker. An issuer may revoke their permission to change the parameters and
thereby reduce the risk of the issuer changing the terms and impacting the value
of MSHARES.
# Maker Issued Asset
The result of this proposal is the creation of a new type of asset called the
*Maker Issued Asset* that can only be created/destroyed by the algorithm above.
# Funding this Proposal
It is our belief that the cost of implementing a feature must be less than the
present value of a feature. It is the belief of Cryptonomex that this particular
feature is worth much more than the cost to implement it and therefore
Cryptonomex will be implementing it speculatively in exchange for a cut of all
MSHARES for all assets that use this feature to improve their liquidity.
We will create a new NETWORK ISSUED ASSET, called MAKER that will automatically
be repurchased with 20% of all MAKER ISSUED ASSETS ever created. This asset with
have a maximum supply of 1,000,000 MAKER and initially be 100% allocated to
Cryptonomex in exchange for implementing this feature. Cryptonomex will sell
MAKER into the market to cover the cost of development.
# Approving this Proposal
In order for this proposal to be approved by the network a worker proposal will
be created that will pay 100,000 BTS to Cryptonomex. If the proposal gets funded
then it will be assumed that the required hardfork has been approved by
stakeholders and development will compense.
# Understanding by Example
If a particular asset issuer defines their DECAY rate such that 50% of all
MSHARES are allocated in the first year, then someone who provides 100% of the
liquidity would earn 50% of all future market fees in exchange for liquidity
provision. It does not matter what the volume is over that year, all that
matters is the relative percentage of liquidity provided by every market maker.
If the market starts out small with $10K / 24hr volume, and then turns into a
$30M 24/hr volume then the market fees of 0.2% will yield $30,000 per day, half
of which would belong to the individual who provided a meer $10K of liquidity in
the first year. Meanwhile those who provide $10K of liquidity once $30M of
volume is reached will get a very small number of MSHARES.
Assuming a market provides a useful function for traders, these incentives
should easily encourage early adopters to bootstrap the market.
# Preventing Abuse
All systems must be analysed for potential abuse. In this case we are concerned
about a single bad-actor attempting to create fake volume in order to profit
without actually providing liquidity. Abuse is prevented by three factors:
1. There is a non-zero cost to creating fake volume in the form of order
creation fees charged by the network.
2. Creating fake volume requires also being a "taker" and paying the taker's
market fee. The asset issuer will only allocate a fraction of the taker fees
to repurchase. This means that there is a non-zero cost of creating MSHARES.
3. In the event that it is profitable to create MSHARES through fake volume,
there will be market competition to fight over the "free money". This would
work like mining difficulty as many different individuals compete to create
"fake volume" until percent of MSHARES each market participants earns
approaches the cost of creating those MSHARES.
Our conclusion is that the design of this algorithm is resistant to abuse. If
abuse is attempted the network and the issuer should profit greatly.
# Discussion
## Fees that go to purchase MSHARES
When there is a market fee it is denominated in UIA and is value is a percent of
the the UIA received from the trade (ie: 0.2%). If the trade was for $1000, then
$2 would be the "market fee" paid by the "taker". This $2 will be further
divided according to a parameters set by the issuer, the issuer could allocate
50% for issuer profits, and 50% for maker. In this case $1 would be used to
repurchased `MSHARES` for UIA. The total maker rewards would be: `REWARD = B*1000
/ (Vavg + 1000)`. Of this 20% of REWARD will be used to purchase MAKER in the
MSHARES/MAKER market, and 80% will go to the user who performed the market maker
role.
BitShares would receive the `ORDER_CREATION_FEE` which is fixed regardless of the
size of the order and is about $0.20 for regular users and $0.04 for lifetime
members. This `ORDER_CREATION_FEE` is distributed to the referral program /
network like all other non-market fees.
The only market fees earned by BTS holders would be the 50% (variable) allocated
to the issuer when the issuer is the committee. These funds are at the
discretion of the committee.
Bottom line, BTS holders make the same money they use to make. This proposal
simply offers UIA issuers the opportunity to increase their profits by
bootstrapping their liquidity with a stake in future revenue from the market.
## Opportunities for Abuse
It seems like there will be opportunity to abuse this, at least in the
beginning, where few people are competing. The fee's payed trading with yourself
seem minuscule compared to the possible gain if that asset ever becomes popular.
It is a risk though, that it may not be popular.
Envision what this competing will look like. Everyone trying to trade with
themselves without offering too good of a price and also trying to avoid filling
someone else's order.
If your own order is the cheapest available. Other than the fee, is there any
reason NOT to trade with yourself? If not shouldn't we expect every market to
completely saturate based on the perceived future volume of that market?
I think the conclusion I'm coming to is that these attempted "abuses" are
actually good for everyone. All participants will be taking their own risks, and
not participating costs you nothing. Its not a further complication because not
knowing about it doesn't hurt you. The more competition, the tighter the spread
and greater collected network fees. Whats to lose? +5%
## Thought experiment
Lets try the experiment with a 20% taker fee just to be outrageous. Lets have
the maker fee be -20%. Under such a market, those who demand liquidity take a
20% loss and those who provide it get a 20% gain. The trader would view such a
market similar to a market with a 20% spread. They would be hesitant to buy such
an asset because they know they will take an instant 36% loss if they are the
taker on both sides. (0.8 in and 0.8 out). This means that someone looking to get
in-or-out of such a market with the least loss would have to be a maker for one
of the two trades in which case they take a 4% loss (.8\*1.2=.96). Those who are
willing to "wait" on both sides of the trade can profit by 44% (1.2\*1.2).
Hence the negative maker fee encourages users to wait (which is the opposite of
liquidity). You create "lines" on both side of the order book of people who
want to exit their position. I suspect you would see very narrow spreads with
steep walls. This market would have the appearance of good liquidity, but the
underlying reality is that 'day traders' view it as a market with a 20% spread.
So in this extreme case the takers end up paying for their liquidity TODAY the
same way they would pay for their liquidity without the 20/-20 maker/taker rule:
via a large spread. Market makers end up making the same profits they would if
they had a 20% spread between their buy and sell walls. The only thing the
negative maker fee is doing under this model is enforcing a minimal spread that
makers can provide, in other words price-fixing the market maker fee. Instead of
market makers competing to reduce spread, they are competing to be the first in
line of a "virtual" 0 spread. Because no value is moving through time all this
price fixing is doing is creating shortages (of takers) and gas lines (those
waiting to exit on both sides of the book).
So it is clear that if we set the maker/taker fees to be greater than the
natural spreads that things break down. Our real goal is to reduce spreads, not
enforce a minimum spread with steep cliffs of liquidity on either side of that
minimum spread.
So this means that we want to maximize maker rewards without increasing the cost
to the taker. So lets look at another extreme market:
1. Suppose that takers paid a 0.1% fee
2. Suppose that makers earned 20% bonus from someone else (ie: the network).
In this market there would be huge walls of liquidity as people compete to get a
44% return every time they turn over. This 44% return completely eliminates
almost all market volatility risk. Traders/takers see an effective spread of
just 0.1% which means they feel very comfortable buying the asset because they
know they can turn around and sell it instantly with only a 0.2% loss. Assuming
there was no limit on the 20% bonus, then people would start trading against
themselves. Obviously you would have to mitigate this self trading by making
the reward based upon how long the order was on the books before getting filled.
This is the situation we really want to create.
So the question becomes how do you compensate makers today without making todays
traders (takers) pay for it. My proposal has tomorrows takers pay today's
makers by paying for market making today, but not tomorrow.
The proposal here says you give them 0.1% today + a cut of the net present value
of all future fees.
The cost of providing liquidity on early on is much more expensive than the cost
of providing the same liquidity in a mature market. Under this model you gain
more liquidity from makers early on (when it costs the most) without actually
decreasing liquidity available in the future (when it costs less). If you set
the decay curve properly you can end up with "constant liquidity" equal to the
average liquidity over the entire life of the market. Over a long enough time
horizon this means that you should get almost as much liquidity in year 1 as you
do in year 30 if market makers believe in the future of a given market.
So when people suggest "simple" rules they are not really getting the result
they want.
# Copyright
This document is placed in the public domain.