Comparison: bid-only data versus bid and ask data
Many tick datasets include only the bid price. The ask is reconstructed by adding a fixed spread. For slow strategies, fine. For scalpers, a source of serious error.
With bid-only data and a fixed spread, a long trade always pays the same cost. In reality, the spread changes constantly. Long entries at the moment the spread has just widened pay more than the model assumes.
With true bid and ask data, the simulation can place longs on the ask and close them on the bid, and shorts the other way round. Costs match reality much more closely.
Differences that show up:
- Win rates drop by a few percentage points with real spreads
- Strategies that trade during spread-widening periods look worse
- Stop-loss triggers shift, since shorts trigger on the ask
For scalping with targets under five pips, the gap between the two methods can decide whether the system is profitable.
Does the data being used include real ask prices, or only a bid with an assumed spread?
Comparison: bid-only data versus bid and ask data
Comparison: bid-only data versus bid and ask data
It’s Fairman 
-
Shadow Trader
- Posts: 5438
- Joined: Wed Sep 09, 2026 5:19 pm
Re: Comparison: bid-only data versus bid and ask data
Platforms draw candles from bid prices. A buy order opens at the ask, which is the bid plus the spread, and a long position closes at the bid. A short does the reverse.
When a backtest checks "did price reach the target," it often looks at bid-based candles for both entries and exits. For a long trade, the entry at the ask is a spread higher than the chart shows, and the exit at the bid matches the chart. So the target is effectively further away than the chart implies. For a short trade, the stop is hit at the ask, which the chart doesn't display.
Accounting for it requires either ask data alongside bid data or a spread model applied to each trade.
Fixed-spread assumptions are the next layer of problem. Real spreads change by hour, by news, and by volatility. A model using the average misses the worst moments, which are also when many trades happen.
A good check is to rerun the test with the spread doubled. If the strategy collapses, the edge was marginal to begin with.
Some platforms let the chart show both bid and ask lines. Others include a "spread" column in exported history. If the data source includes both, the test can use the right side for each trade: ask for long entries, bid for long exits, and so on.
Where data is bid-only, a workable approximation is to model the spread as a function of time of day, using a measured average for each hour. It's imperfect but far better than ignoring it.
Another approach is to test with a pessimistic spread, say 50 percent above average, to see how fragile the strategy is. A system that survives such a stress is more trustworthy.
The effect grows with the number of trades. A strategy that trades five hundred times a month and ignores half a pip of spread per trade has overstated profits by 250 pips a month, every month.
Which spread assumption has been used in tests so far, and was it validated against live data?
When a backtest checks "did price reach the target," it often looks at bid-based candles for both entries and exits. For a long trade, the entry at the ask is a spread higher than the chart shows, and the exit at the bid matches the chart. So the target is effectively further away than the chart implies. For a short trade, the stop is hit at the ask, which the chart doesn't display.
Accounting for it requires either ask data alongside bid data or a spread model applied to each trade.
Fixed-spread assumptions are the next layer of problem. Real spreads change by hour, by news, and by volatility. A model using the average misses the worst moments, which are also when many trades happen.
A good check is to rerun the test with the spread doubled. If the strategy collapses, the edge was marginal to begin with.
Some platforms let the chart show both bid and ask lines. Others include a "spread" column in exported history. If the data source includes both, the test can use the right side for each trade: ask for long entries, bid for long exits, and so on.
Where data is bid-only, a workable approximation is to model the spread as a function of time of day, using a measured average for each hour. It's imperfect but far better than ignoring it.
Another approach is to test with a pessimistic spread, say 50 percent above average, to see how fragile the strategy is. A system that survives such a stress is more trustworthy.
The effect grows with the number of trades. A strategy that trades five hundred times a month and ignores half a pip of spread per trade has overstated profits by 250 pips a month, every month.
Which spread assumption has been used in tests so far, and was it validated against live data?