What is spread assumptions?
Spread assumptions are the simplified choices you make about the bid–ask spread when you calculate trade outcomes in forex backtesting and forward testing. A spread is the difference between the quoted bid price (what you can typically sell for) and the quoted ask price (what you can typically buy for). In backtests, you may not have every live execution detail (especially exact timestamps, order book state, and broker-specific handling). So you “assume” a spread—often a fixed number, a rule, or a derived series—then use it to convert signals into realistic entry and exit prices.
A useful way to think about this: spread assumptions are part of your friction model. They represent the cost impact of crossing from bid to ask (and vice versa) when entering and exiting positions.
How spread assumptions work
Most backtesting engines need a concrete price for each simulated fill. Spread assumptions supply that missing detail by mapping mid-price (or one side of the quote) into both sides.
Common patterns include:
- Fixed spread: You use the same spread value for every trade. This is easy but assumes stable liquidity and execution conditions.
- Spread by time/session: You use different spreads for different market hours (for example, comparing major overlap hours vs. quieter hours). This reflects that liquidity often changes by time.
- Spread series from historical data: You estimate a spread over time and apply it to each simulated trade. This is closer to reality, but it still depends on data quality and alignment with execution timing.
- Rule-based adjustments: You increase spread assumptions during periods of expected wider spreads (for example, when volatility is high). The key is that the rule must be consistent with how your test represents order execution.
In practice, spread assumptions influence results through at least three mechanisms:
- Entry price translation: If your backtest uses a mid-price, adding half the assumed spread to reach the ask and subtracting half to reach the bid determines your initial fill.
- Exit price translation: The same mapping affects the fill when you close a position.
- Sensitivity to timing: If you trade at moments when real spreads expand (or your dataset smooths them out), the assumed spread may understate or overstate transaction costs.
Because backtesting outcomes depend on the timing of fills relative to spread changes, it’s important that the backtest’s timestamp logic matches how your assumed spread is constructed. Even with the same underlying spread dataset, misalignment can create systematic bias.
Limitations and risks
Spread assumptions can make a test look better (or worse) than it would be in live trading. The main limitation is that “assumed spread” is not automatically equal to “experienced spread.”
Key uncertainties include:
- Broker and venue differences: The spread you observe in historical market quotes is not guaranteed to match the spread at which your orders actually fill. Matching depends on your execution model and the data source.
- Liquidity and volatility regime shifts: Spreads often widen when liquidity drops or volatility rises. A model tuned to calm periods can be inaccurate when conditions change.
- Execution timing mismatch: Backtests typically simulate fills at specific timestamps. If your assumed spread is sampled at a coarser interval than the simulated fill time, it may miss rapid spread widening.
- Data representativeness: If your historical data does not capture true bid–ask behavior (for example, because it is derived, aggregated, or stale), the spread assumptions inherit that limitation.
- Overconfidence in simplification: Fixed spread values can hide cost variability. This can lead to drawdowns or performance surprises when forward testing, where spreads may behave differently.
Independent verification approach
Since spread assumptions are a modeling choice, you should validate them using evidence you can independently check:
- Compare assumed spread behavior against actual observed spread statistics in the same instrument and general time periods.
- Run sensitivity checks (for example, testing a range of spreads) to see whether conclusions depend on a narrow cost estimate.
- In forward testing, focus on whether the spread-related cost effects match the assumptions more than on whether every trade outcome matches exactly.
This does not eliminate risk, but it makes your cost modeling more falsifiable.
Spread assumptions in the context of backtesting vs. forward testing
Backtesting is retrospective and limited by the fidelity of your price, spread, and execution modeling. Forward testing adds an additional reality check: execution conditions can change, and the realized spread distribution may differ from your historical assumptions.
A practical takeaway is that spread assumptions should be treated as an explicit parameter in your testing design. If your results change materially when you adjust the spread assumptions within plausible ranges, your strategy may be sensitive to transaction cost modeling rather than purely to signal behavior.
Conclusion: what to remember
Spread assumptions are a core input for modeling transaction costs in forex backtesting and forward testing. They convert quoted price information into bid/ask-aware simulated fills. The largest risk is mismatch between assumed and realized spreads due to liquidity, volatility, and execution timing differences. Treat the assumptions as test parameters, then validate and stress-test them using data you can verify.