Limitations of backtesting OHLC data

SignalSolver uses Open High Low Close (OHLC) historical data for the securities it backtests. More accurate results would derive from higher frequency data, but this would be expensive, slow and impractical on the Excel platform. Luckily, with the data we have easy access to we can get pretty close to reality.  Two of the errors you can expect are discussed in this section.

Price attainability errors and the effect of gaps

We assume that for a particular OHLC trading period all prices between the Low to High range are attainable. For daily data  the price tends to move fairly smoothly between price points often re-visiting prices many times. Gaps at the open of the period are fully accounted for by SignalSolver. However, gaps can occur even during a trading period and this is especially true of weekly and monthly data. For example, if a stop sell order were placed and a down-gap occurs mid-day, the sell price would be lower than the order price. A stop limit order could be used to mitigate this, but it will clearly only execute if the price is attained after the gap.

Order of trading errors

SignalSolver algorithms (resets and "A" suffix algorithms) will sometimes trade twice in a trading period off one bullish and one bearish signal . But we can't always determine the order of trading and this leads to errors. To illustrate, if we buy at $10 then sell at $11 its a 10% profit. But, if the bearish signal price arrives first, the order of trading is reversed and we short at $11 and cover at $10, so the profit is only 9.1%. Older versions of SignalSolver average this difference to reflect a 9.55% profit, a 0.45% error either way. Newer versions try to better resolve the order of trading by looking at the open price for the period and guessing whether the buy or short sell came first. So, in the above example if the open was at $9, we assume the buy came before the sell, a reasonable assumption. But if the open was at $10.50, we still can't tell whether the buy or short came first so we are stuck with the averaging assumption.

Small errors such as these will propagate to other metrics such as drawdown, the number of trades and number of good trades (we attribute 50% of the unknown order trades to longs and 50% to shorts).