Indicator library · Volume
Money Flow Index (MFI), Volume-Weighted RSI
RSI’s conversion applied to money rather than to price change: each bar is weighted by the capital that traded in it. That one substitution makes it the most direct measurement of distribution available from a daily bar.
The calculation
- Typical price: (high + low + close) ÷ 3, because the volume traded across the whole bar rather than at the close.
- Raw money flow: typical price × volume. This is the money that changed hands, approximately, and it is what the index weights by.
- Direction: the flow joins the positive side if the typical price rose against the previous bar, the negative side if it fell.
- Convert: MFI = 100 − (100 ÷ (1 + positive flow ÷ negative flow)) over the lookback window. Identical to RSI’s final step, applied to money instead of to price change.
Note the window: unlike RSI and Volume RSI, the conventional MFI sums each side over a fixed lookback rather than smoothing recursively. Nothing from before the window survives, which makes the line more responsive and is why it can print 100 or 0 more readily than either of those two.
Money, shares and price change
Three indicators on this site put the same RSI conversion on different inputs, and knowing which is which prevents most of the confusion between them.
| Indicator | Weights each bar by | Consequence |
|---|---|---|
| RSI | The size of the price change | A large move on no volume dominates. Participation is invisible. |
| Volume RSI | Share count | Sees participation, and a low-priced instrument generates far larger counts for the same money. |
| Money Flow Index | Price × volume, money | Comparable across price levels and across a long history of one instrument. |
The third row is the argument for this indicator over the second. Share volume is not a common currency, the same capital buys fifty times as many shares of a two-dollar stock as of a hundred-dollar one, so a measure weighted by share count quietly changes meaning as an instrument’s price level changes over the years. Weighting by money removes that drift.
Reading it
The extremes are read exactly as on any bounded oscillator and mean slightly less here, because money flow is more variable than price change and the line reaches its ends more easily. In a strong trend it parks near one end for weeks, and crossings back through 80 or 20 are counter-trend trades in a market that is not turning.
Divergence is what the indicator is for. Price making a higher high while the MFI makes a lower one says the second push was funded with less capital than the first, a stronger claim than the same shape on a price-only oscillator, because the input includes the money rather than inferring it. It remains a condition rather than a trigger, and like every divergence on this site it can persist for months.
Why a simple window rather than Wilder smoothing
RSI and Volume RSI both use Wilder’s recursive average, which never fully forgets: every past value survives with a decaying weight. The conventional MFI does not. It sums each side over a fixed lookback, so a session leaves the calculation completely once the window passes it.
Two consequences follow, and both are visible on any chart. The line is more responsive, since nothing from before the window is holding it back. And it can move sharply on a session where little happened, because an enormous flow from n bars ago has just dropped out of the sum, the same window-exit artefact a simple moving average has, and a reason to look at what left the window before attributing a move to what arrived in it.
Where it misleads
| Situation | What goes wrong |
|---|---|
| RSI thresholds reused | Money flow is more variable than price change; 80 and 20 are the convention here and still only conventions. |
| Strong trend | The line parks at an extreme for weeks, exactly as RSI does, and crossings generate counter-trend losses. |
| Whole-bar attribution | All of a bar's money goes to one side because the typical price ticked up. Every share had a buyer and a seller. |
| Index rebalance and expiry | Mechanical money dominates a short window entirely; the reading describes fund maintenance. |
| Simple window, not smoothed | One enormous session enters and later leaves the sum, moving the line sharply on a day when nothing happened. |
| Illiquid instruments | A handful of trades sets both the typical price and the volume, so the flow describes those trades rather than a market. |
What breadth adds
The MFI describes the money behind one instrument and cannot say whether the market around it was doing the same thing. A falling money flow in a name whose whole sector is seeing outflows is one observation; the same fall while the sector broadens is a different and much more specific one.
Reading it beside the breadth measures covers that gap. Money flow answers how much capital stood behind a move in one name; breadth answers how many names were moving at all. Narrowing in both, while an index makes new highs, is two genuinely different inputs agreeing, which is as much confirmation as anything here offers.
Frequently asked questions
How is the Money Flow Index calculated?
Four steps. Take the typical price of each bar, high, low and close divided by three. Multiply it by the bar’s volume to get the raw money flow. Assign that flow to the positive side if the typical price rose against the previous bar and to the negative side if it fell. Then sum each side over the lookback, divide positive by negative to get the money flow ratio, and convert with 100 − (100 ÷ (1 + ratio)), the same final step as RSI.
How does it differ from RSI?
RSI weights each bar by the size of its price change. The MFI weights each bar by the money that traded in it, and takes only the direction of the price from the bar itself. So a large advance on almost no volume contributes little here and a great deal to RSI, while a modest move on the heaviest session of the month dominates the MFI. On quiet data the two lines look similar; they separate exactly when volume is doing something interesting.
How does it differ from Volume RSI?
Volume RSI assigns a bar’s share count to the up or down side and averages those with Wilder smoothing. The MFI assigns price multiplied by volume — money rather than shares — and sums it over a simple window rather than smoothing recursively. Weighting by money removes the distortion whereby a low-priced instrument generates enormous share counts, which matters when the price level has changed substantially over the history being plotted.
Why is the typical price used rather than the close?
Because the volume traded across the whole bar, not only at the close. Averaging high, low and close is a crude estimate of where the average transaction happened, and it makes the measure less sensitive to a single erratic closing print. It is the same reasoning that puts the typical price inside VWAP, and it is a convention rather than a derivation.
What do 80 and 20 mean here?
They are the conventional extremes, wider than RSI’s 70 and 30 because the MFI moves more: money flow is far more variable than price change, so the line reaches its ends more readily. As everywhere on this site, they are conventions rather than thresholds with statistical standing, and a level derived from the instrument’s own distribution is worth more than an inherited number.
What is the reading worth having?
Divergence against price, and specifically the case where price makes a new high and the MFI does not. Because the index is weighted by money, that says the latest push was made with less capital behind it than the previous one, which is a stronger statement than the same divergence on a price-only oscillator, and the closest thing on this site to a direct measurement of distribution as it happens.
Does it work on an index?
Yes, with aggregate volume, and with the usual calendar caveat. Index rebalances, quarterly reconstitutions and options expiries push enormous mechanical money flow into single sessions, and the MFI weights precisely by that money, so those dates can dominate a nine or fourteen-period window entirely. Around them the reading describes fund maintenance rather than conviction.
What happens when there are no down bars in the window?
The negative flow is zero, the ratio is undefined and the index is set to 100 by convention. It happens more often than on RSI because the window is a simple sum rather than a decaying average, nothing from before the lookback survives to keep the denominator alive. Any implementation that returns NaN there will fail on a straight-line test series, which is the first test worth writing.