Spread and Slippage: The Costs That Decide Whether an Edge Exists

9 min readQuantParadox research

The difference between a good strategy and a bad one is often smaller than the difference between modelling costs and not modelling them. That ordering surprises people, and it should change what they check first.

The short answer

Spread and slippage frequently determine whether a forex strategy is profitable, and a backtest run at zero cost is not a conservative estimate of a real one but a description of a different and more profitable strategy that does not exist.

How much do trading costs actually matter?

Costs matter enormously, and disproportionately for short-horizon strategies, because the cost is roughly fixed per trade while the target is not.

The clearest way to see it is as a fraction of your stop distance. A strategy risking 10 pips and paying 1.5 pips round-trip is handing over 15% of its risk on every trade before the market does anything. A strategy risking 100 pips pays 1.5%. Same cost, same broker, completely different businesses.

This is why scalping strategies are so much harder than they look in a zero-cost backtest, and why the same logic tested on H4 can survive while its M5 version does not. The edge did not disappear between timeframes — the cost ate it.

It also explains a common and frustrating experience: a strategy that backtests beautifully and bleeds live. Nothing about the logic was wrong. The arithmetic was just done without the largest term.

What spread and slippage assumptions should you use?

Use assumptions at or above what your broker actually charges, deliberately, because being too conservative understates a real edge while being too generous invents one that does not survive contact.

Spreads are not constant, and the variation is not random. They widen around scheduled news, at session boundaries, at the daily rollover, and during illiquid holiday periods. A single average spread applied uniformly will flatter any strategy that trades disproportionately at those moments — which many session-based, breakout and news-reaction strategies do by design rather than by accident.

Slippage is a separate cost from spread and behaves differently. It is worst for stop orders in fast conditions, which is precisely when a strategy is most likely to be exiting under pressure. Modelling it as zero means assuming your worst exits happen at your requested price, which is the opposite of what actually occurs.

Commission and swap deserve a mention even though they are smaller. Commission is straightforward per-lot arithmetic. Swap matters only if positions are held overnight, but for a swing strategy held for days it accumulates into a real number, and it can be positive or negative depending on direction.

Why is my live trading worse than my backtest?

Live trading underperforms a backtest for four reasons, and cost modelling is usually the largest single contributor even when it is not the only one.

Costs set below reality, applied to every trade, compounding with frequency.

Slippage omitted, which biases exactly the trades that hurt most.

Parameters fitted on the same data used to report the result, so live trading is the first genuine out-of-sample test.

Execution differences — delayed fills, requotes, partial fills, the difference between the price you saw and the price you got.

A useful diagnostic: compare your live average cost per trade against what the backtest assumed. If the gap explains most of the performance difference, the strategy logic may be fine and the modelling was the problem. If it does not, the problem is the strategy, and no cost adjustment will rescue it.

Should you use one cost model everywhere?

Yes — whatever assumptions you choose, apply them identically across every test you intend to compare, or the comparison measures your settings rather than your strategies.

A common and subtle failure is running exploratory tests at one cost level and final validation at another. The exploratory results then guided which strategies you kept, using arithmetic you later changed. The selection was made under the wrong model, and the direction of the error is reliably flattering.

The same applies across instruments. If you use a single spread assumption for both EUR/USD and an exotic pair, the exotic is being tested under conditions that do not exist, and any conclusion that it performs comparably is an artefact of the assumption.

Fixing this is not difficult, which is what makes it worth doing: define your cost model once, per instrument, and make every test read from it.

Questions people actually ask

What spread should I use for forex backtesting?

Use a figure at or above your broker's typical spread for that specific pair, and account separately for the wider spreads that occur around news and session boundaries if your strategy trades at those times. Being too conservative understates a genuine edge, which is much the safer direction to be wrong in.

Should I include slippage in a backtest?

Yes, particularly for stop orders and any strategy active in fast conditions. Slippage is separate from spread and tends to be worst exactly when a strategy is exiting under pressure, so omitting it systematically flatters results in the specific trades that do the most damage to a real account.

Why is my live trading worse than my backtest?

The most common causes are cost assumptions below reality, slippage not modelled, parameters fitted on the same data used to report results, and execution differences such as delayed or partial fills. Comparing your actual average cost per trade against what the backtest assumed usually identifies how much of the gap is modelling rather than strategy.

Does spread matter more on lower timeframes?

Considerably more, because cost is roughly fixed per trade while the profit target shrinks with the timeframe. A strategy targeting 10 pips pays the same spread as one targeting 100, so the shorter-horizon version surrenders a far larger share of its edge on every single trade.

The only backtest that settles it is yours.

Build a strategy from a sentence, paste your own Python, or import your live trade history and have it graded. Five full backtests free, no card, and we'll tell you plainly when the result is indistinguishable from luck.

We publish research and tooling, not trading advice, and we make no claim about future returns. Everything above describes how to test an idea — not a reason to trade one.