Mean Revert Range V1
Mean-reversion EA for EUR/CHF exploiting its tight range profile. Bollinger Band and RSI confluence with ADX trend exclusion produce a 71% win rate at low drawdown. For traders who prefer steady grinding over high variance.
Key risk metrics
The numbers a serious trader looks at first.
- Max drawdown
- -5.8%
- Worst streak
- -7.1%
- Recovery time
- 22d
Worst peak-to-trough in 2020–2025 backtest.
4 consecutive losing trades, single cluster.
Time from drawdown trough to new equity high.
Performance
Returns are presented in context, not in isolation.
- 12M return
- +10.2%
- 5Y CAGR
- +9.8%
- Sharpe
- 1.94
- Win rate
- 71.3%
- Trades / month
- 12
- Sortino
- 2.76
Backtest equity curve
2020–2025, HFM real spread tick data, modelling quality 99%
Equity curve from 2020-01-01 to 2025-12-31 on the primary pair (EUR/CHF). Modelling quality 99%. Past performance does not guarantee future results.
Annual returns
Year by year
| 2020 | 2021 | 2022 | 2023 | 2024 | 2025 |
|---|---|---|---|---|---|
| +8.1% | +10.4% | +7.6% | +9.9% | +10.2% | +11.8% |
How it works
Mean Revert Range V1 exploits the statistically mean-reverting behaviour of EUR/CHF — a pair whose fundamental structure (both currencies backed by the eurozone and Swiss economies, historically correlated) creates a tight trading range relative to major pairs.
The entry logic requires three conditions simultaneously:
- Price closes beyond 2.0 standard deviations from the 20-period Bollinger Band mean.
- RSI confirms oversold (below 30 for longs) or overbought (above 70 for shorts).
- ADX is below 28 — confirming the pair is not in a trending regime.
When all three trigger, the EA enters at the next H4 open and targets the Bollinger mean as take-profit, with a hard stop beyond the outer band.
Why EUR/CHF for mean reversion
EUR/CHF is structurally better suited to mean reversion than major pairs because:
- SNB ceiling history: The Swiss National Bank has demonstrated willingness to intervene near extremes, creating implicit mean-reversion pressure.
- EUR/CHF correlation: The fundamental driver of both currencies (eurozone economic activity) is shared, so large divergences tend to be temporary.
- Lower ADR: Average daily range of ~50 pips vs ~100 pips for EUR/USD — overshoot beyond 2 SD tends to snap back faster.
The 2015 SNB floor removal is specifically excluded from the backtest window (the test starts 2020-01-01) to avoid survivorship distortion from a 6-sigma event.
Risk profile
- Max drawdown -5.8%, the worst occurring Q4 2022 when EUR/CHF spent 18 days above 2 SD due to energy-crisis-driven EUR pressure.
- Win rate 71.3% reflects genuine mean-reversion edge — not over-optimisation. The signal requires all three filters, which reduces trade count but improves quality.
- USD/CHF supplementary — the EA runs a lighter allocation on USD/CHF using identical logic; the pair contributes ~15% of total trades.
Recommended deployment
- $2,000 minimum for the conservative 0.01 lot allocation; swing trades hold 2–6 bars on H4 so overnight margin is required.
- HFM preferred for EUR/CHF spread consistency; Axiory is the verified backup.
- VPS recommended for the H4 candle-close detection, but the entry timing requirement is far less strict than scalpers.
What the EA does NOT do
- It does not trade when ADX is above 28. Disabling the trend filter is the most common user error and the one most likely to cause large drawdowns.
- It does not use averaging or martingale sizing.
- It does not attempt to trade the January 2015 SNB event — the backtest period is post-2020 by design.
Frequently asked questions
- Why EUR/CHF instead of a major pair?
- Mean reversion needs a pair that ranges rather than trends, and EUR/CHF's relative stability gives the tight, repeated ranges the logic trades. USD/CHF is supported as a secondary pair with similar behaviour.
- What is the main risk for a mean-reversion EA?
- A strong directional break that does not revert. The backtest's -5.8% max drawdown and -7.1% worst streak are modest, but a one-off regime shift — such as a central-bank shock — is the tail risk a range strategy carries. It holds a fixed stop precisely for that case.
- Is a roughly 10% annual return worth it?
- That depends on your goal. At a 1.94 Sharpe and a conservative rating, this EA is built for steady, low-volatility compounding rather than headline returns — a fit for capital preservation, not aggressive growth.
Parameters
Configurable inputs
| Name | Default | Suggested range | Description |
|---|---|---|---|
| BollingerPeriod | 20 | 14–30 | Lookback period for Bollinger Band mean and standard deviation. Longer periods make the bands wider and reduce signal frequency. |
| DeviationThreshold | 2.0 | 1.5–2.5 | Standard deviations above/below mean required to trigger an entry. Higher values mean fewer but higher-quality signals. |
| RSIOversoldLevel | 30 | 20–40 | RSI must be below this level (long) or above 100 minus this level (short) to confirm the mean-reversion signal. |
| HalfLifeBars | 6 | 3–12 | Expected bars to mean reversion. Sets the take-profit target at entry + (deviation / half-life) per bar. |
| TrendExclusionADX | 28 | 20–40 | If ADX exceeds this level on H4, the EA skips entries. Mean reversion fails in strong trends — this filter is critical. |
Broker compatibility
Verified spreads + execution
| Broker | Typical spread (pips) | Min lot | Execution | Verified | |
|---|---|---|---|---|---|
| HFM | 1.1 | 0.01 | market | ✓ verified | Open account → |
| AXIORY | 1.3 | 0.01 | market | ✓ verified | Open account → |
Spreads observed on Standard account types during London + New York session overlap, averaged across the most recent 30 trading days.
Glossary