MFI Oversold: An Exhaustive Study Across 8 Assets, 3 Timeframes, and 281 Combinations
We tested Money Flow Index oversold signals across 8 assets, 3 bar timeframes, 4 MFI periods, and 3 thresholds — 281 combinations total. IWM on daily bars is the standout: MFI14 < 20 produces 74% win rate over 5 days with p < 0.0001. Daily bars dominate. Hourly bars mostly fail. Weekly results split sharply by asset character.
Why MFI, and Why Now
Money Flow Index combines price and volume into a single oscillator. Unlike RSI, which only tracks price change velocity, MFI requires volume participation — it measures the monetary weight behind each price move. A dip on heavy volume is a different signal than a dip on thin air.
In Study 7, MFI < 20 emerged as the most consistent oversold signal across six Tier 1 assets — outperforming RSI, Keltner Channel, and Bollinger Bands on 4 of 6 names. That result used daily bars, a fixed 14-period window, and a single threshold. The question we left unanswered: is that finding robust across timeframes, or an artifact of the daily bar construction? Does MFI14 hold at 7 or 20 periods? Does < 20 matter, or does < 30 work just as well with more entries?
This study answers all of it. 8 assets. 3 timeframes. 4 MFI periods. 3 thresholds. Bootstrap confidence intervals. Welch’s t-test versus the all-bars baseline. 281 tested combinations.
Data Source and Reproducibility: This study utilizes data sourced from Yahoo Finance via the yfinance Python library, ensuring credibility in our dataset. For reproducibility, the data spans from 2000 to 2026, with all prices auto-adjusted for dividends and splits.
Setup
Assets: SPY, QQQ, IWM, GLD, TLT, AAPL, NVDA, XLE
Timeframes and data windows:
- Hourly (1h): 2 years of market-hours data (~3,470 bars per asset, filtered 9:30–16:00 ET)
- Daily (1d): 2005–present (~5,381 bars per asset)
- Weekly (1wk): 2000–present (~1,357–1,377 bars per asset)
MFI periods tested: 7, 10, 14, 20
Thresholds: MFI < 20, < 25, < 30
Forward return horizons:
- Hourly: 1h, 2h, 4h, 8h, 24h (primary: 4h)
- Daily: 1d, 3d, 5d, 10d, 21d (primary: 5d)
- Weekly: 1w, 2w, 4w, 8w (primary: 4w)
Statistics per combination: signal count, frequency per year, mean and median forward return, win rate, 2,000-iteration bootstrap 95% CI on the primary horizon, Welch’s t-test p-value versus all-bars baseline. Combinations with N < 10 were dropped. Results flagged ** at p < 0.01 and * at p < 0.05.
MFI formula:
tp = (High + Low + Close) / 3
rmf = tp × Volume
pos = rmf where tp > prev_tp, else 0
neg = rmf where tp < prev_tp, else 0
MFR = rolling_sum(pos, period) / rolling_sum(neg, period)
MFI = 100 − (100 / (1 + MFR))
Caveat on Regime Diversity: A potential limitation is present in datasets covering periods shorter than 15 years; such datasets may not capture the full diversity of market regimes, which could impact the generalizability of findings, particularly in the hourly timeframe with only 2 years of data.
The Headline Numbers
281 combinations tested. 34 reached p < 0.05. 11 reached p < 0.01.
By timeframe:
| Timeframe | Combinations | Significant (p < 0.05) | Rate |
|---|---|---|---|
| Daily (1d) | 96 | 20 | 21% |
| Weekly (1wk) | 89 | 6 | 7% |
| Hourly (1h) | 96 | 8 | 8% |
Daily bars are where MFI’s oversold edge actually lives. The hourly surface is noisy — high signal frequency produces low statistical power per signal, and many “significant” hourly results are marginal or point in the wrong direction. Weekly bars have the right direction for value assets but lack sample size to confirm.
Finding 1: IWM Is the Dominant Asset
IWM (Russell 2000) holds 4 of the 11 combinations significant at p < 0.01. No other asset gets more than 2.
IWM daily — all combinations, sorted by win rate:
| MFI Period | Threshold | N | Freq/yr | Mean 5d% | Win 5d% | p-value | Sig |
|---|---|---|---|---|---|---|---|
| 14 | < 20 | 86 | 4.0 | +1.65% | 74.4% | 0.000095 | ** |
| 20 | < 25 | 64 | 3.0 | +1.99% | 71.9% | 0.000489 | ** |
| 20 | < 20 | 19 | 0.9 | +2.18% | 68.4% | 0.033 | * |
| 14 | < 25 | 214 | 10.1 | +1.14% | 65.0% | 0.000401 | ** |
| 14 | < 30 | 425 | 19.9 | +0.76% | 63.3% | 0.012 | * |
| 10 | < 25 | 385 | 18.1 | +0.80% | 61.6% | 0.005 | ** |
| 10 | < 30 | 653 | 30.6 | +0.58% | 61.4% | 0.028 | * |
| 20 | < 30 | 243 | 11.4 | +0.80% | 60.1% | 0.042 | * |
| 7 | < 30 | 945 | 44.4 | +0.50% | 58.3% | 0.027 | * |
| 7 | < 25 | 614 | 28.8 | +0.54% | 57.8% | 0.032 | * |
The pattern is clean: as the threshold widens from < 20 to < 30, win rate compresses and mean return falls — but statistical significance persists across the board. IWM’s small-cap composition amplifies mean-reversion dynamics. When small-cap stocks get hit with enough selling pressure to push MFI below oversold, the bounce is systematic.
IWM MFI14 < 20 — return curve across all daily horizons:
| 1d | 3d | 5d | 10d | 21d |
|---|---|---|---|---|
| +0.81% | +1.39% | +1.65% | +2.04% | +1.90% |
| Win: 65% | Win: 69% | Win: 74% | Win: 71% | Win: 60% |
The 5-day window captures the peak of the mean-reversion impulse. By 10 days, returns remain elevated but dispersion widens. By 21 days, the signal washes out as macro and factor noise reasserts.
Finding 2: The Cross-Asset Daily Heatmap (MFI14 < 20)
Using the most commonly tested configuration — MFI14, threshold < 20, daily bars — across all 8 assets:
| Asset | N | Freq/yr | Mean 5d% | Win 5d% | 95% CI | p-value | Sig |
|---|---|---|---|---|---|---|---|
| IWM | 86 | 4.0 | +1.65% | 74.4% | [0.99, 2.33] | 0.000095 | ** |
| AAPL | 106 | 5.0 | +0.44% | 66.0% | [−0.89, 1.62] | 0.758 | |
| QQQ | 106 | 5.0 | +0.28% | 64.2% | [−0.39, 0.96] | 0.877 | |
| GLD | 88 | 4.1 | +0.63% | 63.6% | [0.11, 1.14] | 0.139 | |
| SPY | 77 | 3.6 | +0.97% | 62.3% | [0.19, 1.74] | 0.063 | |
| XLE | 111 | 5.2 | −0.85% | 62.2% | [−2.35, 0.47] | 0.126 | |
| TLT | 101 | 4.7 | +0.10% | 49.5% | [−0.21, 0.41] | 0.892 | |
| NVDA | 109 | 5.1 | −1.42% | 44.0% | [−3.25, 0.42] | 0.017 | * |
Three clusters emerge from this single table:
Cluster 1 — Strong mean-reverters (IWM): MFI < 20 fires rarely (~4x/year), win rate high, CI above zero, statistically significant.
Cluster 2 — Moderate reverters, not significant (AAPL, QQQ, GLD, SPY, XLE): Win rates in the 62–66% range — directionally correct but confidence intervals span zero. GLD comes closest to significance (p = 0.14). SPY’s wide CI reflects its occasional deep bear regimes where oversold just keeps going.
Cluster 3 — Broken signal (TLT, NVDA): TLT at 49.5% win is barely a coin flip — MFI oversold on bond ETFs in a secular rate-rising environment is not a reversal signal, it’s a continuation signal. NVDA at 44% with p = 0.017 significant is worse than baseline — oversold NVDA on daily bars is a momentum trap, not a bounce.
Finding 3: QQQ — Strong Win Rate, Not Statistically Significant
QQQ shows 64% win rate at MFI14 < 20 on daily bars, but p = 0.877. This is a familiar pattern from prior studies: large-cap index ETFs have enough idiosyncratic noise in their return distributions that 106 observations don’t produce the separation needed for conventional significance — even when 64 of them are winners.
The prior study (Study 7) found a Bonferroni-confirmed 1-day edge on QQQ MFI oversold (d = +0.718, p < 0.0001). That was testing the 1-day forward return specifically. At 5 days, the signal attenuates.
QQQ MFI14 < 20 — cross-timeframe at primary horizon:
| Timeframe | Primary | N | Freq/yr | Mean Return | Win% | p-value |
|---|---|---|---|---|---|---|
| Hourly (4h) | 4h | 103 | 52.0 | +0.24% | 57.3% | 0.109 |
| Daily (5d) | 5d | 106 | 5.0 | +0.28% | 64.2% | 0.877 |
| Weekly (4w) | 4w | 27 | 1.0 | +2.62% | 59.3% | 0.429 |
QQQ weekly shows +2.62% mean return at 4 weeks with 59% win rate — but N = 27 over 26 years yields no statistical power. The signal direction is consistent; the sample size is the problem.
Finding 4: MFI Period Selection — 14 and 20 Outperform Shorter Periods
Across all 281 combinations, mean win rate by MFI period:
| MFI Period | Mean Win% | Mean Forward Return | Significant Combos |
|---|---|---|---|
| 14 | 56.8% | 0.51% | 72 combos tested |
| 20 | 56.7% | 0.85% | 65 combos tested |
| 7 | 55.9% | 0.59% | 72 combos tested |
| 10 | 55.4% | 0.54% | 72 combos tested |
MFI-14 and MFI-20 produce better-quality signals — slightly higher win rates and, for MFI-20, materially higher mean returns. The longer window smooths out intraday noise and ensures the oversold reading reflects persistent selling pressure rather than a single high-volume spike.
The gap between MFI-14 and MFI-7 is not dramatic in absolute terms, but the best combinations (IWM MFI14 < 20 at p < 0.0001; IWM MFI20 < 25 at p < 0.0005) are concentrated in the 14–20 range. MFI-7 fires more often but with lower precision.
By timeframe, the story is consistent: daily bars show 57–60% mean win rate across all periods; hourly bars plateau at 53–55%; weekly bars 55–57%.
Finding 5: Threshold Sensitivity — Tighter Is More Selective, Not Always More Accurate
| Threshold | Mean Win% | Signal Frequency (daily) |
|---|---|---|
| < 20 | 55.7% | ~4–5× per year |
| < 25 | 56.3% | ~10× per year |
| < 30 | 56.4% | ~20× per year |
The tighter threshold (< 20) produces lower average win rate than < 25 or < 30 when measured across all assets — because it pulls in assets like NVDA and TLT where the deepest oversold readings are the worst outcomes. When restricted to mean-reverting assets, tighter thresholds outperform: IWM MFI14 < 20 wins 74.4% versus 63.3% at < 30.
The practical rule: for assets with confirmed mean-reversion character (IWM, SPY, GLD), tighter thresholds select cleaner entries at lower frequency. For momentum assets or rate-sensitive instruments (NVDA, TLT), tighter thresholds make things worse — they select the regime where the signal is most broken.
Finding 6: Hourly Bars — High Frequency, Mostly Noise
Hourly bars produced 8 significant combinations, but only 3 have a positive direction:
| Asset | MFI Period | Threshold | N | Freq/yr | Mean 4h% | Win 4h% | p-value | Sig |
|---|---|---|---|---|---|---|---|---|
| GLD | 7 | < 20 | 275 | 138.7 | +0.21% | 64.7% | 0.027 | * |
| NVDA | 10 | < 20 | 197 | 99.4 | +0.49% | 58.9% | 0.033 | * |
| QQQ | 7 | < 30 | 667 | 336.5 | +0.16% | 56.8% | 0.035 | * |
| IWM | 10 | < 20 | 201 | 101.4 | −0.09% | 44.3% | 0.033 | * |
| IWM | 10 | < 25 | 339 | 171.0 | −0.08% | 48.7% | 0.027 | * |
| GLD | 20 | < 20 | 10 | 5.0 | −0.47% | 20.0% | 0.004 | ** |
| GLD | 20 | < 30 | 141 | 71.1 | +0.42% | 58.2% | 0.006 | ** |
| AAPL | 14 | < 20 | 122 | 61.6 | −0.32% | 46.7% | 0.010 | ** |
The hourly results are contradictory. IWM — the strongest daily signal — produces a negative win rate (44%) at hourly resolution, and it’s statistically significant. GLD shows the opposite: 64.7% win rate for MFI7 < 20 at 4h forward, with a clear return curve across the 1h/2h/4h/8h/24h horizons:
GLD 1h, MFI7 < 20 — return progression:
| 1h | 2h | 4h | 8h | 24h |
|---|---|---|---|---|
| +0.047% | +0.126% | +0.21% | +0.29% | +1.07% |
| Win: 57% | Win: 62% | Win: 65% | Win: 64% | Win: 74% |
GLD’s intraday oversold signal builds momentum across the session — it’s not a 4-hour mean reversion play but a full-day accumulation pattern. That 24-hour win rate of 74% on 275 events is notable.
The key reason hourly MFI signals underperform: at hourly resolution, MFI < 20 fires 50–300 times per year. Multiple signals cluster within the same multi-day selloff. The bootstrap CI captures this high autocorrelation implicitly, but the effective independent sample count is far smaller than the raw N suggests.
Finding 7: Weekly Bars — High Signal Quality, Low Sample Size
6 weekly combinations reached p < 0.05:
| Asset | MFI Period | Threshold | N | Freq/yr | Mean 4w% | Win 4w% | p-value | Sig |
|---|---|---|---|---|---|---|---|---|
| TLT | 20 | < 25 | 21 | 0.9 | +1.76% | 81.0% | 0.0095 | ** |
| TLT | 20 | < 30 | 62 | 2.7 | +1.18% | 72.6% | 0.043 | * |
| IWM | 14 | < 30 | 75 | 2.9 | +2.74% | 68.0% | 0.034 | * |
| IWM | 7 | < 25 | 123 | 4.8 | +2.32% | 65.9% | 0.021 | * |
| SPY | 14 | < 20 | 17 | 0.65 | −6.31% | 35.3% | 0.043 | * |
| XLE | 14 | < 20 | 26 | 1.0 | −1.92% | 19.2% | 0.025 | * |
The two positive standouts (TLT MFI20 < 25, IWM MFI14 < 30) are genuinely strong signals obscured by small sample size. TLT weekly MFI20 < 25 fires roughly once per year and wins 81% of the time at 4-week forward return. The 8-week return (N=21) hits 90.5% — the highest win rate in the entire dataset.
TLT MFI20 < 25 weekly — return curve:
| 1w | 2w | 4w | 8w |
|---|---|---|---|
| +0.37% | +0.55% | +1.76% | +2.52% |
| Win: 71% | Win: 67% | Win: 81% | Win: 90% |
This is a patience trade. The edge builds over months — which is consistent with bond mechanics: after the selling pressure that drives MFI20 below 25 on weekly TLT, the subsequent 8 weeks tend to see mean-reversion buying from yield-seeking capital.
The two negative weekly signals (SPY and XLE at MFI14 < 20) are cautionary data. SPY weekly MFI14 < 20 fires 17 times in 21 years — these are true panic events (2008, 2020, brief 2022 episodes). The 35% win rate and −6.3% mean forward return says: when MFI hits extreme oversold on SPY at weekly resolution, the drawdown is not over. This fires almost exclusively during bear markets and is a continuation signal, not a reversal.
XLE weekly MFI14 < 20 shows similar behavior — energy sector panic at that intensity is a fundamental story (commodity cycle, capacity overhang) not a 4-week mean reversion candidate.
Finding 8: The NVDA and XLE Problem
Two assets consistently underperform the oversold thesis:
NVDA daily, MFI14 < 20: N = 109, mean 5d = −1.42%, win = 44.0%, p = 0.017 (significant in the wrong direction).
XLE daily, MFI14 < 20: N = 111, mean 5d = −0.85%, win = 62.2%, p = 0.126. Despite a 62% win rate, the mean return is negative — driven by the losing 38% producing large losses that swamp the gains.
These results replicate the pattern from Study 7 and the VWAP/RSI study: momentum-driven and cycle-dependent assets don’t mean-revert. Extreme oversold on NVDA usually means a growth narrative has broken — the market is not too pessimistic, it’s repricing correctly. Buying NVDA when volume-weighted selling pressure has reached maximum intensity is catching a falling knife, not fading a panic.
The exception: NVDA hourly MFI10 < 20 produces +0.49% mean 4h return with 58.9% win rate and p = 0.033. The intraday snapback from NVDA panic exists — at the 4-hour resolution, extreme intraday oversold creates a bounce. At daily resolution, those bounces are washed out by the continuing downtrend.
The MFI Period × Asset Matrix (daily, primary horizon)
Mean win rate by MFI period for each asset (daily bars, all thresholds averaged):
| Asset | MFI-7 | MFI-10 | MFI-14 | MFI-20 |
|---|---|---|---|---|
| IWM | 57.2% | 60.8% | 64.6% | 64.7% |
| SPY | 61.7% | 62.1% | 63.4% | 58.5% |
| QQQ | 59.7% | 60.3% | 62.3% | 58.5% |
| GLD | 60.4% | 60.9% | 61.0% | 62.7% |
| AAPL | 58.7% | 59.6% | 62.2% | 59.4% |
| TLT | 51.1% | 51.8% | 51.2% | 51.2% |
| XLE | 60.9% | 60.4% | 61.4% | 59.8% |
| NVDA | 54.7% | 53.8% | 48.1% | 51.6% |
MFI-14 and MFI-20 consistently rank best or tied for best across all mean-reverting assets. The 7-period MFI is too reactive — it fires on intraday volume spikes and produces lower-quality signals. The pattern holds whether the threshold is < 20, < 25, or < 30.
The Ranked Top 20
Top 20 combinations by win rate (N ≥ 15, p < 0.05):
| Asset | TF | Period | Threshold | N | Freq/yr | Mean% | Win% | CI [lo, hi] | p |
|---|---|---|---|---|---|---|---|---|---|
| TLT | 1wk | 20 | < 25 | 21 | 0.9 | 1.76% | 81.0% | [0.90, 2.72] | ** |
| IWM | 1d | 14 | < 20 | 86 | 4.0 | 1.65% | 74.4% | [0.99, 2.33] | ** |
| TLT | 1wk | 20 | < 30 | 62 | 2.7 | 1.18% | 72.6% | [0.46, 1.94] | * |
| IWM | 1d | 20 | < 25 | 64 | 3.0 | 1.99% | 71.9% | [1.07, 2.95] | ** |
| IWM | 1d | 20 | < 20 | 19 | 0.9 | 2.18% | 68.4% | [0.64, 4.00] | * |
| IWM | 1wk | 14 | < 30 | 75 | 2.9 | 2.74% | 68.0% | [1.07, 4.51] | * |
| IWM | 1wk | 7 | < 25 | 123 | 4.8 | 2.32% | 65.9% | [1.06, 3.56] | * |