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

2. How the backtest runs

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:

ComponentMaxFull marks when
Profit factor25PF ≥ 3.0 (PF ≤ 0.5 scores 0)
Sharpe ratio25Sharpe ≥ 3.0
Maximum drawdown200% drawdown; ≥ 40% scores 0
Out-of-sample consistency20OOS PF ÷ overall PF ≥ 1.2 (needs ≥ 5 OOS trades)
Sample size10≥ 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.

The grade summarises historical statistics. It is not a prediction of future profitability. An A-grade strategy can still lose money going forward.

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:

Every generated EA is also compiled in MetaEditor before delivery and must report zero errors.

6. Limitations (known and stated)

7. What we hold ourselves to