The Deepest Water Is at the Close
Suneet Malhotra
Jul 05, 2026
US markets were closed Friday for the Fourth, and they reopen Monday. That gap is a good moment to write about the part of the trading day I paid the least attention to when I built my engine: not which price I get, but which minute I ask for it. Liquidity is not a constant you can assume is standing there whenever you send an order. It has a shape across the day, and most of it arrives in a single event I was not using.
A tenth of the day trades in one print
The closing auction is the single largest liquidity event of the US equity day. Near the end of regular hours the exchange stops matching orders one at a time and instead collects all the buy and sell interest into one batch, then crosses it at a single price: the official close. Close to a tenth of the whole day's volume executes in that one print. On index rebalance days and options expirations it can run past a fifth. Nothing else in the session concentrates that much size at one price at one instant.
That is not how I pictured a market when I started. I pictured a continuous stream, a bid and an ask standing there all day, roughly the same depth at eleven in the morning as at three thirty in the afternoon. The real shape is closer to a U. Volume and spreads are heavy and wide at the open while the overnight news gets priced, thin and quiet through the middle of the day, then deep again into the close. And the U is lopsided now. The close has grown to dominate the open, because of who trades there and why.
Why the close eats the day
The reason is passive investing, and the mechanism is arithmetic, not preference. An index fund is measured against a benchmark that is struck on closing prices. If the fund fills at any other time of day, its price can differ from the closing mark it is graded against, and that difference is tracking error, the one number a passive manager is paid to keep near zero. So the structurally correct time for an index fund to trade is the close, where its execution price is the benchmark price by definition. As indexing has taken a larger share of the market, more and more flow has migrated to that single moment. The research puts a number on the pull: a one percent rise in passive ownership of a stock lifts its closing-auction turnover several times more than it lifts turnover in the minutes just before. The close is not busy by accident. It is busy because a growing class of the market is required to be there.
What that means for an engine
Here is the part that reframed execution for me. My engine, like most retail systematic engines, sends its orders during continuous trading, and it holds positions across sessions with no flatten-by-close rule. So the typical fill lands somewhere in the thin middle of the day, which is exactly where the spread is widest as a fraction of price and the resting depth is smallest. I was routing into the shallow part of the pool and never touching the deep part. The deepest, most competitive liquidity of the entire session is a scheduled auction, a market-on-close order is the ticket into it, and I was not buying a ticket.
The catch is that deep is not the same as neutral. The closing auction is deep precisely because it is crowded with one-directional, non-discretionary flow. On a rebalance day the index funds are all leaning the same way, and a small order that joins them gets an excellent fill while a large order that fights them pays for the privilege. So the close is not a free upgrade. It is a different regime with its own edge and its own trap: cheap access to enormous size, on the condition that you are not the size everyone else is trading against.
The general lesson is the one I keep relearning about execution. Price is what I was watching. Timing is what I was ignoring. A market order is a request for whatever liquidity happens to be standing there when it arrives, and how much is standing there is not a constant. It has a clock. The best-stocked minute of the day is the one right before the exchange stops trading, and for months my engine walked past it every afternoon on its way to a thinner fill.
Share this post
You Might Also Like
A Retry Is Not a Trading Decision
A rejected order is a decision. Retrying it without preserving the reason can turn a risk control into a duplicate trade.
Quantitative TradingThe Market Is Closed Is Not a Trading Rule
A backtest can know the exchange hours and still schedule a trade into a holiday, an early close, or a stale session. Calendar state is market data.
Agentic AIThe Log Is Part of the Agent's Interface
An agent that can act but cannot leave a useful decision record is not autonomous. It is an opaque process with write access.
Agentic AIThe Agent Did Not Need More Context
When an agent edits a shared checkout, the dangerous variable is not context length. It is the boundary around what the run is allowed to write.
Latest Blog Posts
A Retry Is Not a Trading Decision
A rejected order is a decision. Retrying it without preserving the reason can turn a risk control into a duplicate trade.
The Log Is Part of the Agent's Interface
An agent that can act but cannot leave a useful decision record is not autonomous. It is an opaque process with write access.
The Market Is Closed Is Not a Trading Rule
A backtest can know the exchange hours and still schedule a trade into a holiday, an early close, or a stale session. Calendar state is market data.
Related Tools & Demos
The QA Field Manual to Language Models
A free 24-chapter book. Start at βwhat is AI, really?β and finish with a small language model you built yourself β one that reads a failing Playwright test and proposes a fix you can run. Read it in your browser, or download the PDF or the Mac app.
View Source Code βMulti-Model LLM Harness
One interface to call any AI model β capability routing, fallback chains, budgets, circuit breakers, and a quality feedback loop. A practical architecture pattern write-up.
Automated Trading System
Multi-engine trading platform with real-time risk management, regime-based strategy selection, and automated order execution.
View Source Code β
Stay in the Loop
Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.
No spam, ever. Unsubscribe anytime.