Methodology
This page documents how every number on this site is produced: where the data comes from, how the backtest runs, how the A–F grade is calculated, and how we verify that a generated EA behaves the same as the engine that tested it. Where something is a limitation, we label it as one.
1. Historical data
- Data source is Dukascopy minute-level (M1) history, timestamped in UTC.
- Coverage is currently 14 instruments, starting January 2022, and is updated daily through the previous day's close.
- When no date range is given, backtests use a rolling 24-month window.
- Higher timeframes (M5 through D1) are aggregated from the M1 series, not downloaded separately.
2. How the backtest runs
- Bar-by-bar simulation. Signals are evaluated once per bar close; no future data is read.
- Stops and targets are checked at M1 precision — not merely against the high and low of the strategy-timeframe bar.
- If both stop and target are touched inside one bar, the unfavourable side fills (a deliberately conservative assumption).
- A fixed per-instrument spread is charged; entry prices include the configured slippage. Commission and swap are not modelled (see section 6).
- In multi-timeframe strategies, a higher-timeframe indicator only ever reads closed higher-timeframe bars.
3. Out-of-sample split
By default the final 20% of the period is held out as an out-of-sample segment. It takes no part in parameter tuning, and the report scores its trades, net profit, profit factor and win rate separately. A large gap between the two columns usually means the parameters are overfit.
4. How the A–F grade is calculated
Out of 100 points, weighted across five components:
| Component | Max | Full marks when |
|---|---|---|
| Profit factor | 25 | PF ≥ 3.0 (PF ≤ 0.5 scores 0) |
| Sharpe ratio | 25 | Sharpe ≥ 3.0 |
| Maximum drawdown | 20 | 0% drawdown; ≥ 40% scores 0 |
| Out-of-sample consistency | 20 | OOS PF ÷ overall PF ≥ 1.2 (needs ≥ 5 OOS trades) |
| Sample size | 10 | ≥ 60 trades |
Letter bands: A ≥ 80 · B ≥ 65 · C ≥ 50 · D ≥ 35 · F < 35. One hard rule overrides the rest: if net profit is negative the score is capped at 40 — a losing strategy can never grade above D.
5. Does the generated EA match the backtest?
This is the step most tools skip and the one that matters most: an accurate backtest is worthless if the MQL5 code it hands you behaves differently. We run the same strategy on both sides and diff the fills:
- Dukascopy data is imported into MT5 as a custom symbol and the generated EA runs in the MetaTrader 5 Strategy Tester;
- its fills are diffed against our engine's over the same period.
- Measured result: on single-timeframe strategies, 48 of 48 trades matched, entry prices identical in 48 of 48, exit reasons identical in 48 of 48. On a multi-timeframe (triple screen) strategy, 17 of 17 matched.
- Known benign difference: the tester's tick generation can overshoot a stop fill by up to roughly 1.2 pips.
Every generated EA is also compiled in MetaEditor before delivery and must report zero errors.
6. Limitations (known and stated)
- Commission and swap are not modelled. Strategies holding positions for long periods will underperform their backtest in reality.
- Spread is simulated as a fixed value, so widening around major news releases is not reproduced.
- Partial fills, rejections and slippage distributions are not simulated; orders are assumed to fill at the expected price (stops excepted).
- Your broker's data differs from ours — different feed, different server timezone (usually EET), different spread model. Re-testing in your own MT5 will produce different numbers. Judge a strategy by whether the trend and statistical profile agree, not trade-for-trade (more in the school).
- Past performance does not indicate future results. A backtest filters out what clearly doesn't work; it does not forecast.
7. What we hold ourselves to
- Every figure on this site comes from the engine described above. We don't publish results we can't reproduce.
- Backtest reports are never paywalled and never softened — a strategy that deserves an F gets one.
- If the methodology changes, this page is updated.