Skip to main content

Why does my backtest in Profectus differ from MT5 (or live results)?

Backtests and live results never match exactly. Here is why, and how to move from a quick viability check in Profectus to a confident go-live.

Different results can come from different historical data, modelling modes, costs or test settings. First distinguish a comparison between two backtests from a comparison between a backtest and live trading.

Which one should you trust?

Both, for different jobs.

Use the Profectus backtester for the question that comes first: does this idea hold up at all, on this pair, over these years? That is your viability check, and it is the fastest way to find out whether an idea deserves more of your time. Most ideas do not survive it, and you do not need perfect data to find that out. This is where the important early work gets done.

MetaTrader 5 is where a surviving idea goes next: a tick-level test on your own broker's feed, then live execution on that same feed. Tick-level backtesting is coming to Profectus too, so this step will move in-house before long.

Rule of thumb: find out fast in Profectus, confirm on your broker's feed, then go live small.

Comparing a Profectus backtest with an MT5 backtest

Check these conditions before looking for a problem in the strategy:

  • Data and modelling mode. Profectus uses historical 1-minute bar data. In MT5, “Every tick” generates ticks from minute records; “Every tick based on real ticks” uses broker-recorded ticks where available. Your broker's historical feed may also differ from Profectus' data. These differences can change which entries and exits occur.

  • The test being compared. Use the same strategy version, symbol, date range and inputs. Check the time reference and session rules in both tests; do not assume your local clock is the clock used by either test.

  • Trading conditions. Compare the spread, commission and other execution assumptions configured in each test. Do not assume an MT5 backtest reproduces every condition of a live account.

Server time / time zone: Profectus and all trading logic follow the server time (broker server time), not your local time. This server time is usually GMT+2 / GMT+3 (EU DST), but depends on the broker. If your time-based rules assume another time zone, or if the backtest time reference differs from your live broker, session limits and time-based rules will shift, and other bars will trigger.

Comparing a backtest with live trading

Live results can also be affected by changing spreads, slippage, execution delays and rejected orders. These are additional checks when one side of the comparison is live trading. Do not use live-only conditions as an automatic explanation for a difference between two historical backtests; compare the actual settings and assumptions of those tests first.

When is the difference too large?

Variation due to costs/execution/time zone is expected. However, the signs below are not normal variance:

  • P&L with opposite sign (e.g., profit in MT5, loss in Profectus, or vice versa).

  • Magnitude far beyond what spread, slippage, and time zone can explain.

A large difference needs investigation; it does not by itself identify a bug. First compare the same strategy version, inputs, symbol, dates, test mode and time settings. Then check differences in data and trading conditions. If the cause is still unclear, share both reports and their settings with support. If you already shared one report, send the other one and its settings. Do not change strategy parameters just to make the reports agree: establish the cause first.

Did this answer your question?