Skip to content

A New Trend Indicator: MSR

October 27, 2010

While my own research focus has generally shifted towards the technology of combining multi-indicator/multi-variable models, ultimately I depend on various single indicator inputs for this approach. Therefore, having indicators that capture something that is slightly different or can reduce the complexity of a model by condensing a concept into one number is still highly desirable. A good post by Quantum Financier highlights the importance of these issues: .

In this case, I was looking for a support and resistance indicator that captured the typical or middle price over a short to intermediate time frame.  I also wanted something that could be normalized so that I could avoid having the inflexibility of binary rules, or specific levels for entry and exits.  This was something very simple that I came up with that performed well on the S&P500 (SPY), achieving nearly a 10% cagr which is impressive for a short-term indicator.

MSR= (10-day median of (H, L, C) – 20-day  MAX (H, L, C))/(20-day  MAX (H, L, C))

then take the 252-day percentrank of MSR or percentile ranking

long trades initiated>.5

short trades are initiated<.5

13 Comments leave one →
  1. Carl permalink
    October 27, 2010 10:58 am

    Some clarification needed on the formula….

    Median H,L,C – take the median of each and divide by 3?

    MAX H,L,C – take the highest value of H, L and C; or the highest value of H, the Lowest value of L, and the ? of C? ; and divide by 3?

    And for the numerator – use absolute value or allow negatives?


    • October 28, 2010 1:07 am

      Hi Carl,
      My understanding is that Median(H,L,C) is the median taken from the 3 arrays combined, i.e. as if the three arrays were concatenated.
      I am working on a Amibroker translation, which I will post as soon as I am done.

      • October 29, 2010 12:02 am

        Carl, it’s going to take some more time. I have build a first version, but it is very slow because of looping in looping. I am now looking to program a .dll to calculate the median of multiple arrays() in AB.

      • david varadi permalink*
        October 29, 2010 12:23 am

        hi there, that is correct, the H,L,and C are all considered as one sample for purposes of deriving the median. Carl the number is always negative and thus needs to be normalized. thank you very much Quanting for sharing–I will link over the weekend.

  2. Bgpl permalink
    October 29, 2010 11:48 am

    hi QD,
    you do not need loops in loops as you are not sorting, simply calculating percentrank.
    i remember Ramon Cummins had posted a percentrankHLC sometime, and I believe this is the code he posted ( i am taking the liberty of posting it again, but his is the credit ). As with anything else, test before using !
    See if this meets your needs.

    function PercentRankHLC( Data1,Data2,Data3,Periods )
    Count = 0;
    for ( i = 0; i Ref( Data1, -i ), 1, 0 );
    Count = Count + IIf ( Ref( Data3, 0 ) > Ref( Data2, -i ), 1, 0);
    Count = Count + IIf ( Ref( Data3, 0 ) > Ref( Data3, -i ), 1, 0
    return 100 * Count / (Periods*3-1);

    • October 31, 2010 1:09 pm

      Hi BGPL, this code calculates the percentrank of data3 in the combined data1, data2 and data3 arrays. The problem is that it does not calculate the Median of the 3 arrays combined. That is, testing if data3==50 won’t give the true median (as it does not test data1, data2 elements’. I hope this comes across.
      I am currently considering to built a dll for this problem.

      • November 4, 2010 5:14 pm

        Hi, it took a while to complete the Amibroker translation as I did end up writing a .dll for the Median function across 2 or 3 arrays.
        The translation is available at my Blog.

  3. Bgpl permalink
    October 29, 2010 11:50 am

    this got messed up in the formatting…

  4. Chris Ciarpelli permalink
    December 2, 2010 1:14 am

    What was the time period that was backtested? I chose to go from July 09′ to 11/12/10 (used a couple week old yahoo finance download), and showed a net loss going long and short @ .5. However, when only going long @ > .5, the indicator performed very well (up 18.5% in 2010).

    • Chris Ciarpelli permalink
      December 2, 2010 2:00 am

      Apologies, I was actually not using the SPY. Sorry about that.


  1. Amibroker Median() function for Multiple Arrays « Quanting Dutchman
  2. MSR Indicator for Amibroker « Quanting Dutchman
  3. MSR system « Quanting Dutchman

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 )

Facebook photo

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

Connecting to %s

%d bloggers like this: