WhitmanTrading

OBV vs Chaikin Money Flow

On-balance volume is a cumulative running total that adds or subtracts each bar's volume by the sign of its close. Chaikin money flow is a bounded oscillator over a fixed lookback that weights volume by where the close sat inside the bar.

Two ways of turning volume into a line. One accumulates forever and the other looks at a fixed window, which changes what a reading means and how you can use it.

What each one is

On-balance volume is a running total. It adds the whole bar’s volume when the close is higher and subtracts it when lower, forever. On balance volume covers it.

Chaikin money flow is a bounded oscillator. Over a fixed lookback it weights each bar’s volume by where the close sat inside the bar’s range. Chaikin money flow covers it.

One has no scale and the other does. That is the practical difference and it governs everything about how each is read.

Where they differ

A price series with a cumulative running total beneath it.
A running total: only the slope means anything. Illustrative chart - not real market data.

Whether the level means anything. A cumulative total starts from an arbitrary point, so its value is meaningless and only its direction carries information.

The second half of a price series with a bounded oscillator beneath.
A bounded reading over a fixed window. Illustrative chart - not real market data.

How each weights a bar. The running total uses the sign of the close and nothing else. The oscillator weights by where the close sat within the bar’s range.

A slice of price data where a tally and a weighted reading separate.
They disagree on bars with long wicks. Illustrative chart - not real market data.

How memory works. The total never forgets; the oscillator forgets everything outside its lookback, which makes it far more responsive to recent conditions.

What each can be compared against. A bounded reading is comparable to its own history and across instruments. A running total is not comparable to anything but itself.

Where they agree

A window of price data feeding both tools.
Both depend on the same volume feed. Illustrative chart - not real market data.

Both depend entirely on the volume figure. On a fragmented market the reported number covers part of the trading, so both are partial in the same way.

Both are used mainly for divergence, and both need a written definition of what counts before that pattern means anything — any two series disagree somewhere.

Both are transformations of price and volume. Neither is a second opinion, and a divergence between either and price is partly a property of the calculation.

And neither supplies a stop. On this site’s shared series the ninetieth percentile bar range is 1.101, and a stop belongs at structure rather than at anything either line suggests.

Which one to use

A range-bound stretch of price with both readings flat.
A range leaves both saying very little. Illustrative chart - not real market data.

Use the running total when you want to explain the line. Its behaviour is easy to predict — the sign of the close decides everything — and being able to say why it moved is worth a great deal.

A slow-moving stretch of price with closes near the extremes.
Closing position within the bar is what the oscillator adds. Illustrative chart - not real market data.

Use the bounded oscillator when you want a scale. A reading you can compare to its own history, or across instruments, is something a cumulative total cannot give you.

Use the oscillator when closing position matters. On instruments with long wicks, where the close’s place inside the bar genuinely says something, the weighting is real rather than decorative.

And run one, not both. They read the same input with different weightings, so agreement between them is arithmetic rather than confirmation.

Why cumulative and bounded are different kinds of tool

A candlestick chart annotated with the round-trip cost of a switch.
Every signal acted on costs a round trip. Illustrative chart - not real market data.

Because one has a threshold and the other cannot. You can say the oscillator is above or below a level; there is no equivalent statement about a running total.

A section of a price series drawn without volume context.
And a thin market makes both lines meaningless. Illustrative chart - not real market data.

And because one forgets. A fixed lookback drops old bars entirely, so the oscillator reflects recent conditions while the total carries the whole history with it.

What the volume feed decides

Whether either is worth running. Both weight by volume, so a partial figure produces a confident reading of a fraction of the market.

Where that bites hardest. Spot currency pairs report one broker’s flow; centrally cleared instruments publish the exchange’s own trades.

How to check. Compare the reported volume for the same bar across two providers — a material disagreement answers the question.

And what to do if it fails. Use a price-based measure instead, because a volume tool on a partial feed is worse than no volume tool at all.

What to write down before using either

What counts as a divergence. How many bars, how large a separation. Without those numbers any wiggle qualifies in hindsight.

Which lookback, on the bounded one. It decides responsiveness and it is the only parameter that tool has.

Whether you are reading level or slope. On the running total only slope is available; on the oscillator both are, and they say different things.

And what happens when they disagree with price. That resolves either way, and nothing in either indicator says which.

The original data

Of the 24,971 unique videos in research/search-study-corpus.jsonl, no title compares these two directly — this pair is constructed from two subjects the corpus covers separately. Separately, on-balance volume appears in 26 titles at a median of 15,517 across 24 channels, and Chaikin tools in 48 at a median of 2,579 across 39. The counts come from site/corpus_count.py.

A candlestick series with several gaps, the largest of them marked.
A gap is handled differently by each. Illustrative chart - not real market data.

26 videos on one at 15,517 and 48 on the other at 2,579. Twice the coverage and a sixth of the audience per video for the Chaikin family — the better covered tool here is the less watched one, which is unusual in this corpus.

A stretch of price bars cut short at a decision point.
Running total rising, oscillator negative. Conflict? Illustrative chart - not real market data.

The answer to the question on that chart is that they measure different windows. One carries months of history and the other only its lookback — so a disagreement is usually about time rather than about the market.

When it fails

The failure is reading a divergence between the two as a signal, and it is available constantly. A cumulative total carrying months of history will regularly point differently from an oscillator covering twenty bars, because they are summarising different periods. That difference gets read as one confirming or contradicting the other, when it is a difference in lookback — and any two series with different windows will disagree somewhere.

The second failure is quoting the running total’s level. It depends on the start date.

A third is running both together. They share the same input.

A fourth is using either on a partial volume feed. The input is a fraction.

A fifth is finding divergence by looking. It is always available somewhere.

And a sixth is expecting either to lead price. Both are computed from closed bars.

On balance volume covers the cumulative tally. Chaikin money flow covers the bounded oscillator. And volume analysis covers what the input can tell you at all.

What I actually do

The cumulative-versus-bounded distinction decides how you can read them. A running total’s number depends on when the calculation started, so only its direction is meaningful. A bounded oscillator has a scale, which is a genuinely different kind of reading.

— Michael Whitman

This page is educational, not financial advice. Test every idea on your own charts before risking money.