45 Minutes: How a Dead Feature Flag Destroyed Knight Capital
One server out of eight ran old code. A repurposed feature flag woke that code up at the opening bell. By 10:15 a.m., a firm whose trading was about a tenth of all US listed equity volume had lost 440 million dollars and, within a year, its independence.
The firm
In the summer of 2012, Knight Capital Group was one of the largest market makers in American equities. By the SEC's account, its aggregate trading for itself and its customers generally represented approximately ten percent of all trading in listed US equity securities. Its business was speed and reliability: match buyers and sellers, capture the spread, repeat millions of times a day. On August 1, 2012, a new NYSE program called the Retail Liquidity Program went live, and Knight had spent the preceding weeks updating its order router, an internal system called SMARS, to participate. The deployment of that update is one of the most consequential software releases ever made, and thanks to the Securities and Exchange Commission's subsequent enforcement action, it is documented in extraordinary detail. Everything technical below is drawn from the SEC's 2013 order.
The dead code and the flag
Years earlier, SMARS had contained a function called Power Peg. By the SEC's account, Knight had stopped using it in 2003, but the code had not been deleted: it remained present and callable in the router, dormant for nearly a decade.
The new Retail Liquidity Program code needed an activation switch, and the developers repurposed an existing flag rather than creating a new one: the flag that had once activated Power Peg. On seven of Knight's eight SMARS servers, the new code was correctly deployed, so when the flag was set, the new logic ran. On the eighth server, a technician failed to copy the new code. The flag was set there too. And on that one server, the flag did exactly what it had always done: it woke Power Peg.
There was a second, quieter defect with outsized consequences. In 2005, code changes had moved the logic that counted filled orders, the router's sense of "I have bought enough, stop." On the eighth server's old code path, that counting no longer functioned. Power Peg awoke with no concept of done.
45 minutes
At 9:30 a.m., the market opened, retail orders flowed into SMARS, and the eighth server began machine gun trading. Over the next 45 minutes it routed millions of orders into the market and obtained over four million executions in 154 stocks, at machine speed, with no fill tracking to stop it. The SEC records that in 75 of those stocks Knight's executions were more than a fifth of the trading volume and moved prices by more than five percent. Knight's staff saw anomalies almost immediately, but the diagnosis was agonizing: seven servers were behaving perfectly, and the errant orders carried no obvious signature pointing to the eighth. In one of the incident's cruelest details, engineers' early responses included uninstalling the new code from the seven healthy servers, which spread the old code, and the problem, wider. The SEC order also records that an automated system had emailed warnings referencing Power Peg before the open, 97 messages that were not recognized as the alarm they were.
By the time the trading was stopped around 10:15 a.m., Knight had accumulated unwanted positions of roughly 3.5 billion dollars long and 3.15 billion short. Unwinding them produced a realized pretax loss of about 440 million dollars by Knight's own account, roughly ten million dollars a minute; the SEC's order puts the loss on those positions at more than 460 million. Within days, Knight required a 400 million dollar rescue financing to survive; within a year it had merged with Getco. The SEC fined the firm 12 million dollars for violating the market access rule, in the first enforcement action under that rule.
What it teaches
The Knight collapse is the canonical text on deployment hygiene, and its lessons are unusually concrete. Dead code is live risk: anything that can be activated in production must be treated as production code or deleted. Feature flags are interfaces with history: repurposing an old flag couples your new feature to every behavior that flag ever controlled, on every machine that ever heard of it. Deployment verification is a test: "we deployed to all eight servers" is a claim, and claims about production must be checked by machinery, not assumed by people. And capital controls are the last line: a router that can build a multibillion dollar position in minutes needs limits that do not depend on the router's own health. None of these lessons required hindsight. Each control the SEC faulted Knight for lacking was available, known practice in 2012. That is what makes this incident a complete catalogue of preventable failure, priced to the dollar and timed to the minute.
Sources
6 sources
Every figure in this article traces to one of the following: the same record the episode cites.
US Securities and Exchange Commission2013
Knight Capital Group (Form 8-K, Exhibit 99.1)2012
Knight Capital Group — Form 8-K, 6 August 2012
Knight Capital Group2012
Knight Capital Group (Form 8-K, Exhibit 99.1)2012
Knight Capital Group and GETCO Complete Merger
KCG Holdings, Inc. (PR Newswire)2013
SEC Charges Knight Capital With Violations of Market Access Rule
US Securities and Exchange Commission2013
