Reigraph Research

Study 7: Per-Asset Profiling and the MFI Discovery — Six Tickers, One Unexpected Signal

An automated per-asset profiling study across SPY, QQQ, WMT, COST, JNJ, and NVDA that uncovered Money Flow Index (MFI < 20) as the most consistently powerful oversold signal across asset archetypes — outperforming RSI, Keltner Channel, and Bollinger Bands on 4 of 6 assets.

quantitative researchMFImoney flow indexasset profilingSPYQQQWMTNVDAtechnical indicatorsbacktesting

Overview

This study automated something we’d been doing manually: profiling individual tickers end-to-end — threshold optimization, VIX stratification, exit strategy ranking, max adverse excursion, and archetype classification. The pipeline runs on any ticker and writes an asset-specific decision tree node to the farm.

The first batch covered six Tier 1 assets: SPY, QQQ, WMT, COST, JNJ, NVDA.

The headline finding was unexpected: Money Flow Index (MFI < 20) is the most consistently powerful signal across all non-crypto asset archetypes — outperforming RSI, Keltner Channel, and Bollinger Bands on 4 of 6 assets. It wasn’t in our original signal battery and only appeared because we expanded it in Study 7. These findings are based on a historical dataset and should be considered as hypotheses needing further validation.


Methodology

  • Dataset: 2019-01-01 → 2026-05-19, yfinance daily OHLCV + VIX
  • Sample Size: Calculation based on trades and daily data points within the 7-year timeframe, N varies per asset.
  • Signal battery: 64 tests across 8 indicators × 8 time horizons
  • Threshold optimization: sweep RSI ∈ {20, 22, 25, 27, 28, 29, 30, 32, 35} + VIX panic/elevated thresholds
  • Exit optimization: 14 strategies (fixed_1d through fixed_30d, rsi_40–rsi_55, KC midline, BB midline)
  • MAE: max adverse daily close during hold period → stop recommendation
  • Statistical guard: Bonferroni correction (α = 0.000781 for 64 tests), 5,000 permutation bootstrap
  • Metric: Cohen’s d effect size (mean difference / pooled SD), Sharpe per trade (mean bps / std bps)

Results by Asset

SPY — fundamental_reverter

SignalCohen’s d (10d)bpsWin%P-value
bb_lower+0.0931.061%0.132
stoch_oversold-0.0160.659%0.765
obv_weak-0.0370.563%0.609
  • Optimal RSI: < 35 (broader than other assets)
  • Best exit: rsi_40 → 2.0 bps, win=92%, Sharpe=0.457, ~4d hold
  • Stop: -20.05% (wide — SPY recovers from deep drawdowns)
  • Bonferroni survivors: 0

Note: SPY’s weak signal cohesion is largely explained by the 2022 rate-shock bear market. RSI mean-reversion works in fear-driven selloffs but not in fundamental repricing. SPY’s 7-year window captured 2022 in full; this suppressed every indicator’s d. The system correctly identifies this as a regime problem, not a signal failure.


QQQ — fast_index

SignalCohen’s d (10d)bpsWin%P-value
rsi_oversold+0.1471.661%0.021
bb_lower+0.1091.464%0.049
mfi_oversold+0.0161.067%0.411

Bonferroni confirmed signals (1-day horizon):

  • mfi_oversold 1d: d=+0.718, bps=2.5, win=67%, p<0.0001

  • rsi_oversold 1d: d=+0.464, bps=0.9, win=75%, p=0.0005

  • Optimal RSI: < 28 (tighter than SPY)

  • Best exit: KC midline → 2.2 bps, win=83%, Sharpe=0.613, ~30d hold

  • VIX sweet spot: elevated (>27) — panic VIX actually hurts returns (-0.9 bps, win=46%)

  • Stop: -14.0%

QQQ’s MFI Bonferroni confirmation at 1-day (d=+0.718) is the strongest statistically validated edge in the entire study so far, though this should be contextualized within the limitations of the dataset period and potential regime specificity.


WMT — fundamental_reverter

SignalCohen’s d (10d)bpsWin%P-value
mfi_oversold+0.1221.375%0.034
bb_upper+0.0110.967%0.403
bb_lower+0.0040.960%0.528
  • Optimal RSI: < 22 (selective threshold — only takes extreme moves)
  • Best exit: fixed_30d → 6.8 bps, win=90%, Sharpe=1.169
  • Stop: -7.7% (tight — WMT doesn’t move much)
  • Bonferroni survivors: 0

WMT’s MFI win rate (75%) is the second-highest in the study. The 30-day hold and 90% win rate make this a patient, high-conviction setup. Defensive consumers recover slowly but reliably, with the signal strength indicating potential trading efficacy, though transaction costs might offset small raw gains.


COST — reclassified to fundamental_reverter

SignalCohen’s d (10d)bpsWin%P-value
mfi_oversold+0.3032.882%0.005
bb_upper+0.0271.166%0.219
obv_weak-0.1040.656%0.579
  • Optimal RSI: < 20 (extreme threshold)
  • Best exit: fixed_30d → 9.4 bps, win=91%, Sharpe=1.499 ← highest in study
  • Stop: -12.7%
  • Bonferroni survivors: 0

COST was previously classified as “unknown” by the pipeline’s archetype classifier (insufficient RSI signal cohesion to match any profile). But the MFI signal is definitive: d=+0.303, win=82%, and the fixed_30d exit produces Sharpe=1.499 — this high Sharpe ratio indicates significant signal strength but must be tempered with the realization that transaction costs and signal frequency (average of ~2/year) play critical roles in practical applicability.


JNJ — fundamental_reverter

SignalCohen’s d (10d)bpsWin%P-value
bb_lower+0.2221.368%0.031
mfi_oversold+0.2091.365%0.029
kc_lower+0.1771.352%0.074
  • Optimal RSI: < 22
  • Best exit: rsi_45 → 1.5 bps, win=65%, Sharpe=0.596, ~11d hold
  • Stop: -7.56%
  • Bonferroni survivors: 0

JNJ is the most signal-diversified asset in this batch: BB lower, MFI, and KC lower all show meaningful positive Cohen’s d. The diversity may indicate robustness but also suggests that no single signal dominates significantly over transaction costs and uncertainties.


NVDA — fast_index (revised signal hierarchy)

SignalCohen’s d (10d)bpsWin%P-value
kc_lower+0.3796.174%0.002
bb_lower+0.2945.472%0.011
mfi_oversold+0.1724.275%0.047
  • Optimal RSI: < 32 (wide — NVDA moves fast and hard)
  • Best exit: rsi_55 → 6.7 bps, win=83%, Sharpe=0.624, ~14d hold
  • Stop: -25.75% (wide — NVDA’s MAE median is -7.94%, 90th pct -19.09%)
  • Bonferroni survivors: 0

Two important corrections from earlier assumptions demonstrated the need for adaptive understanding of signal hierarchies and persistent attention to trading dynamics that could include wide stops impacting realized opportunities.


Cross-Asset Summary

AssetArchetypeTop SignalBest ExitSharpeStop
COSTfundamental_revertermfi_oversold (d=+0.303)fixed_30d1.499-12.7%
WMTfundamental_revertermfi_oversold (d=+0.122)fixed_30d1.169-7.7%
JNJfundamental_reverterbb_lower (d=+0.222)rsi_450.596-7.56%
NVDAfast_indexkc_lower (d=+0.379)rsi_550.624-25.75%
QQQfast_indexmfi_oversold (d=+0.718)kc_midline0.613-14.0%
SPYfundamental_reverterbb_lower (d=+0.093)rsi_400.457-20.05%

Key Findings

1. MFI shows strong results within this dataset — with important caveats

MFI (Money Flow Index, period=14) ranked #1 or #2 on 4 of 6 assets within this 7-year window. It was the top signal on COST, WMT, and QQQ at their respective best horizons. This is a volume-weighted RSI — it captures selling pressure with more context than price-only RSI, but its performance is contingent on the dataset’s regime characteristics.

Three caveats before treating this as definitive:

First, limitations in dataset period (2019–2026) — containing only two major market corrections — suggest the findings may not entirely extrapolate to other market conditions. A broader 20-year study (Do Technical Indicators Actually Work?) ranks MFI 9th of 14 indicators with limited Bonferroni survivors. A 21-year QQQ-specific study emphasizes the potential of MFI < 20 being indistinguishable from noise (p=0.882). This suggests regime-dependent behavior might skew results.

Second, MFI thresholds were unoptimized. While RSI was evaluated across several thresholds, MFI was only tested at the textbook < 20 level, potentially overstating its relative efficacy compared to optimized signals.

Third, the actionability lies in the composite nature of signals. For example, entering when MFI recovers into the 20–30 zone may outperform the simpler < 20 entry, as suggested by deeper QQQ studies. The development of optimized threshold strategies and broader dataset validation is integral.

2. KC lower is NVDA’s best signal, not BB lower

Study 6’s suggestion about BB lower being suitable for high-beta growth stocks like NVDA was revisited — KC lower (d=+0.379) proven more effective than BB lower (d=+0.294). NVDA’s high volatility aligns better with KC’s ATR-based adaptive measures.

3. QQQ’s Bonferroni double-confirmation is rare — but conflicts with the 21-year study

While this study observed two signals surviving the Bonferroni correction within the same asset — an unusual finding — the larger context of conflicting results with studies over a longer window questions the generalizability of these findings. The 21-year study of QQQ offers more base for traditional analysis, indicating the need for refining forward procedures and blending signal incorporation when broader timeframes are explored.

4. Panic VIX (>27) hurts QQQ despite helping others

For SPY, JNJ, and WMT, elevated/panic VIX generally sustains or enhances returns, whereas panic VIX depresses QQQ performance. This stems possibly from QQQ’s sensitivity to synchronized liquidations across its sector-dominating components, sharpening a thesis that hedging strategies might need stratified VIX encoding.

5. COST Sharpe=1.499 is exceptional

COST’s Sharpe=1.499 arises from a unique 30-day signal pattern, but translating this into practical returns requires consideration of transaction costs and infrequent signal firing. Average signal frequency in conjunction with real-world trading constraints should frame any strategic deployment.


Tree Farm Updates

Based on this study:

  1. nodes/indicators/mfi_oversold.json — expanded valid_archetypes to include fast_index and high_vol_growth; updated per-asset d values
  2. nodes/assets/asset_archetype_table.json — COST reclassified to fundamental_reverter; fast_index description updated to reflect NVDA behavior; research_basis updated
  3. trees/finance/assets/{TICKER}.json — asset-specific trees written for all 6 assets with per-ticker optimal thresholds and exits

Next Steps

  • Study 8: AAPL, MSFT, TSLA, EEM + sector ETFs (XLV healthcare, XLU utilities, XLE energy, XLF financials, XLK tech)
  • MFI threshold search: Study 7 used MFI < 20 (standard). Need to search {15, 18, 20, 22, 25} per archetype to enhance comparative analysis.
  • Macro regime filter: A “rate-shock” node detecting Fed hiking cycles would help refine SPY’s signal reliability.
  • Integrate MFI into opportunity scanner: Currently, the scanner computes RSI and BB bands. MFI is to be incorporated into _stage2_technical_scan() to assess comprehensive evaluations.
  • Composite signal gate: Evaluate configurations like MFI < 20 AND RSI < 30 AND KC lower to ascertain possible creation of a Tier 0 (ultra-high-conviction) entry, focusing on thresholds and regime calibrations.