The Money Flow Index (MFI) is another momentum oscillator that MT4 provides by default. With a similar calculation as the RSI, can it offer the same level of performance?
This post will cover:
- MFI calculations
- How to use the MFI
- Trend following using the MFI
- Tweaking overbought/oversold levels
The Money Flow Index (MFI) is a lesser-known relative of the RSI that incorporates the use of both price and volume.
I’ve previously discussed how tick volume can be used to improve signal reliability. Can the use of volume help the MFI outperform other momentum indicators?
Here I’ll build a trend following strategy using both the MFI and RSI, and see how they stack up.
But first, let’s discuss how the MFI is calculated.
Money Flow Index Calculations
The MFI can be found under the Volumes section of MT4’s indicator list.
Like the Keltner Channels, the MFI uses typical price instead of closing price. A 14-period lookback is used by default.
In step 3, money flow is positive when typical price increases from one period to the next, and negative when typical price decreases. Money flow is zero when typical price is unchanged.
The familiar RSI formula is applied in step 4. Since volume is included, the MFI is sometimes called the volume-weighted RSI.
How to Use the Money Flow Index
The MFI can be used in a similar fashion to other momentum oscillators. Here are two common ways:
1. Detect Momentum Divergences
A momentum divergence occurs when price and MFI move in opposite directions. Since momentum often leads price, a divergence may indicate an upcoming market reversal.
For example, a bullish divergence occurs when prices set lower lows, while the MFI sets higher lows. This could indicate an upcoming bullish reversal.
In a bearish divergence, prices set higher highs, while the MFI sets lower highs.
2. Detect Overbought/Oversold Conditions
MFI values above 80 denote overbought conditions, while values below 20 denote oversold conditions.
The 80/20 threshold is more conservative than the usual 70/30 threshold used for the RSI.
This is because the MFI is generally more reactive than the RSI. A visual comparison of both indicators is shown below:
Notice that the MFI has more pronounced peaks and valleys.
The MFI crossing above 20 is an indication that the market is exiting oversold conditions, and is a good opportunity to go long.
Likewise, if you’re looking to go short, wait for the MFI to cross below 80.
Trend Following Using the Money Flow Index
For the remainder of this post, I’ll backtest a trend following strategy that uses the MFI to detect overbought/oversold conditions.
The idea behind the strategy is to maximize value by jumping onboard the trend after a pullback has occurred.
Long entry conditions are:
- Prices are above the 100-period SMA
- MFI crosses above 20
This could mean that the pullback is over and the uptrend is resuming.
Price confirmation will be achieved using a stop entry at the previous high.
Here’s how a long trade looks:
AlgoWizard was used to program the logic.
To see how the MFI stacks up against the RSI, I’ll also backtest a similar strategy that uses a RSI in place of the MFI.
To establish a baseline, I’ll backtest the RSI strategy first. The 30-minute GBPUSD will be tested from 2003-2021.
The 1.46 profit factor and expectancy of about 17 pips is quite decent.
I’m surprised there are only 122 trades though. Apparently it is uncommon for the RSI to be oversold while having price remain above the 100-period SMA.
Can the MFI strategy beat this baseline? Here’s the MFI backtest:
The answer is a resounding no!
Poor profitability aside, what strikes me is the increased trading frequency of the MFI strategy. It had almost 4x the number of trades over the same period.
This is probably a consequence of the MFI being more reactive than the RSI. Its 80/20 levels may be too relaxed for detecting overbought and oversold conditions.
So far it seems like the MFI can’t hold a candle to the traditional RSI. But some may argue that a fair comparison can only be made if both strategies produce the same number of trades.
Can we ‘normalize’ the MFI strategy to fit the RSI strategy?
Tweaking the Money Flow Index’s Overbought & Oversold Levels
To equalize the trading frequency, I’ll need to make the MFI entry conditions more stringent. Perhaps the MFI will perform better with the overbought/oversold levels set to 85/15? Or maybe even 90/10?
I’ll extend the MFI’s overbought and oversold levels until it produces a similar number of trades as the RSI strategy.
The 86/14 levels produced the closest trading frequency to the RSI baseline. The strategy wasn’t even profitable though.
It seems the 82/18 levels produce the best performance. Here’s the improved equity curve:
Not much of an improvement if you ask me; the long stagnations are still present.
For this trend following strategy, it seems that the RSI is the better choice for detecting overbought/oversold conditions.
Of course, this doesn’t mean that the MFI can’t be useful. Perhaps you’ll get better results if you tweak its lookback period (the default 14-period lookback was used above), or use it to detect momentum divergences instead.
The MFI is another momentum oscillator that MT4 provides by default. Unlike the RSI, it incorporates the use of volume in its calculations.
Traders often use it to detect momentum divergences and overbought/oversold conditions.
When used for pullback detection in a GBPUSD trend following strategy, the MFI can’t seem to match the RSI’s performance, even after more stringent overbought/oversold levels are used.
Have you found a profitable way to use the MFI? Should I have done something differently above?
Let me know in the comments!
Good post, always happy to see someone talk about mfi and not only rsi. This aside, you missed something in your point : if the mfi is more reactive, you must use a length of 17 or 18. Another (better?) way to work with it is to smoothing it. Coding an exponential moving average (1 to 5 no more) with the mfi in source. Your signal will be really more accurate.
Those are great ideas for improvement, I’ll be sure to give them a shot. The CCI is another (underrated) indicator that really benefits from smoothing.
Period 7 gives the best results with sharper peaks. Picks up divergence way better than RSI