Money Flow Index (MFI)

RSI weighted by volume. A bounded 0-100 oscillator that combines price momentum with the volume backing it.

Updated 2026-05-24
8 min read
intermediate

A bounded momentum oscillator that's essentially RSI weighted by volume. Computed on a 0-100 scale, MFI fires the same overbought/oversold signals as RSI — but with volume confirmation built in. The volume backing means MFI's extreme readings are higher-conviction than RSI's. Developed by Gene Quong and Avrum Soudack in 1989.

Placeholder · Video / Clip

MFI(14) on MES daily — oversold-to-overbought cycle

Author hint: MES daily, ~120-bar window. MFI(14) in sub-panel with horizontal lines at 80 and 20. Show one cycle from oversold (< 20) to overbought (> 80). ≤ 10 seconds, no audio. Save to /public/images/guide/indicators/mfi/chart.mp4.

What it measures

  • Volume-weighted momentum. Same overbought/oversold reading as RSI, but each bar's contribution is weighted by traded volume.
  • Conviction-adjusted extremes. MFI > 80 means "price is overbought AND volume confirms that buyers were the ones pushing it." Stronger signal than RSI > 70.
  • Money flow ratio. The internal ratio of positive money flow to negative money flow is exposed as a separate output.

Formula

How AlgoLift computes it

For each bar:

Typical Price = (High + Low + Close) / 3
Money Flow = Typical Price × Volume

If TypicalPrice[t] > TypicalPrice[t-1]: Positive MF[t] = Money Flow[t]
If TypicalPrice[t] < TypicalPrice[t-1]: Negative MF[t] = Money Flow[t]

Over the lookback period:

Money Flow Ratio = sum(Positive MF) / sum(Negative MF)
MFI = 100 − (100 / (1 + Money Flow Ratio))

The structure mirrors RSI exactly — both use a positive/negative split followed by the 100 − 100/(1+ratio) normalization. The only difference is that RSI uses raw price changes while MFI uses price × volume. When volume is roughly constant per bar, MFI and RSI produce similar readings; when volume varies sharply, they diverge.

Inputs in AlgoLift

SettingDefaultRangeNotes
Period142–500Lookback for the positive/negative money flow sums. Same default as RSI.

Recommended periods

  • 9 (fast): Short-term — more frequent extreme readings.
  • 14 (default): Standard. Same as RSI.
  • 21–28: Slower — for swing setups.

Outputs in AlgoLift

HandleTypePlottedNotes
MFI ValueNumericAlwaysThe Money Flow Index, 0-100.
SlopeNumericOn selectRate of change of MFI.
Money Flow RatioNumericOn selectThe raw ratio of positive to negative money flow — the calculation's intermediate value.
Placeholder · Screenshot

MFI node — default state

Author hint: The MFI node on a fresh canvas with default Period=14. All three output handles labeled. Dark theme. Tight crop. Save to /public/images/guide/indicators/mfi/node.png.

How to read it

  • MFI > 80: Overbought — buying flow has been dominant relative to selling flow over the lookback.
  • MFI < 20: Oversold — selling flow dominating.
  • MFI between 40 and 60: Neutral flow balance.
  • MFI crossing 50: The midline cross — net flow direction has flipped.
  • MFI divergence with price: Same interpretation as RSI divergence — but stronger because volume confirms.

The 80/20 thresholds (instead of RSI's 70/30) are conventional — MFI extremes are slightly more bounded because volume weighting reduces the impact of low-volume outlier bars.

Key Takeaway

MFI is RSI with volume confirmation baked in. Use it instead of RSI when you have a specific reason to want volume-aware momentum readings — typically on intraday equity strategies where volume meaningfully reflects institutional participation. On futures during RTH or on liquid stocks, MFI is often the slightly-better RSI.

Best in / worst in

Best in liquid equity instruments during RTH, where volume meaningfully tracks participation. Particularly useful for confirming RSI signals — when RSI and MFI agree on an extreme reading, the signal is unusually strong.

Worst in futures during off-hours, low-volume instruments, and 24/7 markets (crypto) where the volume input is structurally unreliable.

Three setups

MFI is bounded and primary-signal-capable enough to use the standard "Three setups" framing rather than the confirmation-pattern framing used for OBV/A/D/CMF.

1. Volume-confirmed extreme reversal

The textbook MFI entry, with a regime filter.

  • Long: MFI < 20 (oversold AND volume-confirmed) AND MFI slope > 0 (turning back up) AND KAMA ER < 0.3 (range regime).
  • Short: MFI > 80 AND slope < 0 AND ER < 0.3.

The KAMA ER filter is essential. In trending regimes, MFI can stay > 80 for many bars — fading those extremes loses money.

Placeholder · Screenshot

Volume-confirmed MFI mean-reversion

Author hint: Node graph showing MFI Value < 20 AND MFI Slope > 0 AND KAMA ER < 0.3 as a three-input AND gate, into Entry. Save to /public/images/guide/indicators/mfi/setup-01.png.

2. RSI/MFI confluence

Require RSI and MFI to agree on extreme conditions.

  • Long: RSI < 30 AND MFI < 20.
  • Short: RSI > 70 AND MFI > 80.

The volume confirmation from MFI filters out RSI extremes that lack participatory support — a common false-signal pattern.

3. MFI midline as a regime gate

Use the 50-line cross for direction bias.

  • Long-only mode: MFI > 50 — strategy permitted to take longs only.
  • Short-only mode: MFI < 50 — short entries only.

A simple no-tuning regime filter that incorporates volume.

Advanced patterns in AlgoLift

MFI for volume-aware position sizing. Scale position size by how decisive the MFI reading is: size = base × (1 − abs(MFI − 50) / 50). Smaller positions during extreme readings (50 - extreme = small size), larger during neutral conditions. Combined with extreme-reversion entries, this naturally takes smaller positions when the reversal probability is lower.

MFI divergence with BarsAgo Modifier. When price makes new highs but MFI doesn't, both price momentum AND volume conviction are fading. Stronger than pure RSI divergence — pair with a regime filter for high-quality reversal entries.

Money Flow Ratio for scale-in timing. The Money Flow Ratio output is the raw ratio behind MFI's calculation. When it crosses 1.0 from below in a long position (positive flow just became dominant), use Scaled Entry to add. The ratio crossing 1.0 confirms accumulation has flipped to active buying.

Multi-timeframe MFI agreement. Daily MFI as regime gate alongside 1h or 5m MFI for entry timing. Cross-timeframe agreement is the cleanest single filter for volume-momentum entries. See the multi-series Visual Builder pattern.

Common mistakes

  • Treating MFI exactly like RSI. They behave similarly but differ in low-volume conditions. MFI's extremes can lag RSI's in light-volume periods because the volume weighting reduces the impact of small bars.
  • Using on instruments where volume data is unreliable. Off-hours futures, low-cap crypto pairs, OTC markets — MFI's volume input becomes noise rather than signal. RSI is the better choice on these.
  • Trading every extreme without regime context. Same trap as RSI — MFI > 80 in a strong trend often means the trend is healthy, not exhausted. Always check regime first.
  • Confusing MFI with CMF. Both are Chaikin-school volume oscillators but: MFI uses typical price × volume on a 0-100 scale with RSI-style math; CMF uses CLV × volume on a ±1 scale with running-window math. Different signals.
Common Misconception
Myth
MFI is strictly better than RSI because it includes volume.
Reality
MFI is better when volume data is meaningful and the strategy benefits from volume confirmation. On 24/7 crypto markets or in off-hours futures where volume is structurally different, MFI's volume weighting can degrade signal quality compared to RSI's pure price momentum. The right tool depends on the instrument.