Investing with the Moon

Adverse move ratio

Posted by Danny on March 17, 2014

The US stock market has been climbing steadily without any serious pullback for more than a year. Some analysts consider this a dangerous sign of complacency, others blame the central bank’s QE policies for this “abnormal” market. Almost all seem to agree that this can only end with a crash. But how unusual is this kind of market and does it always lead to a crash? In this week’s post I will share my “adverse move ratio” indicator and what it tells about the market right now.

But let’s take a look at the Nasdaq first (click for larger image):


This is a 3 year chart, showing the most important trend lines. The Earl2 indicator (orange line) is starting to turn down from a very weak peak. That’s a warning sign for the medium term. While I see room for another push to marginally higher highs in April, a correction this summer is becoming very probable. Notice how all pullbacks since 2011 have been defined nicely by identically sloped resistance/support lines, numbered 1 to 7 in the chart. This allows us to draw resistance lines based on possible peaks in March(6) or April(7). I would look for the market to trade in the blue shaded area until September-October in what is likely to be a triangular consolidation pattern. The initial drop could go as low as 3800 in May, with subsequent trading above and below 4000 until autumn. Then a break out, up or down… I think it will go up, bearing in mind the 60% rule of course.

We will have a lunar green period starting later this week. This means we can see a market rebound with the potential of new highs in some indexes. Earl index (blue line) is in bottom territory, so enough room to rise. How much of a rebound we get will also give us clues about the strength of the market going forward.


When markets go up steadily without any corrections it starts feeling very safe. The last serious correction in US markets dates back to October 2012. But does that mean the market is now dangerously overvalued and ready for a drop? Well, testing is knowing. So I cooked up a little indicator that shows how much adverse moves a market (or stock) has seen over a given period. In this study I used a period of 12 months. The basic concept is simple, and I am sure others have come up with something very similar before me. It works like this. If the market had a rally of 40% in the previous 12 months and the biggest decline within that period was 10%, then the adverse move ratio (AMR) is 40/10 = 4. If there was only a 10% rally while there was 30% decline in the previous twelve months, then AMR would be 10/30 = 0.33

Feeding this formula in the computer we get this (click for larger image):


As you can see, periods of rising market without deep pullbacks leads to peak values above 3 (circled in orange). This is not so rare. Sometimes it happens shortly before a major market top, as we see in 2007, but just as often we see an elevated AMR in the midst of an ongoing bull market (e.g 2004 and 2010). So, a period of rising markets without any correction is in itself not a good reason to sell.
The real use in this indicator is when it drops below 1, the areas marked in yellow. Wish you had stayed out of stocks in 2001-2003 and in 2008-2009? These periods can be long or short (as in late 2011), but it clearly marks the times when it is not safe to own stocks. And when AMR climbs back above 1 it is usually a good time to go long again. This doesn’t get you in at the bottom or out at the top, but it keeps a long term investor out of trouble. Right now, the AMR for the S&P 500 is above 3 after a recent spike above 4. So there is no reason for panic until AMR drops below 1 again. And that can be months or years away.

Here is how AMR worked in the 80s and 90s (click for larger image):


Again we see that peak values in AMR were rarely good reasons to sell. But whenever AMR dropped below 1 was a time to be in cash and watch from the sidelines.

60s and 70s (click for larger image):


40s and 50s (click for larger image):


As a last chart, here is gold (click for larger image):

AMR gold

Would have kept you bullish in the gold market for most of its 12 year run. When AMR climbs back above 1 we may have another good long term buy signal.

A patient long term investor can do very well with this indicator and a monthly chart. For a shorter term investor or trader it is also useful to consider the long term setup and trade accordingly. I check out this adverse move ratio for major markets from time to time and if there is an important change you will hear about it here on the blog.

Good luck,


Enhanced by Zemanta

6 Responses to “Adverse move ratio”

  1. robert said

    Very cool indicator. What platform are you using to generate this custom indicator?

    Can you provide the math used to build the indicator?

    I would like to see if I can program this one on my platform (

    • Danny said

      Hi Robert,

      You need a software like NinjaTrader, MetaTrader or Amibroker to program this kind of indicator. I took a quick look at Stockfetcher and doubt it will be possible on that platform, because you need to program a loop for it.
      Below is the amibroker code for the Adverse Move Ratio. If any reader makes a version for other platforms or share it elsewhere I would appreciate if you add a link to this blog article and drop me note about it or post link to the page in a comment here. Thanks

      // Adverse Move Ratio (AMR). By Danny Van den Berghe.
      // AMR helps to avoid bear markets, which are indicated when the ratio drops below 1.
      // Works on all timeframes but I normally use it on monthly charts with LPeriod set to 12,
      // weekly chart with LPeriod set to 52, or daily chart with LPeriod set to 250.
      // Can also be used with other values for LPeriod.

      LPeriod = Param(“Look back Period”, 250, 10, 500, 1 );

      Adverse = WMA(0,2);

      for ( i = LPeriod;i = 0;j–)
      if ( H[i-j] / LLo > Ral)
      Ral = H[i-j] / LLo;
      if ( L[i-j] / HHi HHi)
      HHi = H[i-j];
      if (L[i-j] < LLo)
      LLo = L[i-j];
      Adverse[i]= (Ral-1) / ((1/Decl)-1) ;

      PlotGrid(3, ParamColor( "grid3", colorOrange ));
      PlotGrid(1, ParamColor( "grid1", colorGreen ));
      Plot( Adverse, "Adverse Move Ratio", ParamColor( "Adverse color", colorBlue ), ParamStyle("Adverse style", styleThick ) );


      • Robert said

        Thanks for the update. Yes you are correct, does not have code to support FOR and IF statement logic.

  2. Kunal Pawaskar said

    Hi Danny, I do not use Amibroker and was going to try this in VBA. Please help me with a few things.

    What are initial values of j, Llo and HHi?

    This line was not clear:
    if ( L[i-j] / HHi HHi)

    Is this code missing the decline logic?

    Overall, I thought that there are certain portions that look like they have got lost, while pasting it into the article. What you have tried is very interesting. Thanks.

    • Danny said

      Hi Kunal,

      Yes, I see the formula is incomplete. Probably error in the copy/paste

      This should do:

      LPeriod = Param(“Look back Period Months”, 12, 10, 100, 1 );

      for ( i = LPeriod;i < BarCount;i++ )
      HHi = H[i-LPeriod];
      LLo = L[i-LPeriod];
      Ral = 0;
      Decl = 1;
      for ( j = -LPeriod;j <= 0;j++)
      if ( H[i+j] / LLo > Ral)
      Ral = H[i+j] / LLo;
      if ( L[i+j] / HHi < Decl)
      Decl = L[i+j] / HHi;
      if (H[i+j] > HHi)
      HHi = H[i+j];
      if (L[i+j] < LLo)
      LLo = L[i+j];

      Adverse[i]= ((Ral-1) / ((1/Decl)-1)) ;

      Can also be used on weekly charts. Then I set Lperiod to 26.
      You can of course experiment with other values.


Post a comment (disagreement also welcome):

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

%d bloggers like this: