With this post I want to share some research I’ve done in the area of rotational trading (RT). In RT systems stocks or ETFs are ranked according to one or more properties. You ride the best stocks as long as they are among the best stocks, then you change horses and go again. So far so good. Unfortunately some times you change stocks just to see that the stock you sold is doing better again and raising in your ranking. As we know the market has a certain amount of noise that can’t be predicted or modeled, hence stocks will raise or fall just because of that noise. This represent two challenges: trading cost and opportunity cost. Let me present you some ways how to reduce the impact of that volatility in ranking.
.
Background
There is a number of ways to reduce rank volatility.
1.) Trade only once a week / month
2.) Different criteria for enter / exit a trade
3.) Smooth the rank over the last couple of bars
4.) Combination of above
.
Test Environment
- I run all tests on a survivorship free Nasdaq100 index ( January 2001 – June 2011)
- All trades are close/close without slippage / commission
- 10 portfolio positions (10% allocation), returns are reinvested
- Data is adjusted for splits and cash dividends
- Stocks ranked according to their Rate of change over the last 200 days (ROC200)
- Ranking is re-calculated every day
.
Test 1.) Weekly rebalancing
In this test we compare daily ranking vs. weekly ranking. For weekly ranking I decided to re-balance at the last trading day of a week. Important to notice: also for weekly re-balancing daily bars are used for trading and rank calculation.
Number of trades have been reduced by 50+% while we see a modest improvement in absolute returns.
.
Test 2.) different entry/exit rank
In this test a trade is entered if the stock is among the best performing stocks and sold if it drops bellow a certain rank (10, 20, 30). Of course new stocks can only be bought if a portfolio slot has been (=an existing position drops bellow 10/20/30).
Test 3.) Rank smoothing
Instead of using the most recent rank value for taking trading action, the rank gets smoothed with it’s most recent values. For this test I applied to different method, simple moving average (MA) and exponential smoothing average (EMA). Rank calculation and trades are done daily.





Hi,
Good post and good thinking.
I have thought about RT trading quiet a bit but i have a problem programming it as i am not yet proficient enough, would you be able to help with the basic programming idea behind ranking?
All the best,
Oliver
Hi Oliver,
I just sent you an email.
Frank
hi Frank,
Doesn’t this depend on what metric you are trading in the first place ?
ROC(200) can be noisy when you compare several stocks since it closely depends on today’s price, which is noisy in the first place i.,e C/Ref(C,-1) – 1;
I think if you use something else which is slow varying and already smoothed such as
TSI() the daily may not lead to so many trades.
So, not sure if your experiments are more a choice of exits conditions, or only reflecting the noisiness of the entry.
Just an observation, not to detract from your post in anyway, which as always, is thought provoking and well presented !
regards,
bgpl
Hello Badri,
agree: ROC200 is noisy as it’s not considering a stocks inherit volatility. However, I wanted to provide some useful ideas.
Have a great time my friend…
Frank
Frank, good work as always. Where did you get the underlying data from? I mean dividend and split adjusted end-of-day data?
Thank you
Andreas
Hi,
Norgate / premiumdata provides cash adjusted data with their new service (look at one of my last posts)
Frank
Very interesting Frank. The drawdown, however, takes my breath away.
PK
Hi Peter,
sure, I wouldn’t want to trade this. It’s not a system. But some ideas can be taken from the post to build a better system.
Frank
Frank, How about using a a market filter to exit all positions and move into cash? Of course this will reduce the CAR a little but the Max DD should improve quite a bit.
Hello Sunil,
sure these things can be done. The aim of this post has not been to create a system. I rather wanted to show how noise can impact the ranking and what to do about.
Frank
Read this post many times! Ideas are great. Was wondering if you ever come across the concept of dividing ROC by volatility to form a risk adjusted measure of relative strength? I did some test on STD vs ATR. STD was the superior one and shorter term volatility seem to be better too. I also tested it across TAA so it seems robust.