Rotational Trading: how to reduce trades and improve returns

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.



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).

Interesting enough the absolute returns have improved significantly while reducing trade frequency by about 90%.

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.

Applying a ten day EMA seems to be most promising in this case.

Test 4.) Combination

In a last test we will look at combining different methods.


The presented methods provide valid ideas to reduce market noise and improve returns for a simple rotational system. Considering that trading cost (slippage + comissions) has not been part of this test, the absolute return difference is even more significant. The applied methods reduced trades by about 50-90%. So which one is the best one? I prefer weekly rotational trading for my momentum system. However, at the end it’s a matter of personal trading style and the specifics / efficiency of your ranking algo.
Please let me know your opinion and ideas in the comment section bellow.
- Frank
About these ads


  1. 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,

  2. 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 !


    • 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…


  3. lantama says:

    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

  4. Pete Kasper says:

    Very interesting Frank. The drawdown, however, takes my breath away.


  5. Sunil says:

    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.


  6. 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.


  1. [...] Hassler at Engineering Returns blog wrote an excellent article Rotational Trading: how to reduce trades and improve returns. The article presents four methods to reduce [...]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 306 other followers

%d bloggers like this: