Quantitative Trading5 min read

What a Fifteen-Minute Bar Forgets

S

Suneet Malhotra

Jun 16, 2026

1 views
What a Fifteen-Minute Bar Forgets - Quantitative Trading blog post

A bar is the first lie my data tells me, and it is a useful one.

My engine reads the market in fifteen-minute bars, two hundred of them at a time, and on that window it computes everything it believes: a twenty- and fifty-period moving average for trend, a fourteen-period RSI for whether the move is stretched, a MACD for momentum, a volume ratio for conviction. Every signal it fires is a function of those bars. Which means every signal it fires is a function of a summary, and the summary has already thrown away most of what happened.

A bar keeps four numbers and discards the rest

A fifteen-minute bar records four prices and a volume: where the period opened, the high it touched, the low it touched, where it closed, and how much traded. That is five numbers standing in for fifteen minutes of continuous quoting, hundreds or thousands of prints. Everything between those corners, the order events happened in, the path the price took to get from open to close, is gone the moment the bar closes.

Here is the part that took me too long to take seriously. Two bars with identical open, high, low, and close can describe completely different fifteen minutes. One drifted smoothly upward, a clean trend a human would lean into. The other spiked to the high, collapsed to the low, and clawed back to the same close, a violent chop a human would stay away from. Same four numbers. Identical contribution to my moving average, my RSI, my MACD. My indicators cannot tell the two apart, because by the time they read the bar, the only thing that distinguished them, the path, no longer exists in the data.

The signal is always at least one bar late

There is a second cost, and it is about time rather than shape. My long condition needs the fast average above the slow one, RSI not overbought, the MACD histogram positive, and volume above one-point-two times its average. Those are evaluated on a closed bar, because an open bar is still changing and its indicators are not final. So the earliest I can act on a condition that became true inside a bar is the open of the next one.

That puts a floor under my latency equal to the bar period. A condition that turns true thirty seconds into a bar waits out the remaining fourteen and a half minutes before I am allowed to believe it. In a slow tape that is invisible. In a fast move it is the entire difference between an entry and a chase, because the move that tripped the signal is the same move that has already repriced the thing I wanted to buy.

The volume gate makes this concrete. Volume above one-point-two times average sounds like a real-time conviction check. It is not. The average is computed over completed bars, and the current bar's volume is only final when the bar closes. Mid-bar the ratio is half-formed and meaningless. So the conviction filter is structurally a close-only gate, welded to the same one-bar delay as everything else.

Smaller bars are not the fix

The obvious reaction is to shrink the bar. Go to five minutes, or one, and the path-blindness narrows and the latency floor drops. But a smaller bar is a noisier bar. Fewer prints per bar means the open and close are jumpier, moving-average crossovers fire and reverse on noise, RSI whips between extremes, and the volume ratio swings on thin samples. You trade staleness for false signals. That is a bias-variance tradeoff wearing market-structure clothing: the long bar is biased, smoothing away detail and arriving late; the short bar is high-variance, fast but twitchy and prone to firing on nothing.

Fifteen minutes is a point on that curve. It is not right or wrong. It is a choice that buys smoothness and pays for it in path-blindness and a fifteen-minute latency floor. The mistake is not the choice. The mistake is forgetting I made it, and then reading my indicators as if they describe the market rather than a deliberately lossy compression of it.

Read the summary as a summary

So the rule I hold now is small. A bar is not a price. It is a paragraph summarizing fifteen minutes of an argument, and my indicators only ever read the paragraph, never the argument. Every conclusion they reach inherits whatever the summary dropped: the path, the order of events, anything that happened and reversed inside the window.

That does not mean distrust the indicators. It means know exactly what they are blind to, so I am not surprised on the day the blindness costs me. The smooth trend and the violent chop print the same bar, and my engine will treat them as the same setup. Knowing that in advance is the difference between a tradeoff I chose and a hole I fell into.

Share this post

You Might Also Like

Stay in the Loop

Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.

No spam, ever. Unsubscribe anytime.