Skip to main content

When “different results” are normal

Different backtest results are not always a bug. Results can differ because of:
  • different data sources and coverage
  • different evaluation timing (close vs intrabar)
  • different execution assumptions (fills, fees, slippage)
  • different indicator implementations or defaults
  • different position sizing rules
This page shows the most common causes and a simple diagnostic flow.

1) Data source and coverage differences

Two platforms rarely use identical historical data. Differences may include:
  • missing candles or gaps
  • different exchange source
  • different candle construction rules
  • different listing start dates
Fix:
  • confirm the backtest range and data coverage

Data coverage

Understand what data your test is using.

2) Timeframe mismatch

A strategy is defined on a timeframe. Even a small mismatch (15m vs 1h) changes:
  • indicator values
  • crossover points
  • trade count
  • volatility profile
Fix:
  • confirm the exact timeframe used on both sides
  • do not compare a “similar” timeframe

3) Candle-close vs intrabar evaluation

Many platforms allow intrabar logic or simulate fills inside candles. Trinigence evaluates logic on candle close by default. Impact:
  • entries and exits may happen later than expected
  • crossovers trigger only when present at close
  • stop/take profit behavior may differ if another tool assumes intrabar fills
Fix:
  • compare on candle-close mode where possible
  • validate trades, not just metrics

How backtesting works

Learn the evaluation model behind the simulator.

4) Indicator defaults and parameter differences

Indicators often have:
  • default lengths
  • smoothing rules
  • internal calculation variants
Example:
  • one tool uses EMA smoothing for RSI
  • another uses Wilder’s smoothing (standard)
Fix:
  • explicitly specify parameters in your strategy description
  • avoid relying on “platform defaults”

Indicator parameters

See how parameters and defaults change behavior.

5) Execution assumptions (fees, slippage, fill model)

Even with identical trades, results differ due to execution modeling:
  • maker/taker fees
  • slippage assumptions
  • limit vs market fill behavior
  • partial fills vs full fills
Fix:
  • compare settings side-by-side
  • ensure fees and slippage are aligned
If one platform assumes zero fees and the other includes fees, results can diverge significantly.

6) Position sizing differences

PnL depends on sizing. Differences can come from:
  • fixed size vs % of equity
  • compounding vs static sizing
  • leverage assumptions
  • one-trade-at-a-time vs multiple positions
Fix:
  • compare normalized metrics (profit factor, expectancy)
  • align sizing rules when comparing PnL

7) Schedule & filters differences

Time filters can silently eliminate trades. Examples:
  • “weekdays only” applied in one platform but not in another
  • timezone differences shift session windows
Fix:
  • compare schedule definitions
  • confirm timezone

Time & session logic

Understand session/time rules and timezone impact.

A fast diagnosis workflow

When results differ, do this:
1

Verify market, timeframe, date range

Confirm symbol, timeframe, and backtest window match exactly.
2

Compare trade count and first 10 trades

If trades differ early, the difference is structural (logic/data/timing).
3

Check evaluation mode (close vs intrabar)

Align candle-close evaluation if possible.
4

Lock indicator parameters and defaults

Explicitly define all parameters.
5

Align execution assumptions

Fees, slippage, sizing, and fill model.

Common patterns you’ll see

Likely sizing, fees, slippage, or fill model differences.
Likely timeframe mismatch, data differences, or indicator defaults.
Often data gaps, session timezone shifts, or regime differences.
Often caused by candle-close evaluation or stronger filtering assumptions.

Compare trades first.
Compare metrics second.