Nasdaq's Facebook Glitch Came from Race Conditions

Nasdaq may pay out as much as $13 million due to a hard-to-find software bug
By Joab Jackson
News May 22nd 2012

The Nasdaq computer system that delayed trade notices of the Facebook IPO was plagued by race conditions, the stock exchange announced. As a result of this technical glitch in its Nasdaq OMX system, the market expects to pay out US$13 million or even more to traders.

A number of trading firms lost money due to mismatched Facebook share prices. About 30 million shares' worth of trading were affected, the exchange estimated.

On Friday, Nasdaq had delayed Facebook's IPO by 30 minutes. For about 20 minutes, the exchange stopped confirming trades placed by brokers, who were unable to see the results of their orders for more than two hours.

The problem stemmed from Nasdaq's IPO Cross, a pre-IPO auction process the exchange put in place in 2006 that allows traders to place orders and agree on an IPO price before the stock is officially launched, according to a Nasdaq statement issued on Monday.

Typically, in the minutes before an IPO launch, IPO Cross will run an auction in which traders can put in bids, and then calculate an opening price using these auction bids. The opening price would then be fed to the Nasdaq tape. After the opening price is calculated and just before it prints its opening price to the tape, IPO Cross checks to see if any additional orders have been placed since it started its calculation. In Facebook's case, additional orders kept coming in, which caused IPO Cross to recalculate the price multiple times, resulting in the delay past the 11 a.m. scheduled opening.

The problem was only fixed at 11:30 a.m., when Nasdaq switched to a backup version of the IPO Cross matching engine, which allowed the stock to go live on Nasdaq. Unfortunately, this secondary instance of the engine used calculations made at 11:11 a.m., ignoring any bids entered in the system since then. Also during this time, some customers did not receive order confirmations or had their connectivity from their own systems momentarily cut. Orders entered between 11:11 a.m. and 11:30 a.m. were not executed until after 11:30 a.m., resulting in trades that were not fully understood by brokers.