See this discussion on the Quant Finance Stack Exchange:
The short summary is no one can come up with something better than price-time priority for matching orders.
True, the HFT folks would still try to provide liquidity by maintaining a bid/ask spread. But every trade that executes because someone wanted to trade while the price was somewhere between the bid and the ask would cut the HFT folks out of the loop to the benefit of everyone else. And scary anomalies like the flash crash would be impossible.
After careful thought I am sure that it would not eliminate HFT. But it would reduce their size and impact on the market.
The key point of what I suggested is that the price drifts slowly, and orders can only execute at the current price. In today's market the price can move instantaneously.
That's a pretty big difference.
Part of the problem that others are having understanding you (assuming your system is, in fact, better) is that you don't seem to be giving a full explanation that relates to the actual order book initial conditions and new incoming order flow. I'm not an expert by any means, but I can't understand, concretely, EXACTLY how your proposal is intended to work. It feels hand-wavy to me, which usually means that an idea isn't fully-formed. (I mean no disrespect here; just stating my perception.)
I WANT the price to move instantaneously, even though my only interface is via Etrade's retail and mobile site, and I probably execute 400 trades a year. I strongly prefer instant over a few pennies here and there, even though I'm at a (at least theoretical) disadvantage in terms of market access as compared to the HFTs.
See the first post in the series. This is exactly how the markets work. The best price always wins.
If the bid/ask is $10.00/10.05, and I offer to buy at $10.05, I will trade immediately. If I offer to buy at $10.03, I jump the queue and will be the first to trade (provided someone is willing to sell at $10.03 or lower).
Suppose that the bid/ask is $10.00/10.05. Suppose that I am willing to buy at $10.20.
In today's market I will immediately make the trade at $10.05.
In my suggested market there is another fact to consider, the price. Suppose that it is $10.03. Then I become an outstanding buy order, and for as long as I am outstanding, the price will drift up. If the price reaches $10.05 without finding a seller, then I will trade at $10.05 with the HFT folks. But if a seller who is willing to sell at $9.90 comes along before that happens, we will trade with each other at the current price and leave the HFT folks out of the loop.
My suspicion is that, if this were implemented, a large fraction of trades would actually execute in the middle ground between what the HFT traders are willing to offer as a bid/ask. Therefore this would be even better for actual speculators than the current system. HFT players would still be in that market, but they would not be as important.
In short the difference with my system is that trades may have a small delay before they execute, but should execute at the same or better price for me than the existing market mechanism.
Your idea is definitely interesting. It certainly slows down price discovery, though probably not enough to matter.
I'd need to think more carefully about whether it's a good idea or not, but it's definitely the best suggested tweak to market mechanics I've heard in this thread (or the last one).
So when you say a price drifting upwards, that means that both buyers and sellers meet at that price. A corollary is that there were buyers and sellers at that price. In addition, this also means that the market could have also moved away from that price without a trade being executed (ie after major announcements -- last trade 10.50, next bid/ask 8.75/8.80)
So given that, "If the price reaches $10.05 without finding a seller" this statement does not make much sense and/or is irrelevant.
>then I will trade at $10.05 with the HFT folks. Secondly, there is nothing to differentiate, nor should there be, a HFT trader and an individual trader. A trade is a trade. From a buyer's point of view, it doesn't matter if you buy XYZ from MomPop Co vs UltraHFT Co. A trade is a trade.
>But if a seller who is willing to sell at $9.90 comes along before that happens, we will trade with each other at the current price and leave the HFT folks out of the loop. This is currently true right now. If someone enters a sell order below the bid, the trade is executed at the bid price (or whatever is at the top of the order book). It will knock out all the orders up to the limit price that is set.
Also as I mentioned above, "current price" (ie last executed) has no meaning. In the case of of the major announcement, last executed could be far off from the current order books.
>My suspicion is that, if this were implemented, a large fraction of trades would actually execute in the middle ground between what the HFT traders are willing to offer as a bid/ask. Nothing you suggest is anything different from the current system.
Take that blinder off.
In the model that I suggest, the price is a number set by the exchange that trades are allowed to happen at, that moves in a predetermined fashion. Even if there are buyers and sellers who are willing to trade at a different price right now, the exchange won't allow that trade to complete until the price set by the exchange goes into a range where that trade can happen.
Under this model, which IS NOT how the market currently works, the people who have an opinion on which direction the stock will go will experience trading delays, but they have an improved opportunity of making trades in the middle of the range that market makers would be willing to offer.
Define: Last Trade: amount that the trade last executed. Order: Bid or Ask order on the order books.
So, let's use your example of bid/ask $10.00/$10.05 and last trade of $10.03 You place a buy order at $10.20.
What you are suggesting is that the market sees if there is a sell order at $10.03. If there is, it executes. If there is not, it moves to $10.04. Again, it checks to see if there are any available sell orders at $10.04. If not, it goes to $10.05 and sees if there are any sell orders at $10.05. Since $10.05 is at the top of the order book, the trade executes.
Am I understanding this correctly? We both agree that in this given state, the trade will never execute at any other price other than $10.05.
So, you added that a seller comes along and places an ask order at $9.90. We now have a crossed book (bid greater than ask). So what price does this execute at? You suggest $10.03 because that was the last trade.
I would argue that this would be incorrect.
Let's take the scenario of a low volume security. Let's say it's a far out of the money or far in the money option. If you follow the market, you'll see that often times, the volume of these trades are maybe 1 or 2 trades per day. You will often see that the Last Executed price is often either above the bid/ask spread or below the bid/ask spread.
Take for example, CAT Jan 14 $110 PUT. Last trade is $20.45. Current Bid/Ask Spread is $21.80/$22.15. The last trade is almost 7% discount of current market value.
So, let's use this CAT example. Current order book shows $21.80/$22.15. Last trade is $20.45. A buyer comes in with an order at $25 and a seller comes in with an order at $20. What price gets executed?
>Even if there are buyers and sellers who are willing to trade at a different price right now, the exchange won't allow that trade to complete until the price set by the exchange goes into a range where that trade can happen. Please explain this sentence further. It makes little sense. The only way that buyers and sellers can trade is if they cross the bid-ask spread. If you are saying that two other people are willing to make a trade, that means that they've cross the bid-ask spread. In theory, the "price" that you mention should be in the middle of the bid-ask spread.
Let's use a concrete example: Going back to your $10.00/10.05 - last trade: $10.03 Am I understanding correctly that if someone places a buy order at $10.05 (ie order book $10.05/$10.05; last trade: 10.03) that that trade will not get executed? What happens in that scenario? Does the price rise to $10.04? (ie order book: $10.05/$10.05; "price": $10.04) In this case, the trade does not execute neither, even though two people are willing to trade at $10.05. So the "price" rises to $10.05 and the trade executes. If this is the case, as a trader, I would front run the seller at $10.05 and put a sell order at $10.04. Anyone that sets a long dated limit order will be at an disadvantage; this will encourage speed.
In this type of market mechanism, you'll see more trades move to OTC. If I find another individual that is willing to make a trade, I will do it off the exchange rather than on the exchange.
Lastly, please explain how you would be able to distinguish between an HFT trader and a regular trader? Does it make a difference? Why is it better for individual investors that they only trade with other investors?
>but they have an improved opportunity of making trades in the middle of the range that market makers would be willing to offer. This currently happens as it is. By SEC regulation, brokers are required to find the National Best Bid/Offer (NBBO) when you make a trade. In addition to this, brokers can perform Price Improvement actions and execute trades at better than NBBO (ie buy lower than ask/sell greater than bid). For example, ETrade has an 85.5% rate of price improvement. (https://us.etrade.com/e/t/activetrading/apptemplate?gxml=sca...)
Incidentally, I wrote a post about this market mechanism here: http://www.fatwallet.com/forums/finance/1004723/
Please forgive me if I am not understanding what your are suggesting, but a lot of what you are suggesting seems like it will not work in the real world.
The critical thing is (I think) the concept of price takes time to move, making it possible for use the liquidity that exists without HFT, but still letting HFT cover the gaps.
For the example below, we suppose this new price can only move $0.01 a minute (obviously real thing would be more complex, but this makes things simple.)
Then, the bid/ask is $10.00/$10.05 and the current price is $10.03. By placing a buy order at $10.20, the price will start trending upwards. So, if no-one comes along to trade in the next two minutes, the price will reach $10.05 and the order will fulfill since there are sellers at $10.05. This will clear the buys and the "pressure" on the price will return in to between the bid/ask spread.
On the other hand, if a seller comes along after a minute and places an ask at $9.90, the trade will complete at $10.04, and both traders benefit.
I'm not sure what the implications are but I'm not sure if you understood the time-varying, averaged price concept btilly was proposing.
In the CAT example, I would expect the price to have trended to between the Bid/Ask spread from the last trade price (say it's $22.00) So that's where the order can execute if buyer and seller arrive at the same time.
Again, I have no idea if this is good idea and the mechanics seem over complicated, but thought it was worth pointing out what might be a good idea.
In warfare, it pays to react faster than your opponents. You don't have time to think slowly about how you're going to shoot. You'll just have to shoot accurately and utilize tactics that you already know.
There is no compelling social reason why we should reward smarts in this case.
At any rate, the current system is much better than rewarding the tallest guy with the ugliest jacket.
Now since speed is no longer a barrier to entry, the spoils will go to the people willing to provide the most liquidity.
By spoils, I mean the returns to market making. Right now market makers are largely rewarded for being the fastest and beating out other market makers rather than for providing the most liquidity to speculators/investors.
The markets do not do that automatically. Before automated trading, Alice could sell, but would probably have had to do so at significantly less than $10/shr, even if the market was indicating $10 was the true price of XYZ. Bob could buy, but would probably have to do so at significantly more than $10.05/shr. The primary reason for that: human beings skimming from Alice and Bob, because there was no effective way to compete.
The order book now looks like:
SELL BIG - 1000 $600
SELL SPEEDY - 200 $600
-----
Buy SPEEDY - 200 $599
BUY BIG - 1000 $599
A buy and sell order comes in for 200 shares at market, and SPEEDY makes $200. BIG makes nothing. The problem is that BIG is offering more liquidity to the market (1000 shares vs 200), but all the rewards go to SPEEDY. With a pro-rata, BIG would make $166 and SPEEDY would make $33.
Pro-rata rewards volume, FIFO rewards speed. It is debatable which is better.
It also looks like "Speed" and "Bigness" are orthogonal issues; you're just irritated that "Speed" got to the book first. But "Speed" is getting compensated for soaking up more risk; because "Speed"'s order fills first, "Big" has more time to react to negative market changes.
Note that in any case, traders are penalized in a variety of other ways for laying large block orders onto the book.
SELL BIG - 1000 $600 ----- Buy SPEEDY - 200 $599 BUY BIG - 1000 $599
Another buy order at $600 comes in and BIG makes the trade.
Now the order book looks like this:
SELL BIG - 800 $600 ----- Buy SPEEDY - 200 $599 BUY BIG - 1000 $599
At this point, SPEEDY wants to get back in so he offers 200 shares @ $600. The Order book now looks like this:
Buy SPEEDY - 200 $600 SELL BIG - 800 $600 ----- Buy SPEEDY - 200 $599 BUY BIG - 1000 $599
So now SPEEDY is sitting behind BIG and has to wait until all 800 shares of his order soaks up the market.
So, where is the problem?
What if the exchange traded once every 5 seconds in a blind auction, then there would be no real advantage to speed. Each computer would have 4.5-4.95 seconds to parse the auction results and post new orders.
Would this exchange be more or less liquid? (I don't know, but it is interesting to think about.) The barrier to entry to be a market maker would be lower. The market making code would look more like Poker bot code, rather than what HFT does now.