Coexisting without Colocating
Solution to HFT coexisting with humans and other computers. Must read by Nanex.
We have thought a lot about how HFT can coexist with human traders and computers that aren’t co-located or wired for speed. We believe a strong and stable market requires a diversity of participants, which isn’t possible when speed is valued above everything else. If everything is wired for speed, then you can count on software engineers wringing every last line of analytical code out of their systems to gain that one extra cpu cycle that will put them ahead. Same goes for error checking. In fact, any code not involved in transmitting an order will be fair game in the race for speed. In an HFT only environment, reaction to news will be instantaneous: shoot first, ask questions later.
We wonder if those who talk about trading at the microsecond level fully realize the infrastructure required to handle that level of trading: just 1 quote per microsecond on 1,000 symbols is 1 billion quotes per second. That rate would saturate a terabit network (a future technology) and completely fill a terabyte drive in about 10 seconds. Is there really any room in that HFT vision of utopia for non-HFT participants with other strategies? And if there is, would they still be required to bulk up on the same CPU’s, network gear, and disk storage required to participate? Because that is the case today.
Recently an exchange that will remain nameless, suggested that traders who aren’t co-located don’t need to see every quote. We couldn’t agree more and replied, “Fantastic. Then how about just sending the quotes that matter?”
At the time our reply was sarcasm, as it is impossible to know which quotes have value and which ones do not. But that got us thinking: what if there was a way to distinguish between quotes that matter and those that are just noise? What if there was a way to distinguish between quotes entered by people with full intentions of buying or selling stock, and quotes entered for the purpose of pinging for liquidity or pretending to show interest, or tricking other algorithms to reveal intentions, or any purpose other than, you know, actually buying or selling stock?
If you could tell which quotes were there for execution and ignore the rest, that would represent significant progress, a leap actually, towards achieving a fair and reasonable market. Likewise, for those who truly want to buy or sell stock, if they could indicate that their quote would stick around long enough that someone could reasonably execute against it, then it would carry more weight in the market than quotes that could be canceled on a whim.
So why not just mark quotes that intend to be executed with a special quote condition? Or even better, mark quotes that could be canceled in less than, say 250 milliseconds, with a special quote condition called immediate. For quotes not marked immediate, simply require that they remain executable for a certain amount of time (say 250 milliseconds) from the time they were created. You just have to make sure each quote is timestamped with the actual time it was created at the exchange.
By making these two simple changes (adding the immediate condition and ensuring timestamps reference the time a quote was created), equity quotes would become infinitely more valuable. A quote from someone wishing to buy stock would automatically carry more value than a quote marked immediate, because it could be executed by more people. Everyone will be able to compute the exact age or delay in every quote (chalk it up to modern computing, trust us on this), and therefore determine if there is enough time to execute against it. Of course, you still might miss a trade if another trader is faster, but that is completely acceptable. Missing a trade because someone cancels a quote before you even receive it, that is unacceptable.
The ability to monitor feed delays in real-time would be a strong incentive for making timely system improvements. It will also avoid the dangerous situation where hidden system delays slowly creep towards a tipping point, only to cross that point at the worst possible time, such as when shocking news hits the market. This is a very real danger in complex networked systems which often show no problems all the way up to 99.9% capacity, only to fail catastrophically if it pegs 100% for too long.
Here is a more technical outline of our proposal.
- Create a new quote condition type called immediate (see Appendix H for existing conditions). Quotes entered into the system that could be canceled within a certain amount of time (say 250 milliseconds) will use the new condition immediate. Immediate quotes are not eligible to update the NBBO: they are practically equivalent toflickering quotes as described in Reg NMS, which exchange centers can already ignore when routing orders. Essentially, we propose tagging flickering quotes with the quote condition immediate, making them ineligible to set the NBBO. Only quotes that will remain executable for a certain minimum amount of time (say 250 milliseconds) after the original timestamp, are eligible to set the NBBO and won’t require the immediate tag.
- Currently, every quote message has a timestamp field which is filled (replaced) by CQS when the quote is ready for transmission (instead of when the quote was created). That means any delays in the system up to that point in time are forever erased and hidden. This practice needs to stop immediately. The original timestamp created by the exchange when the quote record was first created must be retained throughout the life of the quote. We do not advocate adding another timestamp. The original timestamp created by the exchange at the time a quote is created should be what is transmitted in the quote message timestamp field. The end user, the trader or investor, does not care where the delay occurs. They only want to know the existence and extent of any delay. Adding another timestamp would increase the size of every quote message and require unnecessary software changes on every system processing these messages.