How it works
Chaikin Money Flow converts the Accumulation/Distribution idea from a cumulative line into a bounded oscillator. It uses exactly the same per-bar money flow volume — volume scaled by where the close sat inside the bar's range — but instead of adding it to a running total forever, it sums it over a fixed window and divides by the total volume traded in that window. The division is what makes it useful: the output is a proportion, so it can be compared across instruments and across years in a way no cumulative line can.
The result sits between minus one and plus one. Plus one would require every single bar in the window to have closed exactly on its high, which never happens; in practice readings live between roughly minus a quarter and plus a quarter, and anything beyond that is a genuinely lopsided window. Zero means the volume attached to strong closes and weak closes cancelled out. Charts often display the same number multiplied by a hundred, which changes nothing.
Traders use it as a persistent-pressure filter rather than as a trigger. A market whose CMF has held above zero for several weeks has been settling its sessions in the upper half of their ranges on the bulk of its volume, which is a supportive backdrop for long setups generated elsewhere. Sustained readings on the other side of zero say the opposite. The centreline crossing is the headline event, though it is noisy enough on its own that most people require the reading to stay across for several bars.
It also produces the standard divergence read. Price pushing to new highs while CMF slides toward zero says the newest advance is being made on sessions that close weakly relative to their volume. Because CMF is normalised, that comparison is fairer than the equivalent on a cumulative line: the flow line cannot be dragged higher merely because turnover has grown over the years.
The trap in its construction is the window edge. With twenty bars, one extraordinary session accounts for a large fraction of both the numerator and the denominator, and when that session finally drops out of the window the oscillator jumps for reasons that have nothing to do with current trading. Watching for that step change — and knowing which bar caused it — is part of reading the indicator honestly.
Calculation
The arithmetic in words, in the order it happens.
For each bar compute money flow volume exactly as the Accumulation/Distribution line does: ((close - low) - (high - close)) / (high - low), multiplied by the bar's volume, with a multiplier of zero where high equals low. Sum that quantity across the lookback window, then divide by the plain sum of volume over the same window. The default window is 20 bars. The quotient is bounded by minus one and plus one because the numerator can never exceed the denominator in absolute value, and it is often displayed multiplied by 100.
Source
An AlgoBeamScript implementation of the formula above, written by us from the arithmetic so the code and the calculation agree line for line.
Runs unchanged on the platform and in the AlgoBeamTS runtime. The language reference is in the documentation.
Inputs
Defaults are the values most charting packages ship with. They are conventions, not optimal settings — the right length depends on your instrument and your holding period.
| Input | Default | What it changes |
|---|---|---|
| Length | 20 | Bars in the window. Around 20 gives roughly a month of daily sessions and is the usual balance. Shortening it to 10 makes the line whip across zero constantly; lengthening it to 50 or more turns it into a slow regime filter that changes sign only a few times a year. |
How to read it
What practitioners take from the plot. Read these as descriptions of market state, not as entry signals.
- CMF holding above zero for many consecutive bars
- Most of the volume in the window traded in sessions that closed in the upper part of their range. A supportive backdrop for long exposure, not an entry in itself.
- CMF crossing zero and staying there
- The balance of close-location weighted volume changed sign. Because single-bar crosses are noise, most rules require several bars beyond the line or a minimum distance such as 0.05.
- Readings beyond roughly plus or minus 0.20
- An unusually one-sided window. It marks real pressure, but sustained extremes appear near the middle of strong trends at least as often as at their ends, so this is not a fade level.
- Price at new highs with CMF sliding toward zero
- The volume behind the newest highs is arriving on sessions that close weakly. A quality warning about the advance; it says nothing about timing.
- A sudden step in the line with no matching price move
- An outsized bar has just left the lookback window. This is an artefact of the fixed window, not new information, and should be ignored.
Limitations
Where this indicator misleads. None of these are fixed by a better parameter.
- It inherits the Accumulation/Distribution blind spot: only the location of the close inside its own bar is used, so gaps between bars are invisible and a violent gap down that recovers internally reads as accumulation.
- The fixed window creates drop-off artefacts. A single extreme session dominates the ratio while it is inside the window and then leaves it abruptly, stepping the line without any change in current behaviour.
- Although the output is bounded, useful thresholds are not universal. What counts as an extreme reading differs between a mega-cap index fund and a thin small cap, so levels have to be calibrated per instrument.
- In a tight range the numerator is a near-cancellation of similar-sized positive and negative contributions, so the line hovers around zero and produces frequent, meaningless sign changes.
Educational reference. This page explains how an indicator is built and how it is commonly read. It is not investment advice, not a recommendation and not a signal service. No indicator is profitable on its own — each is a way of describing a market, and any rule built on one has to be tested with realistic costs before it is traded.