Skip to content

Intraday Volume Profiles: The U-Shape, the Double-U, and Why Most of the Day Doesn't Matter

The shape of trading volume through the day. U-curves, double-U patterns, opening and closing auctions, and how to schedule execution around them.

5 of 12 ~13 min

Here’s something that surprises every new execution trader: most of the trading day doesn’t matter.

In a typical US large-cap, something like 25-30% of the day’s volume prints in the first 30 minutes. Another 15-20% prints in the last 30 minutes. The middle of the day (11:30 AM to 2:30 PM) accounts for maybe 20% of volume. The remaining 35% or so is spread across the rest of the day in chunks that mostly correlate with news, macro releases, and the occasional block trade.

If you’re working a 100,000-share order over six hours starting at 10:00 AM, you’re competing with a market that’s strongest at the start and end of your window and weakest in the middle. The shape of that distribution isn’t random. It’s structural, and once you understand it, you can schedule execution to take advantage of it.

Harris (2003, Ch. 19) treats the intraday volume curve as one of the most predictable empirical regularities in market microstructure. The shape is so reliable that any execution algorithm that ignores it is leaving money on the table.

This article is about that curve: what it looks like, why it has the shape it does, and how to schedule execution around it.

The Canonical U-Curve

The standard intraday volume profile for US equities looks like a U. High at the open, declining through the morning, flat-ish through midday, rising through the afternoon, peaking at the close.

If you plot 5-minute volume bars against time of day for a typical large-cap like AAPL, you get something like:

  • 9:30-10:00: enormous spike (15-20% of daily volume)
  • 10:00-10:30: high but declining (8-10%)
  • 10:30-11:30: moderate (5-7% per 30 min)
  • 11:30-14:00: low and flat (3-5% per 30 min)
  • 14:00-15:00: moderate and rising (5-7% per 30 min)
  • 15:00-15:30: high (7-9%)
  • 15:30-16:00: closing auction spike (10-15%)

The numbers vary by stock, by day, and by macro calendar, but the shape is remarkably stable. You can plot it for any liquid name and see roughly the same curve.

Why the Open Spikes

Three things drive the opening 30 minutes:

Overnight information gets priced. Anything that happened between 4:00 PM yesterday and 9:30 AM today (earnings, guidance, M&A rumors, macro data, overseas moves) has to be absorbed. Traders come in with positions to adjust based on overnight news, and that adjustment happens fast. The first 30 minutes is when consensus forms.

Overnight orders get filled. Many institutional investors place orders overnight to be executed at the open. These orders stack up in the opening auction and during the early continuous session.

Market makers widen spreads and pull quotes. In the first few minutes, market makers don’t know where the price will settle. They widen quoted spreads to compensate for the uncertainty. This pushes more volume through the opening print as limit orders get hit.

The result is a 15-20% spike that lasts 30 minutes, then decays rapidly. By 10:30, the market is “normal” again.

Why the Close Spikes

The closing 30 minutes is dominated by three forces:

Benchmark rebalancing. Funds benchmarked to the close need their end-of-day positions set. Index funds, ETFs, and any portfolio with a 4:00 PM valuation mark have to trade into the close. This is mechanical demand that has to be expressed every day.

MOC (market-on-close) orders. Many institutional traders use market-on-close or limit-on-close orders to get the closing print. These hit the market in the last 10-15 minutes of trading.

Closing auction. Most exchanges run a closing auction that crosses at 4:00 PM. This auction concentrates a large fraction of closing volume into a single print. The volume attributable to the closing auction can be 8-15% of daily volume all by itself.

The close spike is more concentrated than the open spike. It happens in 20-30 minutes, with the actual auction print often representing 5-10% of daily volume in a single second.

The Double-U Pattern

Some markets show a double-U, two volume peaks with a midday bump. The most common cause is a macro release.

In Europe, the pattern is shaped around the ECB announcements, US data drops, and the open of US markets. In US equities, the “double-U” appears on days with major economic releases at 8:30 AM (which creates an early bump) followed by the usual morning peak.

For execution traders, the double-U matters because it shifts volume away from the typical schedule. On a non-farm-payrolls Friday, for example, the morning peak can be 30-40% of daily volume rather than the usual 15-20%.

The “5% of Volume” Rule

Most execution algorithms have a “do not exceed X% of volume” parameter. The default is often 5-10%. Why?

The idea: if you’re trading more than 5% of the volume in any 5-minute window, you’re becoming a meaningful share of the market. Other participants notice. Market makers widen their quotes. The price impact on your order grows non-linearly.

Empirically, the relationship between participation rate and impact is roughly:

Impact≈η⋅σ⋅(QVinterval)0.6\text{Impact} \approx \eta \cdot \sigma \cdot \left(\frac{Q}{V_{\text{interval}}}\right)^{0.6}

The exponent is around 0.6, not 1.0. So doubling your participation rate increases impact by about 50%, not 100%. But the impact is still meaningful.

The “5% rule” is a heuristic from Harris (2003, Ch. 21) and the broker algo documentation that grew up around it: stay below 5% participation in any short window, and your impact stays manageable. Above 10%, you start moving the market in a measurable way.

In practice, participation rates are calculated over the order’s working interval, not minute-by-minute. A POV algo set to 10% participation will trade 10% of the volume that prints during the time the algo is working. During the open, that means a lot of shares. During midday, that means very few.

Scheduling Execution Around the Curve

The volume profile suggests a few obvious scheduling principles:

Schedule more during high-volume periods. A VWAP algo that wants to track the day’s volume has to concentrate fills at the open and close. If it spreads them evenly, it’ll under-trade at the open and over-trade at midday, exactly opposite to what the market is doing.

Schedule less during low-volume periods. Midday is when spreads widen, depth thins, and impact per share rises. If you can avoid midday trading, you do. If you can’t, you keep your participation rate low so you’re a small share of a thin market.

Avoid the first and last 5 minutes. Even within the open and close spikes, the very first 5 minutes (9:30-9:35) and the very last 5 minutes (15:55-16:00) are especially volatile. Most institutional flow waits at least 5-10 minutes after the open to start trading, and finishes by 15:50 to avoid the close chaos.

Use the closing auction if you need the close. If your benchmark is the closing print (because your PM is marked-to-market at 4:00 PM), the closing auction is often the best place to trade. You get the closing price, you get concentrated liquidity, and you avoid the chaos of the last 5 minutes of continuous trading.

The Almgren-Chriss Optimal Schedule

Optimal execution theory (Bertsimas and Lo, 1998; Almgren and Chriss, 2000) gives a formal answer to the scheduling question. Given a risk aversion parameter λ\lambda, the optimal schedule trades more aggressively when impact is low (low-volatility, high-volume periods) and less aggressively when impact is high (high-volatility, low-volume periods).

The classical Almgren-Chriss result is a constant participation rate if volatility is constant. But with intraday variation in volatility and volume, the optimal schedule is concentrated around the high-volume windows.

In practice, this is what execution algorithms do: they have a “volume curve” target (what fraction of their order to fill in each time bucket) and adjust their participation rate to hit that target.

The Volume Curve as a Feature

The intraday volume curve isn’t just a passive fact. It’s a feature that algos exploit.

A VWAP algo’s strategy: predict the day’s volume curve from historical averages, then target a participation rate that fills the parent order at each point in proportion to that curve.

A POV (percentage of volume) algo’s strategy: don’t target a curve at all. Just trade a fixed percentage of whatever volume shows up. This naturally concentrates fills in high-volume periods because that’s when the most volume is available.

An implementation shortfall algo’s strategy: ignore the historical curve and trade based on the cost tradeoff between impact (which favors slow execution) and timing risk (which favors fast execution). This produces a more front-loaded schedule than VWAP.

The choice of strategy matters because each one is benchmarked differently. VWAP against VWAP. POV against POV. IS against arrival price. Comparing them is apples to oranges.

When the Volume Curve Lies

The intraday volume curve is predictable on average. On any given day, the actual curve can differ substantially.

Days when the curve lies:

Earnings days. The open spike can be 30-40% of daily volume if the print is a surprise. The closing auction is often subdued because everyone repositioned in the morning.

Macro shock days. A surprise Fed announcement or CPI print can shift volume to a 30-minute window around the news and starve the rest of the day.

Low-volume summer days. In August, the curve flattens. The open and close are still peaks but they’re less spiky. The midday portion is a bigger share of a smaller pie.

Year-end and quarter-end. Rebalancing flows shift the curve. Pension funds and mutual funds often concentrate trades at month-end and quarter-end, distorting the typical pattern.

News-driven single days. When a stock has a binary event (FDA decision, lawsuit outcome, takeover bid), the volume curve inverts. The news hits at some point during the day, and volume concentrates around that moment.

For execution, the lesson: don’t trust the historical curve blindly. Build a “today’s volume curve” estimate that updates in real time as the day progresses. Use that estimate to schedule the rest of the order.

Real-Time Volume Tracking

Most execution platforms show intraday volume in real time. A typical dashboard has:

  • The actual volume printed in each 5-minute bucket so far today
  • The historical average for that bucket
  • A “U-curve” line showing the typical shape
  • A deviation indicator: are we ahead of the curve, behind, or on track

If your order is at 11:00 AM and you’ve done 15% of the parent order but only 10% of the day’s volume has printed versus a typical 13%, you’re ahead of volume. You might want to slow down. If you’re behind volume, you might want to speed up.

def adjust_pov(realized_pct, expected_pct, tolerance=0.05):
    """Adjust participation rate based on volume tracking."""
    delta = realized_pct - expected_pct
    if delta > tolerance:
        return 0.7   # we're ahead, slow down
    elif delta < -tolerance:
        return 1.3   # we're behind, speed up
    return 1.0       # on track

This is a toy example. Real implementations use control systems with more sophisticated feedback.

Closing Auctions: Special Mechanics

The closing auction deserves its own note because it’s structurally different from continuous trading.

In a closing auction:

  • Orders accumulate between 15:50 and 16:00 (or 15:55-16:00 in some venues)
  • The exchange runs a matching engine that finds the price that maximizes executable volume
  • All matching orders fill at that single price
  • Imbalance information is published periodically during the auction (15:55, 15:58, etc.)

The advantage of the closing auction: it concentrates liquidity into a single moment. The disadvantage: the price is uncertain until the print.

For a fund that wants the closing price, the auction is the cleanest way to get it. For a fund that wants to trade around the close without committing to the print, the last 5 minutes of continuous trading is the right venue.

Harris (2003, Ch. 19) discusses closing auctions as a special case of call auctions, which are common globally. Many non-US markets trade primarily via periodic call auctions rather than continuous order matching. The Japanese and Korean exchanges historically have, and many European auctions still do.

The Trading Day’s Anatomy

Putting it together, here’s the anatomy of a US trading day for a typical liquid large-cap:

Time window% of daily volumeLiquiditySpreadNotes
9:30-9:353-5%High but volatileWideFirst prints, gap risk
9:35-10:0012-15%HighTighteningMain open surge
10:00-11:0010-12%GoodTight“Normal” trading
11:00-12:007-9%ModerateTightSlow start
12:00-14:008-10%ModerateSlight wideningLunch lull
14:00-15:008-10%ModerateTightBuilding toward close
15:00-15:308-10%HighTightPre-close
15:30-16:0015-20%High then chaoticTight then wideClose auction + last minutes
16:00-20:005-8%After-hoursWideLimited, retail-heavy

The exact numbers depend on the stock and the day, but the shape is consistent.

A Worked Example

Suppose you need to buy 200,000 shares of XYZ. The day’s expected volume is 4M shares. You start at 10:00 AM and want to finish by 3:30 PM.

If you use a VWAP algo targeting the historical volume curve, your hourly child order schedule might look like:

  • 10:00-11:00: ~30,000 shares (7.5% of parent, in line with volume share)
  • 11:00-12:00: ~22,000 shares (5.5%)
  • 12:00-13:00: ~16,000 shares (4%)
  • 13:00-14:00: ~16,000 shares (4%)
  • 14:00-15:00: ~22,000 shares (5.5%)
  • 15:00-15:30: ~16,000 shares (4%, scaled down to avoid close chaos)

Wait, that only adds up to 122,000 shares, not 200,000. Let me redo this.

If the day’s volume is 4M and you’re targeting 5% participation, you’d buy 200,000 shares (5% of 4M). So if the volume prints in proportion to the curve, you’ll naturally hit your target.

Let me restate: you’re trying to buy 200,000 shares with a VWAP algo. The algo targets 5% participation. As volume prints through the day, you trade 5% of it. By the close, you’ve done 5% × 4M = 200,000 shares. The schedule above is wrong; the schedule is “match whatever volume prints.”

The point: with a VWAP algo, your hourly fills are driven by the volume curve. You don’t decide them in advance. You decide your participation rate, and the curve does the rest.

Why Most Traders Underweight the Open

Here’s a counterintuitive observation: many institutional traders underweight the open. They wait until 10:00 or 10:30 to start trading because the open is “too volatile.” But the open is also when liquidity is highest. By waiting, you’re avoiding volatility but also giving up the chance to trade when spreads are tightest and depth is greatest.

For most orders, the right answer is to start trading 5-15 minutes after the open, early enough to catch the high-volume window, late enough to let the gap risk resolve. A 10:00 AM start is a reasonable default.

Why the Close Is Both Attractive and Dangerous

The close is attractive because:

  • Liquidity is concentrated
  • The closing auction provides a clean reference price
  • Spreads tighten in the 15:00-15:30 window before the auction chaos

The close is dangerous because:

  • The last 5 minutes of continuous trading are volatile
  • MOC orders can move the price in unpredictable ways
  • If you’re working a large order into the close, your impact can spike

The professional approach: finish by 15:50, leave the last 10 minutes alone unless you specifically want the closing print. If you want the close, use the closing auction, not the continuous market.

Scheduling Tactics

A few practical tactics that experienced execution traders use:

Front-load if alpha decays fast. If your edge is gone after an hour, work the order faster than VWAP. Front-loading into the open surge captures alpha before it decays.

Back-load if alpha is durable. If your edge holds for a day, work the order passively through midday and into the close. Let the curve do the work.

Use the auction for clean prints. If your benchmark is the close, trade in the closing auction. Don’t try to manufacture a closing price in the continuous market.

Adjust the curve on news days. If a stock has an earnings release at 8:00 AM and gaps 5%, the day’s volume curve looks nothing like the historical average. Update your schedule in real time.

Avoid midday for low-urgency orders. If you have time and don’t need to trade, sit out 12:00-14:00. Spreads are wider and depth is thinner.

References

  • Harris, L. (2003). Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press. Ch. 19, 21. ISBN: 978-0-19-514470-3.
  • Almgren, R., & Chriss, N. (2000). “Optimal Execution of Portfolio Transactions.” Journal of Risk, 3(2), 5-39.
  • Bertsimas, D., & Lo, A. W. (1998). “Optimal Control of Execution Costs.” Journal of Financial Markets, 1(1), 1-50.