Backtesting guide

Read an MT4 backtesting report without mistaking it for a forecast

An MT4 backtesting report summarizes one simulated EA run. Start by checking which version, data, period and costs produced it. Then reconcile the summary with the operation history. A high profit factor is an arithmetic property of this sample, not proof that the strategy will repeat it.

Read the practical guide

Key Takeaways

  • Results, Graph, Report and Journal serve different purposes. An operation row is not necessarily a completed trade.
  • Absolute, maximal and relative drawdown use different reference points or units.
  • The documented standard MT4 report does not list Sharpe or recovery factor; custom reports may add them.
  • Inspect concentration and costs before using the report to propose another test.

Preserve the run and follow its records

Save the HTML report and EA inputs together. Results lists operations such as entries, modifications and exits; use the order ticket to relate them. Graph shows the account progression, Report contains aggregate statistics, and Journal records the test process. A count of Results rows is not the report trade count.

  • Keep the original chronology. Sorting by profit is useful for concentration analysis but must not define the equity path.
  • Select an order and trace its submission, modifications and closure. Explain any duplicate or partial records before aggregating them.
  • Record code version, terminal build, broker symbol, dates, deposit, lot policy, model and spread beside the report. Without that context, two reports may not be comparable.

Recalculate a few totals before interpreting them

Gross profit sums winning results and gross loss sums losing results. Profit factor divides gross profit by the magnitude of gross loss. Expected payoff is the average result per trade. Keep the cost treatment consistent across these calculations. The following five-trade example is hypothetical, not a tested strategy.

Recalculate a few totals before interpreting them
ItemCalculationValue
Trade results+120, -50, +80, -70, +20Five closed trades
Gross profit / loss magnitude(120 + 80 + 20) / (50 + 70)220 / 120
Net result220 - 120100
Profit factor220 / 1201.8333
Average result100 / 520 per trade
Winning fraction3 / 560%
  • If the five results omit a hypothetical charge of 10 per trade, the adjusted results are +110, -60, +70, -80, +10. Net result becomes 50 and profit factor becomes 190 / 140 = 1.3571. Apply this only to costs not already included.
  • Profit factor above one indicates positive aggregate P&L under the included costs. Neither 1.5 nor 2.0 is a universal acceptance threshold.
  • With no losing trades, the denominator is zero. A displayed extreme or undefined ratio is not evidence of negligible risk.

Distinguish drawdown from future worst-case loss

Absolute drawdown measures the decline below the initial deposit. Maximal drawdown reports the largest peak-to-subsequent-trough currency decline, with its percentage. Relative drawdown finds the largest percentage decline, with its currency amount. Those last two extrema need not occur in the same episode.

  • Hypothetical equity sequence: 1,000 → 2,000 → 1,700 → 600 → 400. The largest monetary decline is 1,600 from 2,000 to 400, or 80%; the decline below initial capital is 600. A reported historical decline cannot bound the next one.
  • Use the actual equity series and specify whether open-position valuation is included. A balance-only spreadsheet can miss losses that recover before closure.
  • A profit-to-drawdown ratio does not measure elapsed recovery time. Measure time below the old peak separately, including an unrecovered interval at the end.

Check whether a small set of trades drives the conclusion

Rank completed trades by contribution, then return to their dates and market context. Compare long and short sides, subperiods, exposure and costs. These breakdowns diagnose what happened; choosing a new rule after seeing them creates another hypothesis to evaluate.

  • In the five-trade example, removing the +120 result changes net P&L from +100 to -20. That is a concentration check, not a new strategy simulation: removing a trade can alter later capital and opportunities.
  • A fixed minimum of 100 or 200 trades does not establish independence or cover different market conditions. Report sample size, clustering and the uncertainty relevant to the decision.
  • Do not switch to a lower timeframe merely to increase the count. That changes the trading system and its execution requirements.

Turn a discrepancy into a controlled next test

First locate a concrete mismatch: missing costs, a rejected order, an incorrect timestamp or an unintended sizing rule. Correct implementation errors before selecting new parameters. Keep the original report so the effect of each change remains visible.

  • For an execution-sensitive strategy, compare model and cost scenarios while keeping source and inputs fixed. The modeling-quality field is not a probability that the result is correct.
  • For a proposed signal or exit change, document why it should work and freeze a later evaluation window. A better rerun on the same data is still part of development.
  • If a custom report includes Sharpe, ask for the return frequency, annualization, risk-free rate and equity definition. Do not assume it is comparable to another platform simply because the label matches.

Primary sources

This page is educational and does not provide investment advice. Backtests are hypothetical, depend on their data and assumptions, and do not guarantee future results. Trading can result in substantial loss.

Frequently Asked Questions