The NASDAQ Facebook IPO Glitch

Facebook’s initial public offering on May 18, 2012 was one of the most anticipated market debuts in history, and the technology meant to open trading buckled under it. The authoritative account is the SEC’s order instituting settled administrative proceedings against The NASDAQ Stock Market and NASDAQ Execution Services (Release No. 34-69655, May 29, 2013), which describes the software failure and the exchange’s response.

At the heart of the problem was NASDAQ’s “IPO Cross,” the system that calculates a single opening price by matching all the accumulated buy and sell orders for a newly listed stock. The SEC order explains that the cross worked in two parts: a calculation engine determined the opening price, and a separate component checked whether any orders had been entered or canceled while that calculation ran. If orders had changed, the cross recalculated. With Facebook’s enormous order flow, new cancellations kept arriving during each calculation, so the system kept restarting the cross in a loop and could never finish, a classic race condition between order intake and price computation.

Several members of NASDAQ’s senior leadership convened a “Code Blue” call and decided to proceed with trading rather than delay further. They believed they had fixed the loop by removing a few lines of code from the cross logic. The SEC found that the fix did not work as intended: it removed the validation check, which allowed the cross to complete but caused a different failure. As a result, more than 30,000 Facebook orders were stuck in the system for over two hours, neither executed nor canceled, while the stock was already trading in the secondary market.

The order details the consequences. Because the matching engine and the price-validation logic had fallen out of sync, NASDAQ confirmed some orders at stale prices and left market participants without confirmations they needed to manage their positions. The SEC also charged NASDAQ with improperly using its own error account to take on a short position to fill orders, contrary to its rules.

NASDAQ agreed to pay a 10 million dollar penalty, the largest the SEC had then levied against an exchange. The case stands as a vivid lesson in how a race-condition lurking in a rarely exercised code path can surface only under extreme load, and how a hasty in-production fix can convert one failure into another. It is studied alongside other automated-trading-risk failures such as the knight-capital disaster.