Eric Hunsader from Nanex has posted the following bounty:
“We are offering $10,000 to the first person who can show us that there were no missing trades or quotes from Nasdaq in NMS stocks between 11:29:53 and 11:30:09 Eastern Daylight Time on May 18, 2012. Basically, you have to find the missing data for the gaps in the charts on this page.”
There is, however, a problem with this request. He is presupposing that there is missing data. I can easily address the first sentence, and show that there is no missing trade or quote data from Nasdaq for that time period on May 18, 2012. That does NOT mean that I have found “the missing data for the gaps in [those] charts”, as there is no missing data. To understand this, you must first understand how the Nasdaq order entry interface and matching engine operates.
Nasdaq accepts electronic orders via OUCH or FIX ports (OUCH is the name of the binary protocol, FIX is a text-based protocol). Those orders are then sent to a central sequencer (via different paths, depending on which protocol you’re using), where they are assigned a sequence number. Once an order is assigned a sequence number, an acknowledgement message is generated by the sequencer / matching engine, and that acknowledgement is sent back down to the client that entered the order. An order is not considered accepted until it is acknowledged (ack’ed). This is an elegant design, that has other features such as only permitting one un-ack’ed order in-flight between each OUCH/FIX port and the sequencer. That acts to naturally throttle orders and ensure minimal loss in the event of a failure.
Here is a diagram showing the LOGICAL flow (this is not meant to be a physical diagram, just a logical one, showing a very high-level, simplified view of the Nasdaq order entry system - there are obviously MANY other systems than what is pictured here):
On May 18, while trying to price and print the Facebook IPO, Nasdaq systems entered a feedback loop from which they would not be able to escape. Nasdaq engineers quickly pushed out new code that removed the validation loop, as explained by the SEC in their recent report on the record fine that Nasdaq has to pay. In order to activate this new matching code, Nasdaq had to failover their systems - they had to take the primary sequencer / matching engine down, and have all of their systems and clients reconnect to the new one, running the new code that would avoid the validation loop.
At approximately 11:29:53, Nasdaq shutdown their primary system and initiated this failover. It took longer than they expected, almost 17 seconds. During this 17 second time window, Nasdaq was not accepting / acknowledging new orders. When the backup / failover system was finally active, orders were once again accepted and market data began disseminating again. There was no burst when this happened, as there was no queue of orders built up, simply because Nasdaq was not accepting new orders or filling any existing orders. All activity ceased for that time. If there were crossed quotes in the market, they were stale quotes that were no longer valid.
The evidence for this is simple. There is no sequence number gap in the Nasdaq data. If you understand how the Nasdaq matching and sequencing infrastructure works, and you know there was no sequence number gap, then you can see that there is no missing data. I have spent many years studying Nasdaq’s order entry and matching infrastructure, first as a high-frequency trader and later simply as a technology architect who is very impressed with an incredibly scalable, high-performance trading and matching system. I can say definitively, based on the lack of a sequence number gap, that there are no missing quotes or trades. There are no missing, ack’ed orders. Nasdaq was simply down, and failing over during that time.
I accept checks and money orders. :)