Debated1 min read
◆ The PatternRSI with volume in it: overbought and oversold, weighted by how much money changed hands
The Money Flow Index — often called "volume-weighted RSI."
Typical Price = (High + Low + Close) / 3
Money Flow = TP × Volume
MF Ratio = Positive Flow / Negative Flow
MFI = 100 − 100 / (1 + MF Ratio)
Money Flow = TP × Volume
MF Ratio = Positive Flow / Negative Flow
MFI = 100 − 100 / (1 + MF Ratio)
Scale: 0–100. Default period: 14.
Zones:
• MFI > 80 → overbought (potential reversal)
• MFI < 20 → oversold (potential bounce)
• MFI divergence from price → strong reversal signal
Adds volume to the RSI idea; whether that improves signals is an empirical question for each market
• MFI > 80 → overbought (potential reversal)
• MFI < 20 → oversold (potential bounce)
• MFI divergence from price → strong reversal signal
Adds volume to the RSI idea; whether that improves signals is an empirical question for each market
Worked example
Money flow is typical price × volume, counted as positive on days the typical price rose and negative when it fell. Over days 11–15 the falls (days 12 and 13) slightly outweigh the rises (days 11, 14 and 15) in volume, and MFI = 53.2. Two days earlier, at the low, it read 15.0, below the 20 line for “oversold”.
The example data: 15 days, used in every indicator here
| Day | High | Low | Close | Volume |
|---|---|---|---|---|
| 1 | 101 | 99 | 100 | 50,000 |
| 2 | 103 | 100 | 102 | 62,000 |
| 3 | 103 | 100 | 101 | 48,000 |
| 4 | 105 | 101 | 104 | 70,000 |
| 5 | 108 | 104 | 107 | 85,000 |
| 6 | 108 | 105 | 106 | 60,000 |
| 7 | 110 | 106 | 109 | 90,000 |
| 8 | 110 | 107 | 108 | 72,000 |
| 9 | 108 | 104 | 105 | 80,000 |
| 10 | 105 | 102 | 103 | 66,000 |
| 11 | 105 | 102 | 104 | 55,000 |
| 12 | 104 | 101 | 102 | 75,000 |
| 13 | 102 | 98 | 99 | 95,000 |
| 14 | 102 | 99 | 101 | 64,000 |
| 15 | 105 | 101 | 104 | 71,000 |
Where it misleads
- Volume spikes dominate it: one heavy day can move it more than a week of price changes.
- Like RSI, it can stay “overbought” for as long as a trend lasts.
- The split into positive and negative ignores how far the price moved; a tiny rise on huge volume counts as heavy buying.
In code
tp = (df['high'] + df['low'] + df['close']) / 3 flow = tp * df['volume'] pos = flow.where(tp > tp.shift(), 0).rolling(5).sum() neg = flow.where(tp < tp.shift(), 0).rolling(5).sum() df['mfi5'] = 100 - 100 / (1 + pos / neg)
Assumes import numpy as np, import pandas as pd, and a DataFrame df with columns high, low, close and volume — the 15 days above.
Sources
- G. Quong & A. Soudack, “Volume-Weighted RSI: Money Flow”, Technical Analysis of Stocks & Commodities 7(3), 1989
- Technical Analysis from A to Z (2nd ed.), S. B. Achelis, McGraw-Hill, 2000
Last reviewed October 2026 · How this site checks its content · Report a mistake
Pattern bridge: Money Flow Index is RSI weighted by volume — the same normalization to [0,100]. In statistics, weighting by a second variable is a covariance-aware approach.
Linked from 1