Strategy Review: Rotational Momentum Trading

It’s time for a review! A couple of month ago I had a few posts on rotational trading.  The essence of these posts is summarized here.  In this post I want to give you an update how the strategy has been doing since then. Furthermore I’ll release an updated version of the source code.

To get the complete details of the strategy read the initials post (see here). In case you have any ideas how to further improve the strategy drop a comment bellow or send me an email to hassler.frank (at)


  • NASDAQ 100 stocks, survivorship bias free incl. delisted stocks (see here)
  • Top five stocks, rebalanced weekly (Friday)
  • 20% capital per position


  • Combination ranking of TSI and ROC200
  • Top5, long only
  • Rebalanced weekly (Friday at close)


  • Long only
  • Buy @ close, Sell @ close
  • Results are compounded
  • Cash dividend not considered / adjusted
  • No commission or slippage considered

Performance Overview (2001 – Today)

Performance Overview (out of sample period)

AFL Source Code

The AFL source code is embedded in the attached Word file (RotationalTrading)




About these ads


  1. Very interesting.
    Do you have any idea when that 42% drawdown occurred? It’s hard to see on the chart where it dropped almost 50%…

  2. Excellent as always Frank

    It would be interesting to see the performance of a hedged variant. Also the months with no data, does that mean no change or no trades?


  3. Great work Frank and thank you for sharing. I took your system idea but implemented it on a weekly system + some trend following + market filter + pos sizing.
    The values I look at for performance, in my case, are:
    CAGR, MaxDD and expectation as measured by %Win and %Win/%Loss (aka Reward/Risk ratio). I would be interested to know your R/R data, as you do not mention it in your stats.
    FWIW, here is the data I managed to get, testing since 2003:
    Trades 483
    Win(%) 59.41%
    R/R 2.35
    CAGR 27%
    MaxDD -8%

    I use a 3% fixed fractional pos size – so for 5 positions, as you use, a total of 15% equity exposure. Increasing exposure increases return => and MaxDD as well. I general, I cannot tolerate a MaxDD > 10%.

    • Hello Stefan,

      here are the numbers, so you can calculate the expectation yourself as this isn’t a KPI I use.

      Avg. Loss – 7.67
      Avg. Profit 16.41
      Losing Trades 44.88%



      • Thank you. It just happend I was reading the latest (March 2011) issue of Stocks & Commodities where I found this article about system expectancy. Expectancy, in this author’s view, is a way to compare systems. The higher, the better the system, he opines.
        Expectancy is defined as:

        E = Winners% * R/R – Losers%

        where R/R is Risk/Reward as defined above
        R/R = Avg Profit/Avg Loss.

        Based on your numbers, the system you presented has E = 73, which is a pretty high number, in my opinion. Again, thanks for sharing!
        BTW, playing roullete in a casino, where you can bet on 1-36 out of 38 numbers or on red/black, has a negative E = -5.3 => the house wins slowly but surely :-).

        All The Best,

    • Hi.
      Very good numbers, Stefan. I always look for the CAR/MAxDD relation, and you have more than 3 times CAR than DD. That’s very difficult to see!
      Can’t you explain a little bit more the way you have modified Franks’ system?

      And, have you obtained that numbers using a survivorship bias free data, or using today-Nasdaq list?

      Congratulations, anyway..

      • Hello Gonzaga,

        Here is what I did: I took Frank’s TSI ranking criteria and added 2 more: a rel strength and a volume strength indicators. And ranked based on all 3, with equal weights. This created a top 5 index, revised weekly. Instead of a market filter, I used the equity curve itself, managed to control drawdown. And lastly, I use a position sizing algorithm, to get risk pariy among the 5 stocks(I am using 3% of equity/trade) for each trade. This means adjusting pos sizes weekly to get within this risk limits. Hope this helps.

  4. Congratulation Frank, great blog and tx a lot for sharing your ideas here. Will try to give you some feedback as well as own ideas (think you deserve this).

    Regarding this review I have one question: if I compare the results with the ones you published in September 20, 2010, I can see a discrepancy, in May and June 2010 for instance. All the YR% performance figures are not equal. How can this happen when you use the Nasdaq 100 without survivorship bias? Or am I wrong comparing wrong figures?

    Best wishes

    • Hello Faik,

      glad to have you as a reader here!.

      Sorry for the slight inconsistency, it’s mainly due to data maintenance. I’ve been adjusting some of the historical NDX100 members (here and there).


  5. Hi Frank,

    I left you an email in dutch because I read a dutch article from you … but now I realize that perhaps you are not dutch-speaking and the article was translated …

    Anyway: I was wondering if you would mind if we implemented the TSI indicator on our website: . It has a charting application, but also a screener, so we could rank stocks by their TSI value.

    I’ll do a separate post with ideas for improvement of the system …

  6. Some ideas for improvement …. not sure if they will actually improve of course.

    - you always enter the top 5 stocks whenever they make the top 5 list. Perhaps timing of individual entries and exists could be improved:
    – if a new stock makes it to the top 5, it is bought immediately, but since it has just had an increase in TSI, and the TSI is a average over 100 days, it could be that this stock just had a major run and it is entered a bit late.
    – so perhaps selecting the 5 best entries from the top 10 list?
    – Selecting good entries involves recognizing bases and breakouts of course .. so that makes things more complex.

    Exits could be done through stops.

    Just ideas …

  7. Hi Frank,

    first of all, let me thank your for your great articles. In the blogoshere one often get only ideas and hints and it’s difficult to transfer this “educational material” into own systems. For me, your articles are much more helpful. They represent a real starting base and had influenced my work several times.

    I like your Rotation-Model based on NDX100 stocks very much, because I’m engaged so far only in mean-reversion strategies and I’m looking for additional – low correlated – strategies. But I didn’t dare to bring the NDX100-strategy in production so far because I fear the rally could end. So I’m waiting since last autumn and I’m following how fine the strategy would have worked out :-). But it doesn’t matter. I decided to be patient and to wait for a major correction at the markets. Then I will start.

    What do you think about the concepts of ratation models whose undelyings are low correlated (Stock-Indices, Bonds, Currencies, Commodities). I read a lot about this in the blogosphere, but I’m not able to build something, that works fine for me (in contradiction to your model based on NDX100 stocks). One of my problem is, that the lookback period is not long enough when using ETFs (perhaps historical futures contract data is essential?). Another strange thing is, that my results are better when using the second best underlying of the list (I’m using similar criterias like yours for the NDX100-system – different combinations of ROC/Momentum and TSI). Another issue that bothers me is, that the system isn’t robust. When I change the ROC a bit, the results vary dramatically.

    Do you have some experiance? I wish, you would publish an article about rotation models bases on low correlated underlyings.

    Greetings, Joachim

    • Hello Joachim,

      Thanks for your feedback. It’s very much appreciated.

      I haven’t started with commodities, bonds or currencies. Something that might come going ahead. I guess you can test that only with futures.

      - Frank

  8. Frank, out of curiousity, how did the system do in March with the drawdown in the indices and the NDX being a little weak?

  9. Hallo Frank,

    Excuse my silly question.
    I try to modify your afl code, stuck with error on “trendstrength().
    How could I solve this issue?
    I try to paste function TSI() lines on the code, but still it didn’t work.
    Thanks you for sharing great work!

    • Hello Homer,

      when the function is called TSI() then you need to rename the code in the line as well … from Trendstrength() to TSI().


    • Hi again,

      I got the solution by try and error as follow, I put your TSI code and change trendstrenght() to TSI.

      The next problem is IndexMember which is already set to True, but still give erroe related to the line “Rank1_bench = IIf(indexmember,trendstrength(), -999.99);”

      How could I solve the error so the code just check plain watchlist.

      Thank you

  10. Hi again Frank,

    I manage to make your code work without IndexMember.
    I add these code lines to show ranking in explorer: Filter=1;
    But all Score in the watch list equal “2″. What’s is wrong?

    • Hi Homer,

      not sure why this happens. Sent me your code

      frankhassler (at)


      • Hello Frank,

        Your last post about the rotation system is now 2 years old (15 februar 2011). Does it still work?
        There were 2 includes in the last code: and .
        Is just the AmiQuote tls file for the Nasdaq 100?
        And what is in the
        I would like to do some testing.


  11. Hi Frank,

    How’s the system looks like if rebalance monthly instead of weekly. I run some test myself against different market and it looks like monthly rebalance is quite good compare with weekly.



  12. Hi Frank,

    I was just wondering if you can show us how this strategy does without the abs() so it is really a momentum system?


  1. [...] is trading the SPY long/short and the momentum strategy is trading Nasdaq 100 stocks with a rotational momentum approach rebalancing weekly. Furthermore I’ve got a strategy that buys country ETFs [...]

  2. [...] Rotational Momentum Trading [...]

  3. [...] Rotational Trading: Stay with the best / strategy review [...]

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 305 other followers

%d bloggers like this: