← Back to Learn
III AdvancedWeek 19 • Lesson 58Duration: 50 min

MR Mean Reversion Strategies

Beyond pairs — the full playbook for fading moves and catching snapbacks

Learning Objectives

  • Understand mean reversion as a strategy class beyond pairs trading
  • Learn single-instrument mean reversion approaches
  • Combine mean reversion with regime detection for conditional alpha

Explain Like I'm 5

Mean reversion is the idea that prices snap back to some average after moving too far. It's not just pairs trading — you can apply it to single instruments. When RSI hits 20, the asset is likely to bounce. When RSI hits 80, it's likely to dip. But here's the critical caveat: mean reversion only works in ranging markets. In trends, it will destroy you. Combine it with regime detection and you get conditional mean reversion — one of the most powerful concepts in quantitative trading.

Think of It This Way

Mean reversion is a rubber band. Stretch it too far and it snaps back. But not all rubber bands snap back — some break. The key is knowing which instruments in which regimes are actually mean-reverting vs. trending. This is where most people get wrecked: applying mean reversion blindly without checking the regime first.

1Single-Instrument Mean Reversion

You don't need a pair to do mean reversion. Here are the classic single-instrument approaches: Bollinger Band reversal. Price touches the lower band, buy. Upper band, sell. Works beautifully in ranging markets, fails catastrophically in trends. Probably the most overused indicator in retail trading. RSI extremes. RSI < 20 suggests oversold, expect bounce. RSI > 80 suggests overbought, expect decline. Simple but effective — when used in the right regime. VWAP reversion. Price deviates from VWAP, expect reversion to VWAP by day's end. Popular in intraday equity/futures. One of the most reliable intraday signals. Z-score of returns. Standardize returns over a lookback window, trade extremes. Essentially pairs trading against the instrument's own history. Critical insight that will save your account: ALL mean reversion strategies work only when the asset is actually mean-reverting (Hurst < 0.45). In a trend (Hurst > 0.55), mean reversion signals are wrong — they tell you to sell breakouts and buy dips, which is the opposite of what you should do.

2The Regime Problem

This is the most important section in this lesson. Mean reversion works half the time and gets you killed the other half. The difference is entirely about regime. Production ML systems handle this through regime detection: - Hurst > 0.55: Trending regime. Use momentum signals. Follow breakouts. - Hurst < 0.45: Mean-reverting regime. Fade extremes. - Hurst ~ 0.50: Random walk. No edge either way. Sit out. The chart below shows what happens when you blindly apply mean reversion vs. using regime-adaptive switching. The regime-adaptive version avoids the massive drawdowns that occur when you fade a strong trend.

Blind Mean Reversion vs Regime-Adaptive Strategy

3Combining Mean Reversion with Momentum

The best strategies combine both — and this is where genuine alpha lives: Regime-adaptive approach: 1. Compute rolling Hurst exponent 2. If trending regime: use momentum (follow breakouts) 3. If ranging regime: use mean reversion (fade extremes) 4. If uncertain: reduce position size or sit out This is conceptually what production ML systems do: - Features include both momentum (RSI, MACD) and mean-reversion indicators - The model learns to weight them based on regime features (Hurst, ADX) - In trending regimes, momentum features dominate - In ranging regimes, mean-reversion features get more weight Don't think of momentum vs. mean reversion as competing strategies. Think of them as two tools for different conditions. The ML model learns when to use each. That's the entire game.

4The Hurst Exponent Reference

Since Hurst keeps coming up, here's a complete reference: - H = 0.50: Random walk. No predictability. No edge. - H > 0.55: Trending. Momentum works. Breakout trades. Follow the move. - H < 0.45: Mean-reverting. Fade extremes. Buy dips in ranges. Sell rips. - H > 0.70: Strong trend. Very high momentum persistence. Ride it. - H < 0.30: Strong mean reversion. Very high snapback probability. Rare but excellent. Compute Hurst on 100-200 bar windows. Re-compute every bar. Use it as a regime filter for every strategy decision. The key insight: Hurst is not constant. It changes as market conditions change. An asset can be mean-reverting on Monday and trending by Thursday. This is why you need to compute it rolling and adapt in real-time.

5Common Mean Reversion Traps

Five traps that will catch you if you're not careful: 1. Buying the dip in a crash. RSI = 15 during a market crash doesn't mean "oversold, buy." It means "strong downtrend, stay away." Regime matters more than the indicator reading. 2. Static lookback windows. Using RSI(14) forever. Different regimes need different lookbacks. Volatile regimes need shorter windows. 3. No position sizing. Mean reversion gives you lots of small winners and occasional big losers. If you size all trades equally, one bad trade wipes out five winners. 4. Averaging down. "It's even more oversold now, I'll buy more." This is how accounts blow up. Mean reversion is not averaging down. Always have a stop-loss. 5. Ignoring transaction costs. Mean reversion trades are typically small in magnitude. If your costs eat 30%+ of gross profit, the strategy is dead. We'll cover this in the TCA lesson.

Key Formulas

Bollinger Band Width

Width measures how stretched the bands are. Narrow bands indicate low volatility (breakout imminent). Wide bands indicate high volatility (mean reversion more likely).

Hands-On Code

Regime-Adaptive Mean Reversion

python
import numpy as np

def regime_adaptive_strategy(prices, hurst, rsi, lookback=20):
    """Switch between momentum and mean reversion based on regime."""
    signals = []
    
    for i in range(lookback, len(prices)):
        h = hurst[i]
        r = rsi[i]
        
        if h > 0.55:  # Trending regime
            # Momentum: follow the trend
            momentum = (prices[i] - prices[i-lookback]) / prices[i-lookback]
            if momentum > 0:
                signal = 1  # long
            else:
                signal = -1  # short
        elif h < 0.45:  # Mean-reverting regime
            # Mean reversion: fade extremes
            if r < 25:
                signal = 1  # oversold, buy
            elif r > 75:
                signal = -1  # overbought, sell
            else:
                signal = 0  # no trade
        else:
            signal = 0  # uncertain regime, sit out
        
        signals.append(signal)
    
    signals = np.array(signals)
    print(f"=== REGIME-ADAPTIVE STRATEGY ===")
    print(f"Momentum trades: {np.sum(np.abs(signals[np.array(hurst[lookback:]) > 0.55]))}")
    print(f"MeanRev trades:  {np.sum(np.abs(signals[np.array(hurst[lookback:]) < 0.45]))}")
    print(f"Skipped:         {np.sum(signals == 0)}")
    
    return signals

Switches between momentum and mean reversion signals based on the rolling Hurst exponent, demonstrating how regime conditioning prevents catastrophic losses from applying the wrong strategy.

Knowledge Check

Q1.Hurst exponent is 0.60 and RSI is 22. Should you buy (mean reversion) or wait?

Assignment

Implement a regime-adaptive strategy that switches between momentum and mean reversion based on Hurst exponent. Compare performance to a pure momentum strategy and a pure mean reversion strategy.