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.

Short answer: a backtest and a live/MT5 execution almost never match exactly. The differences stem from how each environment models data, costs, execution, and time. Below are the concrete reasons, how to investigate your difference, and when it is too large to be "normal."

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.

Common reasons for numbers to differ

  1. Data granularity. Backtests run on 1-minute historical bar data, free for every user. Tick-level backtesting is coming soon. MT5's "Every tick" mode uses the full tick stream, so stops, take-profits, and intra-bar entries can resolve at different points than a 1-minute bar.

  2. Spread and commission. Modeled in the backtest; the actual broker spread varies (news, rollover, low liquidity), and the cost per trade accumulates.

  3. Slippage and execution latency. Live execution happens at a slightly different price than requested, and there is always some delay between your signal firing and the broker filling the order; the backtest assumes ideal, instant execution.

  4. Data feed. Profectus' history and your broker's feed are not identical, and no two brokers' feeds are identical either — different candles, gaps, and missing ticks show up depending on where the data comes from.

  5. 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.

  6. Weekend / session gaps: Treated differently between simulation and live.

  7. Requotes / rejected orders (live only): Non-existent in backtest, but change real results.

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.

In these cases, it is necessary to run more parameter optimizations and seek another set of parameters where the difference between backtest and live is smaller.

Did this answer your question?