Mean Reversion Strategy
Overextension → Revert to Mean
📊At a Glance
Best For
Range-bound markets with price oscillating around EMA
Timeframes
1h regime / 15m setup / 5m entry
Typical Hold
30 min - 4 hours
Primary Targets
- •EMA(20) touch
- •VWAP touch
- •Opposite Bollinger Band
Common Failure Mode
Counter-trend trap — price stays overextended in strong trends
When to Avoid
- •Strong 1h trends
- •Breakout conditions
- •News events
- •Wide spreads
Choose Your Variant
Different configurations suit different trading styles. Pick the variant that matches your goals:
Choose a Variant
| If you want... | Choose... | Notes |
|---|---|---|
| Fewer, higher-quality signals | Strict Range-Only | Enable "Require Range Regime" — only triggers when 1h is ranging |
| Higher reliability per signal | 15m Confirmation | Enable "Prefer 15m Z-Score" — waits for higher timeframe confirmation |
| Trend-safe mode | With-Trend Pullback | Default settings with trend suppression — only takes signals in trend direction |
| Maximum signal frequency | Standard | Default settings — more signals, requires careful filtering |
New to mean reversion? Start with "Strict Range-Only" mode for the highest quality setups while you learn the pattern.
The Concept
In range-bound markets, price often snaps back after an overextended move away from a fair value proxy like the EMA or VWAP. This strategy captures these "rubber band" moves back to the mean.
Key Insight: This works best when the 1-hour trend state is RANGE. In trending markets, price can stay overextended much longer than expected — which is why we suppress signals against strong trends.
Multi-Timeframe Detection Flow
The strategy uses multiple timeframes to filter and confirm setups:
Long Mean Reversion Setup
Buy the Dip — Price Overextended Below EMA
Price drops sharply below EMA(20), creating a Z-score ≤ -2.0. The reclaim candle confirms reversal.
Short Mean Reversion Setup
Sell the Rip — Price Overextended Above EMA
Price rallies sharply above EMA(20), creating a Z-score ≥ +2.0. The rejection candle confirms reversal.
Z-Score Calculation
z_ema20 = (close - ema_20) / stdev(close, 50)The Z-score measures how many standard deviations price is from the 20-period EMA. Values beyond ±2.0 indicate overextension.
Buffer Calculation
buffer = max(2 × spread, 0.05 × ATR)The buffer accounts for spreads and volatility when setting invalidation levels and entry zones.
Trend Suppression (Key Safety Feature)
Don't fight strong momentum. The strategy automatically suppresses signals that would trade against the 1-hour trend:
Blocked Signals:
- Long when 1h trend is DOWN
- Short when 1h trend is UP
- Counter-trend mean reversion is high risk
Allowed Signals:
- Any direction when 1h trend is RANGE
- Long when 1h is UP (pullback)
- Short when 1h is DOWN (rally fade)
Pro tip: Enable "Require Range Regime" in settings for the highest-quality signals — only trading when 1h is ranging.
Entry Conditions
- Regime— 1h RANGE preferred (or not counter-trend)
- Long trigger— Z-score ≤ -2.0 + rejection/reclaim
- Short trigger— Z-score ≥ +2.0 + rejection/reclaim
- Session— Avoid off-hours & rollover (FX)
- Spread— Below P90 spread percentile
Exit Rules
- Target 1— EMA(20) or VWAP — the mean
- Target 2— Opposite BB or 2R
- Stop Loss— Below swing low / Above swing high + buffer
- TTL— 6-18 bars on 5m before expiry
Expiry & Time-to-Mean Expectations
Mean reversion trades have limited shelf life. Set expectations upfront to avoid holding losers.
Typical Time-to-Target
- Intraday:1-4 hours to reach T1 (EMA20)
- Swing:1-3 sessions to complete move
Suggested Expiry Windows
- Intraday:4 hours max from entry
- Swing:End of 3rd trading session
Early Invalidation Conditions
Exit immediately if any of these occur before target:
- ✗Continued extension — Price moves further beyond initial z-score threshold
- ✗Regime flip — 1h trend changes from RANGE to directional (trend resumes)
- ✗Spread spike — Spread widens significantly (liquidity drying up)
- ✗Volume surge — Unusual volume against your position (breakout starting)
When time expires: Close the position at market. Do not extend or "hope" for the move. Mean reversion trades that don't work quickly often turn into trend trades against you.
When It Works
Range-bound markets where price oscillates around a mean. Works best during consolidation phases and with-trend pullbacks.
Watch Out For
Trending markets where price can stay overextended. The trend suppression filter helps avoid these, but be cautious.
Avoid When
During breakouts, news events, or when spreads are spiking. The 'rubber band' can break in these conditions.
Trigger Confirmation (Avoid Falling Knives)
Don't just buy because Z-score hit -2.0. Wait for rejection wick or reclaim candle:
Entry Candle Requirements
All required rules must be met. Optional rules improve setup quality.
Valid Entry Candle
- ✓Strong close back inside BB (reclaim)
- ✓Long lower wick rejecting lows
- ✓Candle body is 50%+ of total range
- ✓Closes in upper half of its range
Invalid Entry Candle
- ✗Doji or spinning top (body < 40%)
- ✗Still closing outside Bollinger Band
- ✗No rejection wick present
- ✗Closes near the extreme (not reversed)
For Long Entry:
- Z-score reaches ≤ -2.0
- Rejection wick > 30% of candle range
- OR close > prior candle's high (reclaim)
- Price closing off lows (30%+ off low)
For Short Entry:
- Z-score reaches ≥ +2.0
- Rejection wick > 30% of candle range
- OR close < prior candle's low (reclaim)
- Price closing off highs (30%+ off high)
Reclaim confirmation enhancement: For higher-quality entries, enable "Require Reclaim" in settings to wait for a close beyond the prior bar's extreme before triggering.
See an Example Signal
Here's what a real Mean Reversion signal looks like in the app:
Quality score is calculated from regime alignment, structure quality, timing, and technical confluence. Higher scores indicate stronger setups.
Safety Features
Session Filter
Avoids low-liquidity periods like Asia off-hours and FX rollover (21:00-22:00 UTC). Crypto trades 24/7 so this filter is bypassed.
Spread Percentile
Blocks signals when spreads are above P90 of historical values. Wide spreads eat into profits on mean reversion trades where the move is typically small.
Parameter Presets
Choose a preset based on your experience level and trading style:
Philosophy: Standard parameters with trend suppression enabled. Good balance of quality and frequency.
| Parameter | Value |
|---|---|
Z-Score Threshold zScoreThreshold | 2 |
Require Rejection Wick requireRejection | Yes |
Require Reclaim Candle requireReclaim | No |
Suppress Strong Trends suppressStrongTrends | Yes |
Require Range Regime requireRangeRegime | No |
Maximum Spread Percentile maxSpreadPercentile | 90 |
Require Good Session requireGoodSession | Yes |
Prefer 15-Minute Z-Score prefer15mZScore | No |
Note: These presets are starting points. Fine-tune individual parameters in Settings → Strategies → Mean Reversion.
Configurable Parameters
Fine-tune the strategy in Settings → Strategies:
Entry Parameters
| Parameter | Default | Tier | Description |
|---|---|---|---|
Z-Score Threshold zScoreThreshold | 2 | Free | Minimum z-score for overextension detection |
Require Rejection Wick requireRejection | Yes | Free | Require rejection wick (>30%) on entry candle |
Require Reclaim Candle requireReclaim | No | Pro | Wait for close > priorHigh (long) / < priorLow (short) |
Prefer 15-Minute Z-Score prefer15mZScore | No | Pro | Use 15m timeframe for more reliable z-score detection |
Filter Parameters
| Parameter | Default | Tier | Description |
|---|---|---|---|
Suppress Strong Trends suppressStrongTrends | Yes | Free | Block counter-trend signals in strong 1h moves |
Require Range Regime requireRangeRegime | No | Pro | Only trade when 1h is RANGE (strictest filter) |
Maximum Spread Percentile maxSpreadPercentile | 90 | Pro | Block when spread is above this percentile |
Require Good Session requireGoodSession | Yes | Free | Filter off-hours and rollover periods |
Best Practices
DO
- ✓Wait for z-score ≥ 2.0 before considering a trade
- ✓Keep "Suppress Strong Trends" enabled (default)
- ✓Look for confluence with Bollinger Band touches
- ✓Use rejection wicks or reclaim candles as confirmation
- ✓Target the EMA20/VWAP (the mean) for T1
DON'T
- ✗Trade against a strong 1h trend ("catch the falling knife")
- ✗Lower z-score threshold below 1.5 (too many false signals)
- ✗Trade during news events or high volatility
- ✗Ignore spread conditions (wide spreads kill small moves)
- ✗Expect large moves — mean reversion targets are modest
VWAP vs EMA Mean Reversion
Both strategies fade extended moves back to a mean, but they differ in key ways. Use this comparison to pick the right tool for your conditions.
| Aspect | VWAP Reversion | EMA Mean Reversion |
|---|---|---|
| Anchor | Session VWAP (resets daily) | EMA20 (continuous) |
| Session dependence | High (best in active sessions) | Lower (works across sessions) |
| Best regimes | Ranging intraday | Extended/oversold any timeframe |
| Typical time-to-target | 15 min - 2 hours | 1-4 hours |
| Volume consideration | Built into VWAP | Separate confirmation |
| Common failure mode | Trend day grind | Strong trend continuation |
When to Use VWAP Reversion
- Active trading sessions (London, NY overlap)
- Institutional participation expected
- Forex majors with real volume data
- Intraday trades with 1-2 hour targets
When to Use EMA Mean Reversion
- Any session, including off-hours
- Crypto (24/7 trading)
- Extended moves from any anchor
- Longer hold times acceptable
Learn more about VWAP Reversion
Session-anchored VWAP trades with institutional volume.
Strategy Variants — Detailed Configuration
Each variant has specific use cases and trade-offs. Choose based on your trading style:
Strict Range-Only Mode
Enable "Require Range Regime" to only trade when the 1h trend is ranging. This is the purest form of mean reversion — fewer signals but highest quality.
15m Confirmation
Enable "Prefer 15m Z-Score" to detect overextension on the 15m timeframe while still entering on 5m. This filters out short-term noise and produces more reliable signals.
With-Trend Pullback
Allow mean reversion long entries in a 1h UP trend(and short in DOWN trend). This catches pullbacks that snap back to the mean within the larger trend. Higher win rate than counter-trend trades.
Standard (Maximum Frequency)
Default settings with trend suppression enabled. Takes all valid signals regardless of regime, as long as they're not counter-trend. More signals, but requires more filtering.
Configuration tip: You can combine variants — for example, enable both "Require Range Regime" and "Prefer 15m Z-Score" for the strictest filtering. Adjust in Settings → Strategies → Mean Reversion.