Hacker News new | ask | show | jobs
by logfromblammo 4457 days ago
I am not a finance expert. What would happen if you traded stocks using a continual series of discrete uniform price auctions?

Each buyer enters a sealed bid consisting of the amount he wishes to buy, and at what price. Each seller enters a sealed offer consisting of the amount he wishes to sell, and at what price.

When the auction interval ends, the secure settlement system orders the bids and offers, and calculates the common settlement price such that every bid higher than that price can be satisfied with the offers lower than that price. Every unit in the auction is traded at that one price. Unsatisfied bids and offers could be set up to roll over to subsequent intervals, or to expire.

The settlement system takes a fee from all trades, as a fraction of the amount a buyer was willing to pay, but didn't need to, and a fraction of the amount a seller got in excess of what he wanted. The marginal buyer and seller, who were not pleasantly surprised by the interval's settlement price, pay nothing.

There is no opportunity for front running. If you bid lower than a major institution, your orders will be filled after the institution's orders. You can't re-sell to it at a higher price because it already has what it wants. Trading speed is irrelevant. All that matters is that your orders are in before the settlement interval closes, which happens on a human scale.

Why would such a system be unsuitable for our modern finance system?

2 comments

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.

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.

1) No one would submit any bids until the last possible millisecond before the auction closed so that they could gather as much information as possible to inform their bid.

2) Bid/ask spreads would increase dramatically because market makers would be taking on far more risk of dramatic price changes in between auctions. This would dramatically increase costs to you, the investor.

Sealed bid. No information is available except the volume and price from clearing the LAST auction.

I'm not aware of any reason why market makers would be required in such a system. Market makers are used in continuous trades such that price information can be continuously reported. There is no such need here.

Your objections seem to indicate that I did not explain my proposal such that you could easily understand my intent.

Ok, with the extra comments I now understand your proposal is much more radical than I originally thought. You are suggesting a completely obscured order book. I don't know of any markets that operate that way so I don't have any proof about how well price discovery would work in that system. My instinct is that most participants would become very nervous about setting their prices and therefore the spreads would be very wide, and not much trading would occur.

That said, your system still doesn't address the priority issue. Lets say in your new bid system we got lucky and a lot of people without knowledge of the order book picked the same price for both buying and selling an instrument. But there were more people on the buy side than the sell side (or vice versa). Who gets filled and who doesn't?

If there were more numbers on the buyer side, all buyers exactly at the clearing price would have an equal fraction of their order filled.

If buyers at $10 or lower want 300, 100, and 10, and sellers at $10 or higher have 205, and the clearing price is $10, then each buyer at $10 or lower gets 50% of what he wanted.

Everyone who bid higher buys everything they wanted. Everyone who bid lower buys nothing.

Simply put, the algorithm to find the clearing price is similar to drawing supply and demand in your high school micro-economics class. The bids are put in order, highest price to lowest, forming the demand curve. The offers are put in order, lowest to highest, forming the supply curve.

At the point where they cross, if they cross, is the price and quantity that gets traded. The system knows, but does not publicly reveal, the amounts that the buyers and sellers who actually traded in this auction would have still traded at.

In continuous trades, the difference does NOT go to the buyer or seller. It usually goes to a professional middleman. Therefore, the current system is optimized to capture as much of this benefit as possible for the middleman. But it still leaves tiny sawtooth areas close to the curve that cannot be captured unless you can trade on infinitesimal time slices for arbitrarily precise fractions of a dollar.

Clearing multiple trades at once means that the arbitrageur can only capture value from the marginal buyers and sellers, if anyone, and everyone else can actually enjoy the benefit of trade. The amount taken by the exchange is one trangular area, rather than multiple rectangles, thus has no deadweight loss.

I don't know of any systems that implement equal % matching algorithms but I'd expect it would encourage games where you just send in more smaller orders (hiding their relation to each other if you are particularly shady) so that you would improve your fill rates.

Your hidden book time auction idea is not one I've seen implemented. Again I think it would be very detrimental for price discovery but can't prove that.

Just trying to think of it as a market participant, how do I determine what price I should bid or offer?

I can also think of all kinds of ways for this system to be gamed. The first thing I would try if I were making markets in this system is to ladder small quantity orders right around the last trade price. Then when you get filled on these orders they would act as high/low water marks letting you zero in on the correct price.

Not sure why I would want to encourage this sort of gaming instead of an open book, but I'd certainly like to try it if you ever create your exchange.

[Edit] re-read original comment and realize it is not pro-rata matching.

1) Sealing the bids certainly contains some information but what about, you know, the real world. Lots of things are continuing to happen in the real world that effect the value of securities. I want to incorporate as much of that information as possible into my bid so I'm gonna wait until the last possible moment to submit my bid.

2) Bid/ask spreads would increase for regular people not just market makers. If you increase the restrictions under which something can be traded that ads risk to making a trade. That will push apart spreads. The existence of market makers is orthogonal to that principal.

Large bid/ask spreads benefit buyers and sellers if they are allowed to keep the benefit of trade trade for themselves.

If I would pay $10 to buy, and a seller would accept $8 to sell, and the clearing price is $9, we each benefit.

If The seller sells at $8.01 to a middleman, who sells at $9.99 to me, only the middleman benefits. He has captured almost the entire benefit of trade from us.

Spreads do not matter here. The buyer and seller agree to trust a third party cartel enforcer to keep their trade information secret for the express purpose of excluding arbitrageurs. They do this because they can then get higher prices for what they sell, and lower prices for what they buy.

If the earnings report is scheduled to be released in the middle of an auction interval, yes, you might want to wait before using the system. But you might not care. Your numbers might be based upon research rather than speculation. This system is designed to be more friendly to the people who trade based on what the goods at hand are worth to them, rather than how much money they can make speculating on movements in the price. That's the whole point.

Your objections seem to be that the people who make a lot of money in the current system can't do that as easily here. Again, that's the point. As I see it, the people making the most money are providing the least value, while also trying to pretend that no one could live without them.

What if they could all be replaced by a very short shell script?

> If I would pay $10 to buy, and a seller would accept $8 to sell, and the clearing price is $9, we each benefit.

That's not how bid/ask spreads work. You have it backwards. A big spread is when the highest anyone willing to pay is $8 and the lowest anyone is willing to sell for is $10.

Large bid/ask spreads hurt both buyers and sellers because as soon as they make a trade they are already in a hole (that they hope to make up by overall movement in the security).

That trade is not going to happen, man. That's another way of saying that everybody is already perfectly happy without trading at all.

If trade volume is zero, the auction reports the price as whatever the most desperate seller would accept. Anyone who wants to actually buy in the next interval should probably offer more than the value reported in the previous interval.

But since the trade orders are secret, you don't actually know how big the spread is. You only know how much traded at the last price. Again, you are very intently focused on something that has very little relevance to the proposed system.

You have no way of knowing what the spread is. That is intentionally hidden via a cartel arrangement to exclude arbitrageurs. No one trades unless everyone is happy with the trade. If no trades occur, everyone was already happy enough with what they have. That is not a problem that needs fixing.