Discussion about new trading fee policy

I would like to discuss the trading fee policy planned for the next big release (DAO release).

We would like to make fees dependent on the trade amount and the distance to the market price (if a market price is available).

The trading fee has an important role for the security as it acts as spam protection as well as for privacy protection. There are 2 types of trading fees with different functions:

1. Create offer fee:
Here it is for spam protection.
Without the fee a user could create 1000s of offers spamming the P2P network, creating load and resource costs for every node but not adding value to the exchange platform. He could do that by manipulated code rendering the offers invalid when someone would like to take it so just publish offers but don’t really use BTC for those. Anyone taking the offer would lose time until the timeout triggers a failure, so it hurts even more.

2. Take offer fee:
Here the fee acts mainly as protection against data harvesting for Fiat trades.
When using a fiat payment method, the other peer gets the account data required for the fiat transfer (usually the name and bank account nr.). In the last step of the take offer handshake those data are exchanged. Without a “take-offer-fee” a malicious peer could use a manipulated code and let the take offer fail in just the last moment after he has received the peers account data and so collect a large amount of users account data. To avoid that the take-offer-fee adds at least some costs to such malicious behavior.
For altcoins that is less relevant as the account data only consists of the altcoin address but even there the altcoin address might be abused for de-anonymization if it is used elsewhere.

Beside those important functions the trading fee will play an important role in the economic model of the upcoming DAO. The users can choose then to pay the fees in DAO tokens and if so they will get a cheaper fee so that will create demand for tokens on the market, giving the token a monetary value.
If the trader uses BTC instead of DAO tokens, he will pay it like now to the arbitrator (or maybe we use a donation model to a project we want to support like Tor or Wikileaks).
The monetary revenue of the trading fees is very small (the arbitrator has earned about 3 BTC after nearly 1 year). We want to keep the fees as low as possible to help bootstrap the network. Later the fee will adopt to the market situation.

Unfortunately the mining fee has become a big part of the fee (the fee payment is a btc transaction and requires the mining fee). In future we will look into solutions how to avoid that extra transaction.

So the new fee model is planned like that:
There is a minimum fee of 0.0001 BTC (otherwise we get close to dust level) and the default fee is 0.0003 BTC.
The fee will be multiplied by the trade amount, so a 1 BTC trade has 0.0003 BTC fee, a 0.5 BTC trade has 0.00015 BTC as fee.
Furthermore the % distance to the market will have an influencing factor (only for the create offer fee). 1% difference is factor 1, smaller distance reduces the fee until it reaches the min. fee and larger distances will increase the fee.
Examples:
1 BTC trade, 1% market distance: fee = 0.0003 BTC (default fee)
0.5 BTC trade, 1% market distance: fee = 0.00015 BTC
0.1 BTC trade, 1% market distance: fee = 0.0001 BTC (min. fee)
1 BTC trade, 0.5% market distance: fee = 0.00015 BTC
1 BTC trade, 0% market distance: fee = 0.0001 BTC (min. fee)
1 BTC trade, -1% market distance: fee = 0.0001 BTC (min. fee)
1 BTC trade, 2% market distance: fee = 0.0006 BTC
1 BTC trade, 10% market distance: fee = 0.003 BTC
1 BTC trade, 30% market distance: fee = 0.009 BTC

Max. allowed market distance will be 30%.

With the market distance factor we create a higher incentive for good offers which are close to the market price. Offers with 10% distance or more will usually stick very long in the offer book, causing costs for the network and each user and do not add much value as most people are not interested to take an offer with such a bad price.
And if a trader who uses a high % and find a taker he will make a huge profit so the increased fee is still a very small part of his profit from arbitrage.

I wanted to ask the community for feedback about that model. The exact numbers are not set in stone yet and the actual values for the fees will later be defined by voting in the DAO (2. step of the DAO in a few months).

Please keep in mind that goal is to keep the model as simple as possible with the max. positive effect for the platform.
To make it easier for the user to see what the fee is, we will display the actual % of the fee in relation to the trade amount.

There is another important aspect in the new model:
The taker fee is at the moment higher than the maker fee to create incentives for makers.
In the new model we will use the mining fee from a fee estimation service (21.co) so the exact mining fee for the actual trade (once another trader takes the offer) is not known in advance when the offer is created.
That causes an asymmetry in the mining fee payment. Now both trader pay the same amount of mining fee (one pays the deposit tx fee, the other the payout tx fee).
But as the maker (offerer) need to reserve the required BTC for the offer but we don’t know the required fee in advance we need to shift that burden to the taker. So the taker will pay 2 times the mining fee (deposit tx + payout tx).
But that aligns with our intention to give incentives to the maker. To not create a too high burden the taker fee will be similar or equal to the maker fee (0.0003 BTC). At the moment the taker has the double fee as the maker.

3 Likes

Since min. fee is 3 times smaller than the default one used for 1 BTC trade, this makes trades smaller then 0.33… BTC slightly less profitable as the min. fee remains the same as the trade amount goes down. It this a desirable characteristic or would it be better to implement a logarithmic instead of linear decline in fees with the decline in trade amount?

Perhaps instead it would be simpler to implement fees proportional to the min. allowed trade amount. Min. fee for the minimum trading amount and multiply from there, however this might make fees too high for the bigger trades or set a high bar for min. trading amount. For example with a 0.0001 BTC min. fee this would make up for 1% for 0.01 BTC trade.

Sounds great to me. Especially, I like the idea to give donations to projects like Tor. For Wikileaks, I disagree, because it’s too political. Maybe the user could be able to select the organisation to donate to.

We could do it via DAO voting in future. But that option will be considered probably only if there are legal issues if the arbitrator receives the BTC. In the process atm to clearify such stuff…

Basically I agree, but keep in mind that mining fee is much higher than trading fee, so its not too relevant. Simplicity is important as well. A too complicate formula is hard for people to get and also harder to change/influence via DAO voting.

Yes and mining fee would make up about 0.00064 BTC (6%) and security deposit (0.03 BTC) 300%.

Small amounts for offers will not work well with Bitsquare and reflects also the costs for the network (many small offers cause more P2P traffic).
You must not apply trading behavior from centralized exchanges to Bitsquare, that will never work well.
It has its limitations and have other characteristics. For speculators and daytraders there will be some day another solution (CFD).

2 Likes

You are right. There isn’t any simple formula that I can think of to make it smoother. This should be fine for now.

My 2 cents: Make the fee structure as simple as possible! A lot of users aren’t geniuses (myself incl.).

1 Like

Hi, It may be possible to offer a create­-offer fee system that is not expensive for the user and also protects against spam.

When a user cancels an offer a deposit of 0.0008 BTC per transaction is created. This deposit requires the signature of the user and the arbitrator to be unlocked

However, when the user closes a transaction for a BTC amount significantly higher than the fee total, that amount is fully returned. All arbitrators involved in the transactions of that user will automatically sign the unlocking of the deposits.

Is this possible?

No that would have too many difficulties (you don’t want to have a manual signing of the arbitrator for each tx).
The fee is in relation to the tx fee quite small. Our main problem will become when tx fee rise higher and lightning network or other alternatives are still not available.
Beside that the trade fee will become an important economic factor in the DAO. It creates the demand for the BSQ tokens and gives them value. So all token holders (all contributors and all who buy tokens) will have interest to have a trade fee.
Those who want to safe the fee can earn by contributing to the project. The project needs people who help and those need a payment. Good software does not grow on trees…

BSQ Tokens? Any informaciĂłn about this? Are bisq coins to finance development?

They don’t exist yet, but will in the next release. Manfred didn’t have the time to write up a whitepaper yet, but will eventually so you can read all about it then. Yes, their purpose is so developers have incentives to contribute to the project.

High fees to post an offer far from the price means you don’t want liquidity?
So instead you’ll incentivize bots or people to post offers at the last moment? If people open Bitsquare and see no offers, it looks like no one is using Bitsquare. I would expect you to want as many offers as possible… Is the offer book really an expensive resource? If so, you might consider a timeout on offers where a new fee is required to renew it. However I still recommend against increasing the fee.

Bitsquare does not work like an auction, that wasn’t meant by naming trades offers, it just means that trade wasn’t taken yet. I assume this was the confusion, since there is no “last moment” in Bitsquare, trades are listed (offers) until they are taken, there is no time limit.
Traders can list as many offers (offer to trade) as they want for whatever the price they want, they will always be listed, even in case of a lot of offers being taken. This doesn’t affect the number of trades and liquidity, just where the prices will be, in which case it is as close to the market price as possible.
So to recap. one user creates a offer to trade BTC at some price and another user takes that offer. At which point that offer is taken. There is no auction or time limit on these offers, there are only time limits to finish the trades once they have been taken, to insure the trade does finish. So if many users place offers somewhat close to the market price, the price will stay similar, even if many offers get taken.

The proposition seems so much better than the one we have now.

Great idea. I lost some time trying to estimate if a 50€ was still a rational thing.

That looks great. Very easy to understand, even if you don’t even know how it’s calculated.


What about offers created at a fixed price? We will still consider the bitcoinaverage price distance to calculate maker’s fee the same way we do with % price offers even if when the offer is accepted, the difference between the trade and bitcoinaverage becomes very small? I think that having fixed price offers at 5% or maybe even 10% difference in the market is a good thing, because you know you will be able to trade at these prices if the market arrives there.

1 Like

The fixed price are handled the same way (use current market price to calculate the %).

I might consider to make the factor lower (atm it is linear and 10% means 10 times higher fee - though the default fee is super low: 0.0003 BTC (0.3 EUR).
I agree that offers with bigger distance are good to fill the offer book. But on the other hand if nobody takes them they dont really help much. and each offer causes load and traffic for the network (each user), so we need to reflect that with costs. Another aspect is if you make a deal with 1 BTC and with 10% spread you earn quite a lot (about 100 EUR) , so the 3 EUR fee will be a still a bargain.
Also don’t forget that lower amounts will lower the fee. 0.1 BTC is 10% of the fee. so a 10% offer with 0.1 BTC has 0.0003 BTC as well.

But as said I will reconsider to lower the factor.
What would you guys suggest?
How much fee should a 10% offer pay? 3 times more, 5 times more?

Another aspect will be the upcoming BSQ tokens (bisq DAO tokens). Users can choose to use BSQ for fee payment and get a 90% discount by using them! We want to incentivize users to use BSQ as this will create demand on the market and gives them a value and they are used for funding the contributors. If the BTC fee is too high for some they can move to BSQ and pay 90% less. So another reason to not make the far distance offers too cheap.

I think the BTC prices are too volatile to have significantly higher fees for only 10%. Maybe just 3 times is enough for now and if it proves too little over time as more offers come up, than we could increase it. I also think it would be best if it was exponential, there is big difference between 10% from market price and 50%, and I don’t think 5 times more is enough to stop this pseudo spam.