Bitcoin Forum
December 12, 2024, 10:36:48 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Building a great Bitcoin exchange, part I: transaction fees  (Read 3029 times)
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 08, 2013, 09:59:10 PM
Last edit: April 09, 2013, 07:00:10 AM by aes1
 #1

So, recently I've been thinking a lot about how to build a great Bitcoin exchange.

There are some topics I would love to hear your opinions on, and I'll start with:

Part I - transaction fees

Let's skip the question of deposit/withdrawal fees for a second, as I believe they are of secondary importance.

Many popular exchanges charge relatively high transaction fees: around 0.5% seems to be a common starting fee, and if you exchange a lot, it can go down to around 0.2%. btc-e.com charges 0.2% (no volume discount), and bitcoin-24.com charges absolutely nothing (they make their money from deposits/withdrawals, it seems).

Apart from bitcoin-24.com, it seems like a far cry from the real stock exchanges, which can go as low as 0.01% (apparently they have some sort of volume discount there, as well). I wonder why. Is the volume just not there?

As an aside, the volume discounts remind me of progressive taxation. What is the justification for them? Why not just add a fixed percentage fee to all trades, say 0.2%, like btc-e does? Even better, why not just add a fixed fee to all trades, say 0.1 USD (or 0.1 EUR, or 0.001 BTC)? From a software engineering point of view, a transaction is a transaction, and to broker, a bigger transaction is no more costly than a smaller one. I'm sure there's some psycho-socio-economical explanation this, but I'm waiting for someone more knowledgeable to articulate it for me.

It's interesting that we have an exchange with zero transaction fees (bitcoin-24.com). Do you think that's a good thing? Will it not lead to the proliferation of high-frequency-trading bots that consume your precious computational and bandwidth resources at the expense of real users?

(Even more interesting is that currently, there's a 18.99 USD spread in bitcoin-24.com, even though it's the second most popular market, according to http://bitcoincharts.com/markets/. I would have postulated that zero commissions - combined with a decent volume - would lead to zero spread and an infinitely efficient market, by some intuitive logic of mine.)

All in all, I'd like to hear your opinions as to what kind of features you're looking in an exchange and where the current exchanges are lacking. Especially if you're located in Europe and would be willing to trade in euros.
bitcoincraps
Member
**
Offline Offline

Activity: 98
Merit: 10



View Profile WWW
April 08, 2013, 10:34:21 PM
 #2

Its not about transaction fees, it's about TRUST. A "great bitcoin exchange"="an old, established and trusted bitcoin exchange". Thinking that a great bitcoin exchange is a "cheap" one is a mistake. It doesn't matter which software you use or the nice friendly interface of your future exchange. All it matters is that 2-3k bitcoin owners trust you ...and that means many, many months of work.

aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 09, 2013, 06:48:28 AM
 #3

I understand the need for trust, and I suspect it will take some time. If/when we start, we're probably going to be very careful about it.

Still, I want to get some things right even before starting to build that trust, such as the effect of fees on how the economy works. (I.e. should cancelling orders be punishable by a small fee to avoid obviously bogus orders, and why would that be a bad idea? I don't think anyone has fees for cancelling orders right now.)

To be successful, one needs a deep understanding of the good and the bad in the current state of art in exchange user experience. I don't want to build a merely trustworthy exchange; I want to build a great one.
Furyan
Full Member
***
Offline Offline

Activity: 175
Merit: 102



View Profile
April 09, 2013, 08:45:24 PM
 #4

I have a suggestion. Fees are a changeable model, provided you code properly.

What will hamstring you from day 1 to the grave will be if your system falls over under load. Gox is big only because it is big, but technically speaking it is a piece of garbage. 

When the normal stock markets can provide sub-microsecond latency market depth data across tens of millions of trades per second, it puts to SHAME the fact that Gox falls over when it gets a few thousand trades in a 5 minute period.  Unacceptable lag is one way you can improve on Gox, as well as build a user interface that's actually, you know, usable.

Start with the basics.. you really need to have something to offer.  Insurgents cannot compete on the same selling points as incumbents, you have to change something significant.
Razick
Legendary
*
Offline Offline

Activity: 1330
Merit: 1003


View Profile
April 09, 2013, 09:36:02 PM
 #5

So, recently I've been thinking a lot about how to build a great Bitcoin exchange.

There are some topics I would love to hear your opinions on, and I'll start with:

Part I - transaction fees

Let's skip the question of deposit/withdrawal fees for a second, as I believe they are of secondary importance.

Many popular exchanges charge relatively high transaction fees: around 0.5% seems to be a common starting fee, and if you exchange a lot, it can go down to around 0.2%. btc-e.com charges 0.2% (no volume discount), and bitcoin-24.com charges absolutely nothing (they make their money from deposits/withdrawals, it seems).

Apart from bitcoin-24.com, it seems like a far cry from the real stock exchanges, which can go as low as 0.01% (apparently they have some sort of volume discount there, as well). I wonder why. Is the volume just not there?

As an aside, the volume discounts remind me of progressive taxation. What is the justification for them? Why not just add a fixed percentage fee to all trades, say 0.2%, like btc-e does? Even better, why not just add a fixed fee to all trades, say 0.1 USD (or 0.1 EUR, or 0.001 BTC)? From a software engineering point of view, a transaction is a transaction, and to broker, a bigger transaction is no more costly than a smaller one. I'm sure there's some psycho-socio-economical explanation this, but I'm waiting for someone more knowledgeable to articulate it for me.

It's interesting that we have an exchange with zero transaction fees (bitcoin-24.com). Do you think that's a good thing? Will it not lead to the proliferation of high-frequency-trading bots that consume your precious computational and bandwidth resources at the expense of real users?

(Even more interesting is that currently, there's a 18.99 USD spread in bitcoin-24.com, even though it's the second most popular market, according to http://bitcoincharts.com/markets/. I would have postulated that zero commissions - combined with a decent volume - would lead to zero spread and an infinitely efficient market, by some intuitive logic of mine.)

All in all, I'd like to hear your opinions as to what kind of features you're looking in an exchange and where the current exchanges are lacking. Especially if you're located in Europe and would be willing to trade in euros.

Volume discounts make sense to me, you are using their service a lot so they reward you. As for a fixed fee, that makes it awful hard on small traders if it's going to be high enough for the exchange to make decent money. I think a percentage makes more sense, the more money you are putting through, the more you pay.

I think MtGox charges too much, but Bitfloor is a good example of a fair fee system. They actually have a negative fee if your offer is not immediately accepted, which inventivizes offers not likely to be accepted right away so people get a better picture of the market.

ACCOUNT RECOVERED 4/27/2020. Account was previously hacked sometime in 2017. Posts between 12/31/2016 and 4/27/2020 are NOT LEGITIMATE.
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 10, 2013, 02:03:39 PM
 #6

I have a suggestion. Fees are a changeable model, provided you code properly.

What will hamstring you from day 1 to the grave will be if your system falls over under load. Gox is big only because it is big, but technically speaking it is a piece of garbage. 

This is one of the main points we plan to tackle. Ideally we'd be able to create a modular system where the trading component can be changed to a faster one, or the work split between multiple nodes, without anybody noticing (after simulations verify that it works properly and is more efficient). Significant engineering effort will be put into this.
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 10, 2013, 02:14:33 PM
 #7

When the normal stock markets can provide sub-microsecond latency market depth data across tens of millions of trades per second, it puts to SHAME the fact that Gox falls over when it gets a few thousand trades in a 5 minute period.  Unacceptable lag is one way you can improve on Gox, as well as build a user interface that's actually, you know, usable.

Tens of millions of trades per second sounds quite massive. London stock exchange seems to do some 612,000 trades per day (http://en.wikipedia.org/wiki/London_Stock_Exchange), which is about 10 per second. Then again, NASDAQ has 1.8 billion trades per day (http://uk.advfn.com/StockExchanges/about/NASDAQ/NASDAQStockExchange.html). So there's some catching up to do.

Millisecond latencies for trade bots will also require some significant investments (practically you need to support colocated servers). But given bitcoin's growth rate so far, I wouldn't be surprised if this happened sooner than later.
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 10, 2013, 02:23:54 PM
 #8

I think MtGox charges too much, but Bitfloor is a good example of a fair fee system. They actually have a negative fee if your offer is not immediately accepted, which inventivizes offers not likely to be accepted right away so people get a better picture of the market.

Thanks for the reference. I didn't know that they actually pay you for executed limit orders. Intersango also seems to have a 0.6% difference between immediate and limit orders (https://intersango.com/fees.php). Perhaps it's a good thing to incentivize the liquidity providers.
rta
Newbie
*
Offline Offline

Activity: 18
Merit: 0


View Profile
April 11, 2013, 10:53:16 PM
 #9

Perhaps it's a good thing to incentivize the liquidity providers.

I would say it most certainly is a good thing. Liquidity and (narrow) spreads are very important to users (not up there with trust, but still pretty important). At the ideal(ized) exchange, users wouldn't need to worry about these things, and even big orders wouldn't cause the market to swing. From what I can tell Bitfloor usually have a very narrow spread, but volume/liquidity is somewhat lacking.

Also, I think you should welcome professional traders and bots, as that is probably the fastest and best way to achieve high volume and liquidity on the exchange. Sure, that will require you to provision extra network/computing capacity and a good API, but I'm pretty sure that cost is easily outweighed by the "services" they provide to regular users.

Good luck with your project. In order for Bitcoin to survive its own popularity, more and better exchanges are needed. Not to mention the irony of the Bitcoin world having all but a single centralized exchange...
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 15, 2013, 07:10:31 AM
Last edit: April 15, 2013, 07:24:16 AM by aes1
 #10

Another question of transaction fees:

If you have 4 BTC in your wallet and want to sell 2 BTC on an exchange at the price of 100.0 USD, and there's a 0.5% transaction fee, which one would you prefer:

1. You give 0.005 * 2 BTC = 0.01 BTC in fees and it's taken from the order. A sell order of 1.99 BTC at 100.0 USD is created. You're left with 2.00 BTC in your wallet.

2. You give 0.005 * 2 BTC = 0.01 BTC in fees and it's taken from your wallet. A sell order of 2 BTC at 100.0 USD is created. You're left with 1.99 BTC in your wallet.

3. A sell order of 2 BTC at 100.0 USD is created. You're left with 2 BTC. When the order is executed, you receive 99.5% of the USD, leaving your with 2 BTC and 199 USD in your wallet.

4. Something else, what?

Why does this question occupy my mind? During the weekend I tried to benefit from the price volatility at Mt. Gox - especially during the zero fee period - and I noticed how nice it is when the BTC values stay nice and clean. For example, I had 5 BTC in my wallet, and kept selling and buying 2 or 3 BTC, and the profits would accrue to my USD balance. When the transaction fees returned, keeping the BTC numbers nice and round became harder.
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 15, 2013, 07:22:24 AM
 #11

Conversely, if you have 400 USD in your wallet, and want to buy 2 bitcoins at 100.0 USD. Where is the 0.5% fee taken?

1. You give 0.005 * 200 USD = 1 USD in fees and it's taken from the order.  A buy order of 1.99 BTC at 100.0 USD is created.  You're left with 200 USD in your wallet.  After the order is executed, you'll have 1.99 BTC and 200 USD.

2. You give 0.005 * 200 USD = 1 USD in fees and it's taken from your wallet.  A buy order of 2.00 BTC at 100.0 USD is created.  You're left with 199 USD in your wallet.  After the order is executed, you'll have 2.00 BTC and and 199 USD.

3. A buy order of 2.00 BTC at 100.0 USD is created.  You're left with 200 USD in your wallet.  When the order is executed, you'll receive 99.5% of the BTC, leaving you with 1.99 BTC and 200 USD.

4. Something else?
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 15, 2013, 07:35:54 AM
 #12

My thoughts, after doing some thinking on the matter, are roughly:

1. fees should be only collected after the transaction
2. it would be easiest for the exchange to always collect the fee in USD (should make bookkeeping, paying taxes, etc. easier)
3. on the other hand, there is some beautiful symmetry in collecting the fee in both BTC and USD (either "buyers pay BTC, sellers pay USD" or vice versa, whichever seems to make more sense)
4. the rules should be simple and transparent
5. the rules should work also in situations where someone converts their whole balance to another type

There's interesting interplay between these requirements and I suspect that the solution is not that simple.
Come-from-Beyond
Legendary
*
Offline Offline

Activity: 2142
Merit: 1010

Newbie


View Profile
April 15, 2013, 07:41:29 AM
 #13

All in all, I'd like to hear your opinions as to what kind of features you're looking in an exchange and where the current exchanges are lacking.

Decentralization.
avulhop
Newbie
*
Offline Offline

Activity: 14
Merit: 0


View Profile
April 15, 2013, 02:55:55 PM
 #14

On the topic of fixed fees:

Fixed fees make bots performing micro-transactions untenable. Blending it with a percent fee is easy enough (x%, minimum of y BTC)

That lets you marginalize the impact of bots flooding your engine (GOXXED) by making it much more expensive (and thus, less likely) for manipulators to flood your market.
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 17, 2013, 07:28:01 AM
 #15

Fixed fees make bots performing micro-transactions untenable. Blending it with a percent fee is easy enough (x%, minimum of y BTC)

That lets you marginalize the impact of bots flooding your engine (GOXXED) by making it much more expensive (and thus, less likely) for manipulators to flood your market.

Good point. Though, I'd like to keep things as simple as possible - as a customer, I'm annoyed when I see a fee structure such as "0.20%, minimum of 9 EUR" (which is the starting fee of nordnet.fi, a Finnish stock trading firm), because I feel that I'm being unjustly punished for small transactions, and I feel the need to calculate the point after which I'm "not being cheated" any more (in this case, 9 EUR / 0.20% = 4500 EUR). That's just a hassle. Perhaps not such a big hassle with smaller transactions, but a hassle nonetheless.

How about just having a minimum order quantity, which effectively guarantees a minimum fee? For instance, a transaction fee of 0.5% and a minimum order quantity of 0.1 BTC would guarantee a minimum of 0.0005 BTC / transaction, which will probably be a big enough to prevent bots from overwhelming the exchange with orders.

Then again, the exchange should definitely be prepared to be overwhelmed.
Birdy
Sr. Member
****
Offline Offline

Activity: 364
Merit: 250



View Profile
April 17, 2013, 01:27:31 PM
 #16

Conversely, if you have 400 USD in your wallet, and want to buy 2 bitcoins at 100.0 USD. Where is the 0.5% fee taken?

1. You give 0.005 * 200 USD = 1 USD in fees and it's taken from the order.  A buy order of 1.99 BTC at 100.0 USD is created.  You're left with 200 USD in your wallet.  After the order is executed, you'll have 1.99 BTC and 200 USD.

2. You give 0.005 * 200 USD = 1 USD in fees and it's taken from your wallet.  A buy order of 2.00 BTC at 100.0 USD is created.  You're left with 199 USD in your wallet.  After the order is executed, you'll have 2.00 BTC and and 199 USD.

3. A buy order of 2.00 BTC at 100.0 USD is created.  You're left with 200 USD in your wallet.  When the order is executed, you'll receive 99.5% of the BTC, leaving you with 1.99 BTC and 200 USD.

4. Something else?


How about:

1. You give 0.005 * 200 USD = 1 USD in fees and it's taken from the order.  A buy order of 2 BTC at 101.0 USD is created.  You're left with 200 USD in your wallet.  After the order is executed, you'll have 2 BTC and 200 USD.

I think that one would be great.
aes1 (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10



View Profile
April 18, 2013, 10:00:28 AM
 #17

How about:

1. You give 0.005 * 200 USD = 1 USD in fees and it's taken from the order.  A buy order of 2 BTC at 101.0 USD is created.  You're left with 200 USD in your wallet.  After the order is executed, you'll have 2 BTC and 200 USD.

I think that one would be great.

While I appreciate the elegance of this method (when money comes in or out, the sum is always what you specified), I feel that it can give the user a wrong impression of what is happening. Imagine the outcry if someone had placed a sell order at $255 during the latest bubble, which wouldn't have been executed simply because actually the sum was $255 + 0.5% = 256.275 (and the bubble popped at $256).

With immediate order, it wouldn't matter - but in the case of a limit order, I want to have precise control of the price.

I'm beginning to think that it's best to always include an explicit fee (in USD/EUR/whatever fiat you're trading against) when the user is about to submit an order. It needs some UI work to make it work understandably and beautifully in all cases, though. (There are at least 3 variables: buy X BTC/spend X USD, limit/market order, and buy/sell.)
Birdy
Sr. Member
****
Offline Offline

Activity: 364
Merit: 250



View Profile
April 20, 2013, 10:01:41 AM
 #18

How about:

1. You give 0.005 * 200 USD = 1 USD in fees and it's taken from the order.  A buy order of 2 BTC at 101.0 USD is created.  You're left with 200 USD in your wallet.  After the order is executed, you'll have 2 BTC and 200 USD.

I think that one would be great.

While I appreciate the elegance of this method (when money comes in or out, the sum is always what you specified), I feel that it can give the user a wrong impression of what is happening. Imagine the outcry if someone had placed a sell order at $255 during the latest bubble, which wouldn't have been executed simply because actually the sum was $255 + 0.5% = 256.275 (and the bubble popped at $256).

With immediate order, it wouldn't matter - but in the case of a limit order, I want to have precise control of the price .


Just have a little 2-way calculator included in the order form.
You can fill in on both sides, so you could set the amount of money with fee or without, the other part will be calculated automatically (and is visble of course).

QuantPlus
Sr. Member
****
Offline Offline

Activity: 280
Merit: 250



View Profile
April 20, 2013, 04:00:06 PM
 #19

Perhaps it's a good thing to incentivize the liquidity providers.
Also, I think you should welcome professional traders and bots, as that is probably the fastest and best way to achieve high volume and liquidity on the exchange. Sure, that will require you to provision extra network/computing capacity and a good API, but I'm pretty sure that cost is easily outweighed by the "services" they provide to regular users.

All liquidity on financial markets is provided by Professionals...
These are highly skilled people that expect to get paid for providing a valuable social service...
That's why being a trader is an honorable profession... unlike, say, being a poker player.

No Pros = No Liquidity = No Exchange...
Also, when the Pros stop trading you have a "liquidity crunch"... and prices crash.

This whole idea that tiered fees "discriminate" against amateurs is juvenile...
It's the other way around... you must have incentives to attract Professionals.
DPoS
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250



View Profile
April 20, 2013, 11:44:50 PM
 #20

Perhaps it's a good thing to incentivize the liquidity providers.
Also, I think you should welcome professional traders and bots, as that is probably the fastest and best way to achieve high volume and liquidity on the exchange. Sure, that will require you to provision extra network/computing capacity and a good API, but I'm pretty sure that cost is easily outweighed by the "services" they provide to regular users.

All liquidity on financial markets is provided by Professionals...
These are highly skilled people that expect to get paid for providing a valuable social service...
That's why being a trader is an honorable profession... unlike, say, being a poker player.

No Pros = No Liquidity = No Exchange...
Also, when the Pros stop trading you have a "liquidity crunch"... and prices crash.

This whole idea that tiered fees "discriminate" against amateurs is juvenile...
It's the other way around... you must have incentives to attract Professionals.

wow..  way to talk up your game..  I guess you will expect to front run all orders in the name of 'liquidity'

you are doing 'god's work' right?

being a pro trader is not honorable mr moneychanger.. it is a zero sum game where the only money you make is what you take.  You produce nothing.



~~BTC~~GAMBIT~~BTC~~Play Boardgames for Bitcoins!!~~BTC~~GAMBIT~~BTC~~ Something I say help? Donate BTC! 1KN1K1xStzsgfYxdArSX4PEjFfcLEuYhid
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!