← Back to blog

The Flash Crash's $4.1 Billion Sell Order Watched Only Volume. It Sold More Than Half of It After the Market Turned.

On May 6, 2010, a sell program for 75,000 E-mini contracts was paced by one number: the previous minute's trading volume. The CFTC-SEC report shows it sold the last 40,000 or so while prices were rising. Read from the report's own pages, and what the same loop looks like in software that acts on its own.

Published 2 November 2026 · 12 min read · markets / Flash Crash / algorithms / AI agents

By 2:30 p.m. on May 6, 2010, U.S. markets were already having a bad day. The VIX, the market's gauge of fear, was "up 22.5 percent from the opening level," and selling had pushed the Dow "down about 2.5%." Buyers were thinning out. In the E-mini S&P 500 futures contract, the place where large investors hedge stock positions, the resting orders to buy had fallen "from the early-morning level of nearly $6 billion dollars to $2.65 billion (representing a 55% decline)."

At 2:32 p.m., according to the joint report the staffs of the CFTC and the SEC published that September, "a large Fundamental Seller (a mutual fund complex) initiated a program to sell a total of 75,000 E-Mini contracts (valued at approximately $4.1 billion) as a hedge to an existing equity position." The report never names the firm. Reuters, citing an internal exchange document, identified it as Waddell & Reed, which said its trades that day were "part of the normal operation of our flexible portfolio funds."

The sale was handed to an algorithm, and the algorithm was given one instruction. It was "programmed to feed orders into the June 2010 E-Mini market to target an execution rate set to 9% of the trading volume calculated over the previous minute, but without regard to price or time."

The rest of the afternoon follows from that sentence.

One input instead of three

Selling 75,000 E-minis was not new to this trader. The report found only two single-day sell programs of equal or larger size in the twelve months before May 6, "one of which was by the same large Fundamental Seller." That earlier sale used "a combination of manual trading entered over the course of a day and several automated execution algorithms which took into account price, time, and volume." On that occasion "it took more than 5 hours for this large trader to execute the first 75,000 contracts."

On May 6 the program was set "to only target trading volume, and not price nor time," and it "executed the sell program extremely rapidly in just 20 minutes."

So this was not a story about a firm that trusted a machine for the first time. This trader had sold the same size before, partly by hand and partly with algorithms that weighed price, time and volume, and it had taken hours. What changed on May 6 was the number of things the program was listening to. Price could fall as far as it liked, and the clock could say the order was going out fifteen times faster than last time. Neither was an input. Volume was the only input, and volume was about to become the least trustworthy number in the market.

A number it helped make

High-frequency traders bought at first. Through the early part of the sale they built "a net long position of about 3,300 contracts." Then, "between 2:41 p.m. and 2:44 p.m., HFTs aggressively sold about 2,000 E-Mini contracts," and in those minutes they traded "nearly 140,000 E-Mini contracts or over 33% of the total trading volume."

Volume rose, so the program sold faster. The report puts it plainly: "The Sell Algorithm used by the large trader responded to the increased volume by increasing the rate at which it was feeding the orders into the market, even though orders that it already sent to the market were arguably not yet fully absorbed by fundamental buyers or cross-market arbitrageurs."

The volume it was reading was partly its own echo. As buyers disappeared, the report describes HFTs beginning "to quickly buy and then resell contracts to each other," passing the same positions back and forth in what it calls a "hot-potato" volume effect. "Between 2:45:13 and 2:45:27, HFTs traded over 27,000 contracts, which accounted for about 49 percent of the total trading volume, while buying only about 200 additional contracts net." A meter that counts trades read that as a busy, liquid market. It was the opposite. Buy-side depth in the E-mini "fell to about $58 million, less than 1% of its depth from that morning's level," and the price "dropped by an additional 1.7% in just these 15 seconds, to reach its intraday low of 1056." From 2:41 to 2:45:27 the contract had fallen more than 5%.

The report drew the lesson in one line, and repeated it among its conclusions: "In fact, especially in times of significant volatility, high trading volume is not necessarily a reliable indicator of market liquidity."

Five seconds

The fall did not end at a person, or at the market-wide circuit breakers. Those never fired. The SEC said so two years later: "The market-wide circuit breakers were not triggered during the severe market disruption of May 6, 2010."

What fired was a small, price-based rule inside the exchange. "At 2:45:28 p.m., trading on the E-Mini was paused for five seconds when the CME Stop Logic Functionality was triggered in order to prevent a cascade of further price declines." Five seconds later, "when trading resumed at 2:45:33 p.m., prices stabilized and shortly thereafter, the E-Mini began to recover."

The report's own reading of that pause is the most useful sentence in its lessons: "pausing a market can be an effective way of providing time for market participants to reassess their strategies, for algorithms to reset their parameters, and for an orderly market to be re-established."

It kept selling into the rebound

This is the part of the story that the short version leaves out. The sell program did not reset anything. It had no parameter that cared which way the price was going.

"Between 2:32 p.m. and 2:45 p.m., as prices of the E-Mini rapidly declined, the Sell Algorithm sold about 35,000 E-Mini contracts (valued at approximately $1.9 billion) of the 75,000 intended." Then the market turned, and the program kept going. "The Sell Algorithm continued to execute the sell program until about 2:51 p.m. as prices were rising in both the E-Mini and SPY. Between 2:45 and 2:51 p.m., the Sell Algorithm sold the remaining 40,000 E-Mini contracts or so (valued at approximately $2.2 billion) of the 75,000 intended."

More than half of the order, about 53% of the contracts and about $2.2 billion of the $4.1 billion, went out after the market had turned around. Taking the report's own window boundaries, which it gives in round minutes, the program sold roughly 2.5 times faster in the six minutes of recovery than in the thirteen minutes of decline. That rate is my arithmetic on figures the report marks "about" and "or so," so treat it as a shape rather than a measurement. The report's footnotes point the same way from another direction: about 51% of the first 35,000 orders "were executed aggressively," taking resting liquidity, against about 60% of the last 40,000.

None of that is strange once you look at the instruction again. A program paced by volume has no idea of direction. A crash is loud, and so is the recovery from one. The program sped up in both, because both looked like activity.

The damage that afternoon spread far beyond one futures contract. "Over 20,000 trades across more than 300 securities were executed at prices more than 60% away from their values just moments before," many of them "at prices of a penny or less, or as high as $100,000, before prices of those securities returned to their 'pre-crash' levels." Accenture's bids fell "in seven seconds from about $30 at 2:47:47 p.m. to $0.01 by 2:47:54 p.m." By the close, the major indices had "'recovered' to close at losses of about 3% from the prior day."

Who caused it is still argued

The pacing rule is the part every source agrees on. The blame is not.

The report itself is careful. It is a staff report, and its cover says "The Commissions have expressed no view regarding the analysis, findings or conclusions contained herein." Its lesson about the sale is conditional: "under stressed market conditions, the automated execution of a large sell order can trigger extreme price movements, especially if the automated execution algorithm does not take prices into account." Waddell & Reed said that "like many market participants," it "was affected negatively by the market activity of May 6."

Five years later the CFTC charged a trader, Navinder Sarao, who had "modified a commonly used off-the-shelf trading platform" to layer "four to six exceptionally large sell orders." On May 6, the agency said, he used the Layering Algorithm "continuously, for over two hours," "applying close to $200 million worth of persistent downward pressure on the E-mini S&P price," which "contributed to market conditions that led to the Flash Crash." The word was contributed, not caused. In 2016 he admitted the allegations in the CFTC's complaint and was ordered to pay a $25.7 million civil penalty and $12.9 million in disgorgement, more than $38 million in all, and he pleaded guilty to wire fraud and spoofing. In 2020, his lawyers said, a federal judge sentenced him to the four months he had already served, plus a year of home confinement.

The high-frequency traders were studied with the audit trail itself. The published version of that work, in The Journal of Finance in 2017, found that their trading pattern "did not change when prices fell during the Flash Crash."

So the honest claim here is narrow. It is not that one fund, or one algorithm, broke the market. It is that a $4.1 billion order was handed to a loop with one input, and the one input was a number the loop itself, and the traders reacting to it, were inflating.

The fix was more price, at a finer grain

Regulators did not respond by banning algorithms. They added more of the kind of check that fired at 2:45:28: a price check, applied smaller and faster. In 2012 the SEC approved a "limit up-limit down" mechanism that "prevents trades in individual exchange-listed stocks" outside a band set at "a percentage level above and below the average price of the security over the immediately preceding five-minute period," with "a five-minute trading pause" if trading cannot occur inside the band "for more than 15 seconds." The market-wide breakers were rebuilt too: lower thresholds of "7, 13, and 20 percent," based on the S&P 500 "rather than the Dow Jones Industrial Average," and "recalculated daily rather than quarterly."

Every one of those is a second input that a few seconds of frantic trading cannot easily move. Volume can be inflated by two traders handing the same contract back and forth. A band anchored to the average price of the past five minutes moves slowly, so a spiral measured in seconds cannot drag it along.

The same loop in software that acts on its own

Anyone building agents will recognize the sell program's shape, because it is the default shape of an automated loop. You give it a goal and a budget, and you pace it by some measure of activity: messages in a queue, tool calls returned, retries succeeding, tokens flowing, requests per second. Those measures are attractive for the same reason volume was. They are always available, they update every second, and they usually mean what you think.

They stop meaning it when the loop is part of what produces them. An agent that retries a failing call raises the load on the thing that is failing. Marc Brooker's guide to timeouts and retries in the Amazon Builders' Library says it directly: "When failures are caused by overload, retries that increase load can make matters significantly worse," and "Retries are 'selfish.'" An autoscaler that reads its own churn as demand will thrash. Kubernetes ships a damper for exactly that: "The stabilization window is used to restrict the flapping of replica count when the metrics used for scaling keep fluctuating," and by default it holds a scale-down decision for 300 seconds. Anthropic's guidance on building agents makes the same point from the other end, telling builders that "it's also common to include stopping conditions (such as a maximum number of iterations) to maintain control," and that "it's crucial for the agents to gain 'ground truth' from the environment at each step."

The May 6 program had a budget, 75,000 contracts, and a pace. It had no stop condition on the variable the job was actually about, and no second reading that its own activity could not inflate. An iteration budget is not that kind of stop. It tells a loop when it has done enough. It cannot tell the loop that the world it is acting on has changed.

The fixes the market chose translate directly. Pace by a signal you do not generate, or pair the signal you do generate with one you don't. Put a stop on the quantity the task exists to protect, which for a seller is price and for an agent may be error rate, cost, or whether the downstream system is accepting what it sends. And keep a way to pause that is cheap enough to fire in seconds, because on May 6 the market's turn came straight after a pause of five seconds, and the one thing that did not reset was the program.

2:51 p.m.

By about 2:51 p.m. the order was finished. Its last 40,000 contracts or so had gone into a market that had been climbing for six minutes, at whatever pace the previous minute's volume called for. The same trader had once sold its first 75,000 contracts over more than five hours, with price and time in the loop. This time the loop had one number to watch, and it watched it until the job was done.

Sources

The rates and ratios in this piece (the 53% share, the roughly 2.5-fold speed-up, the more than fifteenfold difference against the earlier sale) are my own arithmetic on the report's figures, which it gives as approximate.

If your agents act on their own, keep a record of what each step read and did.

Chain of Consciousness keeps a tamper-evident, dated record in hash-linked entries, so what a loop saw and sent, step by step, can be shown later in the order it happened.

pip install chain-of-consciousness
npm install chain-of-consciousness

Or start without installing anything: Hosted Chain of Consciousness.