If you break the capital into 10 parts on 1st day and get ten signals, isn't all your capital tied up ? So you don't trade on signals from the next day onwards till you get an exit on any position ?
To add to the long list of ideas to test... divi up the capital into 50 (or so) bits and then walk forward, taking trades as they come. In other words day 2 trades are executed even if you had 10 on day 1, etc. In fact, you could play with number of slots N and number of entries taken each day k (< N). That way you could map out how many of the available N slots are in use over time. Could provide some interesting insight. The system will take some time to "converge" when either k or N are small. The interest collected on the idle cash helps offset some of the ongoing costs (slippage, etc.)... at least during "normal" times :)
CAGR / Drawdown of this type of strategies is roughly linear (up to a certain extent) with the average exposure. With 50 slots, the overall exposure will be low, as there just won't be enough signals to fill them up, especially in times of normal volatility. Thus the performance will degrade significantly.
It's also worth noting that universe selection is a huge factor. NASDAQ 100 constituents (including both current and past) give the best results compared to S&P 500 or Russell family.
I've been backtesting these strategies for a while. Larry Connors with his team popularized them in early 2010s. I believe they got crowded (Larry also had a software subscription for generating signals/compiling portfolios) for some time and their performance dropped sharply.
They are also pretty hard to trade from a psychological standpoint - your 3 months gains evaporate in a week in time of increased volatility and market drop. This is not evident from the performance charts over 20+ years :)
Any way, thanks for the article! It's great to see quite similar backtest results on the same data, but with different software framework.
Alternatively, if you are backtesting against against constituents of a given stock, you can use the "Nasdaq 100 Current & Past" Watchlist - that provides you with a set of stocks that were or are still in the Nasdaq-100. Of course the results will be the same, but your processing time will be reduced since you won't need to test against stocks that would never be traded. This watchlist is dynamically updated as new securities enter the index/securities change symbol etc.
Thanks for quick reply. limit/stop orders not easy to backtest for such ranking based strategies since intraday data is needed to figure out which ones are actually filled first.
If you break the capital into 10 parts on 1st day and get ten signals, isn't all your capital tied up ? So you don't trade on signals from the next day onwards till you get an exit on any position ?
That is correct. As the avg trading duration is 3-7 days (depending on which of the 2 exists you use), this is not a problem
To add to the long list of ideas to test... divi up the capital into 50 (or so) bits and then walk forward, taking trades as they come. In other words day 2 trades are executed even if you had 10 on day 1, etc. In fact, you could play with number of slots N and number of entries taken each day k (< N). That way you could map out how many of the available N slots are in use over time. Could provide some interesting insight. The system will take some time to "converge" when either k or N are small. The interest collected on the idle cash helps offset some of the ongoing costs (slippage, etc.)... at least during "normal" times :)
CAGR / Drawdown of this type of strategies is roughly linear (up to a certain extent) with the average exposure. With 50 slots, the overall exposure will be low, as there just won't be enough signals to fill them up, especially in times of normal volatility. Thus the performance will degrade significantly.
It's also worth noting that universe selection is a huge factor. NASDAQ 100 constituents (including both current and past) give the best results compared to S&P 500 or Russell family.
There's a new development to this idea... I'll share earlier than next Saturday (potentially today)
I've been backtesting these strategies for a while. Larry Connors with his team popularized them in early 2010s. I believe they got crowded (Larry also had a software subscription for generating signals/compiling portfolios) for some time and their performance dropped sharply.
They are also pretty hard to trade from a psychological standpoint - your 3 months gains evaporate in a week in time of increased volatility and market drop. This is not evident from the performance charts over 20+ years :)
Any way, thanks for the article! It's great to see quite similar backtest results on the same data, but with different software framework.
Have you made sure to include de-listed stocks in the universe?
With Norgate there are two separate databases:
'US Equities' and 'US Equities Delisted'
You need to use combination of both databases for initial universe and then do a check to see if the symbol is part of the index at the time.
Yes, both included
Alternatively, if you are backtesting against against constituents of a given stock, you can use the "Nasdaq 100 Current & Past" Watchlist - that provides you with a set of stocks that were or are still in the Nasdaq-100. Of course the results will be the same, but your processing time will be reduced since you won't need to test against stocks that would never be traded. This watchlist is dynamically updated as new securities enter the index/securities change symbol etc.
I recently started using Norgate data, and I'm already a huge fan!!
Strongly recommend it to all!!!
What's the ATR period used in the test? For NATR, is it calculated as 100*ATR(n)/close?
Default 14 days. Yes, NATR = ATR / close
How's the entry get executed? Market at next open?
Yes. And yes, this is an easy improvement :)
Thanks for quick reply. limit/stop orders not easy to backtest for such ranking based strategies since intraday data is needed to figure out which ones are actually filled first.
I suppose Norgate data isn't free, and I am wondering if there are any free alternatives to get index constituents over time for US indexes?
Great work by the way.
Congratulations, good job