Hacker News new | ask | show | jobs
by kasey_junk 4457 days ago
What scale would you use? If we choose 15 minutes, then day traders who sit at a computer screen all day have an advantage over people who have to work.

Ok then, how about once a day. Well then people without kids have an advantage as they have more time to research this stuff.

Not to be overly sarcastic, but you can't pick a discrete time period that doesn't have trading speed as a component.

2 comments

If you set your orders and offers to roll over through multiple intervals, you don't need to babysit them.

You are absolutely guaranteed to pay at most what you bid, and to receive at least your reserve price. You could leave them in the system for a thousand years and never be disappointed in your trade.

I can set my bid at what I think a company is worth to me, and simply leave it there until the clearing price is lower.

I would probably set the interval to one hour, with 24 auctions clearing per day, and each tradable item settling at a different position on the clock, so as to not overload my servers at any given time.

Right now you can get the same guarantees about price with a simple limit order.

If you don't care to watch each time period, why do you care what the time period is. If I am happy to set my price and let it roll throughout the day without change, then the existing system works just fine for me.

The issue comes from wanting to take new information into account to change the price I want to get. In that case, I do need to see the results of each auction and adjust accordingly. Once I allow for that any time period you set is unfair for someone. We just need to decide on the balance what time period has the best price discover/least overhead/is most fair to the participants we want.

My hypothesis is that the current system does this best.

My hypothesis is that the current system is most profitable for the people running it.

Using continuous trades, the difference between the price someone would accept/pay is usually very close to the price they do accept/pay. That's because arbitrageurs are continuously taking tiny little bites from the theoretical benefit of trade to the buyers and sellers until everyone is almost indifferent to trade, regardless of the actual price they had in mind. The trades are spread out by time, such that each one can be attacked separately (by a sufficiently fast attacker).

The system is set up to consume the big triangular areas on the supply vs demand chart that do not actually impact whether a trade takes place.

If you settle multiple trades at once rather than a continual series of individual transactions, there are fewer opportunities to take a bite out of other people's trades by being a very fast middleman.

Also, the only way to test your hypothesis is by comparing it against every other possible trading system. So I'd probably start off with a less ambitious claim, like "the current system is more fair than what Log from Blammo proposed." That way, it could be tested just by setting up the competing system and watching what happens.

I actually think there are lots of trading schemes that could prevent speed being a major advantage, but discrete time auctions are not one. They just change who gets the time advantage. The only way to remove time advantage from the field would be to make it so that order time was not calculated in fill priority. There are markets that do this currently (pro-rata markets give larger orders priority over smaller ones regardless of order time). There are also markets that have tried randomized matching and other esoteric methods. Not many people liked trading this way so volume dried up.

If we really wanted to remove time priority, my favorite way would be to add near infinite price increments. Then if you wanted to pay for priority you could in an explicit way.

I'll buy that my hypothesis was overly broad. Let me rephrase it to, "The current system is way better than the previous system, and I've heard no systems that don't have obvious flaws as compared to the current system."

It isn't just about time. If someone knows what you are willing to pay, they can engineer their trades such that you pay exactly that. When the system itself is not paid unless you pay less than you were willing to pay, there is a built in incentive to not reveal that information to potential middlemen.

In that context, trade speed doesn't matter. If arbitrageurs cannot profit by breaking your trade up into two trades with themselves as middleman, it doesn't matter how fast they are.

Aside from that, any system where trades can occur faster than information can enter your eyeball, process in the brain, and shoot down your arm to click a mouse button is one that unfairly disadvantages the unaugmented human participant.

Some people have proposed the round-trip time from New York to Tokyo at the speed of light as a "speed limit" for trading. That works out to something on the order of 70 ms.

At the very least, it would eliminate the advantage gained from collocating your hardware next to the exchanges' servers.

Why would it do that? If I'm colocated and you aren't, I have 70 ms latency, you have 70 ms + the distance to your servers.
I'm not an expert, but I think the idea is that the exchange would operate on some kind of "tick" cycle, so it would not be first-come-first- serve.

If you're collocated, you can place your order sooner, but before executing any of the orders, the exchange will wait 70 ms (or whatever) before trying to reconcile them (based on an auction system or similar).

So you can have low-latency, but it won't buy you any advantage, because being fast won't allow you to front-run other orders from further away.

Ok as with all discussions about introduced latency, randomized latency, etc. The issue is not so much about latency, it's about fill priority when there are more people on one side of the buy/sell book at a given price point than on the other. Who gets left out?

Most (but not all) markets currently use price then FIFO for the matching algorithm. If you don't change the matching algorithm all the fake latency in the world won't make a difference to the game. If you are going to change the matching algorithm, what are you changing it to?

You aggregate all trade offers in a given time interval. You line them up in order of their price. Buyers are ordered highest to lowest. Sellers are ordered lowest to highest. Continue matching units until the buy price is lower than the sell price. Back up one. The average of the buy and sell prices for that unit is the clearing price. All the units to the left get traded. Everything to the right expires or rolls over to the next auction.

In case of ties, there is no tiebreaker, so any orders that can't be filled at exactly filled at the clearing price are filled as much as possible in as close to equal proportions as possible. For a variety of reasons, there will probably be a slight bias towards filling larger orders by a greater amount.

There is no FIFO. There is only participating in the auction and not. Did you get your orders in before the deadline, or not? The only way to guarantee complete fulfillment of your order is by having a better price than the marginal trader.

Having an order partially filled sucks, but it is your signal that you guessed the clearing price exactly right, and your prize is that you pay no fees whatsoever for your partially filled trade. You beat the system. You didn't beat the other traders, but you beat the system.

The more trade offers there are, the better the whole thing works. But people don't want to wait around forever, either. That's why I think clearing once an hour is a good compromise.

In another comment I mentioned the most elegant way to mitigate fifo priority gaming is to allow extremely high levels of fractional tick price. Something like 1/1000 of a penny would probably be enough.

I still think if you want to eliminate electronic market makers that is simpler and has less unintended consequences.

As I mentioned in another comment without serious protections against it your exchange is going to bias very strongly towards many many single quantity orders (they can't be filled partially after all) and stacked orders around your last trade price.

You also are going to lose lots of large volume orders because most large order investors are less sensitive about price than they are about fill certainty.

That said the more I think about it, the more I think algo shops would love your exchange because price discovery would be so hard. When price discovery is hard there are more opportunities for the "smart" money.