How it works
The Money Flow Index is RSI with volume folded in. It uses the same final transformation — a ratio of up moves to down moves, squashed onto a 0 to 100 scale — but instead of comparing the size of price changes it compares the value traded on rising bars with the value traded on falling bars. Each bar contributes its typical price multiplied by its volume, which is a rough proxy for the money that actually moved through the instrument in that period.
That change of ingredient makes it a genuinely different reading from RSI even though the two lines look similar. A rally on shrinking turnover will lift RSI but leave MFI behind, because the up bars are not carrying much money. Traders who watch both use the gap between them as a quality check on momentum rather than reading either in isolation.
The conventional levels are 80 and 20 rather than RSI's 70 and 30, reflecting that the volume weighting makes the line more prone to extremes. As with RSI, the mistake is treating those thresholds as signals. A strong trend keeps MFI pinned above 80 for weeks, and systematically fading that is the fastest way to lose money with an oscillator. What the extremes are useful for is describing the character of the move and, more importantly, noticing where the oscillator refuses to go: in a healthy uptrend pullbacks stop finding MFI near 40, while in a downtrend rallies stall around 60.
The most-cited use is divergence, and it is a little more defensible here than in most places because the indicator has an economic story behind it. Price making a higher high while MFI makes a lower high means the new high was bought with less money than the previous one. That is a real observation about participation, though it is still not a timing tool on its own and can repeat several times before price responds.
One structural difference from RSI deserves attention. RSI smooths its up and down averages with Wilder's exponential method, so old observations decay gradually. MFI takes plain sums over a fixed window, so every bar counts fully until it drops out and then counts not at all. That gives MFI sharper steps and a distinctive drop-off jump that RSI does not have.
Calculation
The arithmetic in words, in the order it happens.
For each bar compute the typical price, (high + low + close) / 3, and multiply it by the bar's volume to get raw money flow. Compare each bar's typical price with the previous bar's: if it rose, that bar's raw money flow is classed as positive; if it fell, negative; if it is unchanged, the bar is discarded. Over the lookback window — 14 bars by default — sum the positive money flows and, separately, the negative ones. The money flow ratio is the positive sum divided by the negative sum, and MFI = 100 - 100 / (1 + ratio). Note that these are plain sums over the window, not Wilder-smoothed averages, which is the main arithmetic difference from RSI.
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 | 14 | Bars in the window. Wilder-era defaults of 14 remain standard. Shorter settings such as 7 reach the extremes constantly and suit short-horizon reversion rules; 21 or more produces a slower line whose position relative to 50 works better as a regime filter. |
| Source | hlc3 | The price each bar contributes. The typical price is the convention because it approximates where the bar's business was done; substituting the close makes the line react faster to end-of-bar prints and slightly noisier. |
How to read it
What practitioners take from the plot. Read these as descriptions of market state, not as entry signals.
- Above 80
- Money has been arriving overwhelmingly on rising bars. In a range that is a stretched condition; in an established uptrend it is normal and can persist for weeks, so it is not a sell signal.
- Below 20
- Selling has dominated the traded value. The mirror of the above, with the same caveat: strong downtrends live here.
- Pullbacks that stop finding MFI below 40 in an uptrend
- The range the oscillator occupies is more informative than any threshold. Holding a floor around 40 on dips is the healthy-trend signature; losing it marks a change of character.
- Price at a higher high, MFI at a lower high
- The new high was bought with less money than the previous one. A genuine observation about participation, but it can repeat several times before price reacts.
- MFI far from RSI on the same settings
- Price momentum and money momentum disagree. Usually it means the move is happening on abnormally light or abnormally heavy volume relative to its size — worth investigating before acting on either line.
Limitations
Where this indicator misleads. None of these are fixed by a better parameter.
- The plain-sum window gives it a drop-off problem. When a single very large session leaves the lookback, the line steps sharply even though nothing has changed in current trading.
- Like every bounded oscillator it stays pinned at an extreme through a strong trend, so mechanical overbought and oversold rules are systematically on the wrong side of the biggest moves.
- The typical price ignores where the close sat inside the bar, so a session that reversed violently intraday contributes as if it had been calm. Pairing it with a close-location tool such as Chaikin Money Flow covers that blind spot.
- It depends on a volume feed and a meaningful bar close, which makes it unusable on spot forex and awkward on twenty-four-hour instruments where the daily boundary is arbitrary.
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.