The Norgate Data function to access the unadjusted price is useful when backtesting strategies for stocks. We include in this article results from a trend-following strategy that trades Russell 2000 stocks.
For all backtests in this article, we used Norgate Data that includes current and past constituents for equity indexes. Using series with delistings is necessary to remove survivorship bias from backtests. We highly recommend this data service (we do not have a referral arrangement with the company).
In addition to delistings, Norgate Data provides several functions for accessing fundamental data and integration methods with popular trading platforms.
In the examples in this article, we will focus on the function that retrieves the unadjusted price of a stock. The unadjusted price can be useful in ranking and filtering out stocks with a price below a certain level, especially when the trading strategy also goes short.
The objective of this article is not to evaluate the merits of the strategy but to study the impact on backtests when using the unadjusted price. In addition, there are several issues with shorting stocks, including availability and recalls, as well as borrowing rates, which will not be addressed in this article. Again, the idea is to study the impact of the unadjusted price that is available with Norgate Data.
The trend-following strategy used in this study is based on price breakouts and employs a stop-loss based on a fixed risk percent.
Timeframe: Daily (EOD)
Index: Russell 2000 (current and past constituents)
Strategy type: Long-short (and reverse) trend-following based on breakouts.
Maximum open positions: 100
Position size: 1% of closed equity
Stop-loss: Fixed 1%
Price for short entries > $20
Rank function: Rate-of-Change in the breakout lookback period
Backtest range: 01/03/2000 –09/10/2023
To use the Norgate Data unadjusted close function in Amibroker, which is the platform we use for the results in this article, you need to add the following line at the beginning of the code.
#include_once “Formulas\Norgate Data\Norgate Data Functions.afl”
Then, you can access the unadjusted close price as follows:
oc = NorgateOriginalCloseTimeSeries();
If you also need to access the unadjusted volume, use this function:
ov = NorgateOriginalVolumeTimeSeries();
Case 1. Using the adjusted close for short trades (price > $20)
The annualized return (CAGR) is 10.1%, the maximum drawdown is 31%, and the Sharpe ratio is 0.73.
Case 2. Using the unadjusted close for short trades (price > $20)
The annualized return dropped from 10.1% to 8.3%, the maximum drawdown jumped from 31% to 42.5%, and the Sharpe ratio plummeted from 0.73 to 0.51.
The reason for the significant differences in the two backtests is that the unadjusted close triggered about 6% more short trades due to higher unadjusted prices.
In the example in this article, we showed how using the unadjusted price in backtests can impact results. In some cases, as in this article, the results deteriorate. Depending on the model and objectives, there may also be improvement. The Norgate Data service offers easy access to the unadjusted price, and along with the series that include delistings, it boosts the robustness and reliability of backtests.
Disclaimer: No part of the analysis in this blog constitutes a trade recommendation. The past performance of any trading system or methodology is not necessarily indicative of future results. Read the full disclaimer here.
Charting and backtesting program: Amibroker. Data provider: Norgate Data