Backtests that use a fixed spread flatter everything
A fixed spread of 1 pip makes testing simple. It is also wrong, because spreads change all day.
During busy hours the real spread might be 0.3 pips, and the test overstates costs, making the strategy look worse than it is. During the dead zone and at news it might be 3 pips, and the test understates costs, making the strategy look better.
The net effect depends on when the strategy trades. A scalper that fires mostly in quiet or volatile times can be badly misjudged.
Realistic testing uses variable spread, taken from actual historical quotes. Some platforms can import a spread column with the data. Others allow a custom spread model, such as a time of day profile.
An additional layer is adding a penalty for slippage on entry and exit, and testing with a short delay between signal and order.
Strategies that survive this treatment are far more likely to survive live trading than those tested with a neat fixed spread.
A decent middle ground, when real spread history is unavailable, is a time-of-day table: a low value for the busy hours, a higher one for quiet hours, and a very high one for rollover and news windows. It is not perfect, but it is far closer to reality than a single number.
Whatever model is used, there should be a stress test on top. Doubling every spread in the simulation and checking whether the strategy still holds up gives a sense of the margin of safety. A strategy that collapses when costs rise by a modest amount was never robust, merely lucky with conditions.
One more pitfall is the spread at the moment of the signal versus the spread at the moment of the fill. A signal that fires during a widening produces a fill at a worse price than the quote that triggered it, and fixed assumptions miss this entirely.
How much did the results of a backtest change when a realistic spread replaced a fixed one?
Backtests that use a fixed spread flatter everything
Backtests that use a fixed spread flatter everything
It’s Fairman 