Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BSIP 67: Dynamic Market Fees #130

Open
OpenLedgerApp opened this issue Nov 29, 2018 · 3 comments
Open

BSIP 67: Dynamic Market Fees #130

OpenLedgerApp opened this issue Nov 29, 2018 · 3 comments

Comments

@OpenLedgerApp
Copy link
Contributor

Abstract

A UIA owners does not have many marketing tools to increase trade volume of their assets.

One of the ways to increase the trade volume can be Dynamic Market Fees that will provide additional discounts for active traders.
For example, to set lower fees for trading larger volumes.

So, instead of market fee, an asset owner can optionally set up dynamic_market_fee_percent property that may look like a following example table.

image

Motivation

  • To provide additional marketing tools to encourage traders.
  • To increase trading volume on BitShares.
  • To attract traders to the ecosystem.

Rationale

Use cases:

  1. Supporting money makers.
    Every trade occurs between two parties: the maker, whose order exists on the order book prior to the trade, and the taker, who places the order that matches (or "takes") the maker's order.

Makers are so named because their orders make the liquidity in a market. Takers are the ones who remove this liquidity by matching makers' orders with their own.

The maker-taker model encourages market liquidity by rewarding the makers of that liquidity with a fee discount. It also results in a tighter market spread due to the increased incentive for makers to outbid each other. The higher fee that the taker pays is usually offset by the better prices this tighter spread provides.

  1. Supporting heavy volume traders.
    Fees are charged and deduced on a per-trade basis. The bigger “trading volume” users have traded, the lower fee they get on subsequent trades.

Technical Specifications

We suggest using average total volume for a particular asset. However, it's open for the discussion.

Statistics Storage

There are two options for storing account statistics for trading:

  1. expand class account_statistics_object by adding a map of trade_statistics_object for each asset
  2. create a new type trade_statistics_object and a new index

Trade statistics object

class trade_statistics_object
{
    
 account_id_type owner;
    asset_id_type asset;
    timestamp first_trade_date; //first trade date for this asset
    share_type total_volume; //total bought asset volume
 };

Statistics Update
Statistics updates during fill_order.
We need to update statistics for the user and for the specific asset at the same time.

Trader Activity is estimated as average trading volume of a user for a given asset for 1 day.

Trader_activity = total_volume / (Now - first_start_date) //(in days).
This way we accumulate total bought volume for each user for each asset and average out daily volumes for his entire term of trading of this asset (per day).

Please let us know your thoughts,
OpenLedger team

@abitmore
Copy link
Member

IMHO it's much easier and more flexible to achieve the goal with an external tool.

@nutelina
Copy link

nutelina commented Dec 15, 2018

Instead of money makers do you mean market makers?

@OpenLedgerApp
Copy link
Contributor Author

Instead of money makers do you mean market makers?

Thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants