ConnorsRSI Analysis

A couple posts ago, I did the RSI Analysis. This post will focus on ConnorsRSI which I created while working for Larry Connors. When  creating the indicator, the focus was on short-term mean-reversion results. We will look at that here but also how does it handle longer-term holds. Since I did not test this when I originally did the work, I was looking forward to seeing the results.

ConnorsRSI

ConnorsRSI is an indicator made up of three components. The first being a 3 period RSI on the closes. The second being a 2 period RSI applied to the current up/down streak. The last being a rank of how big today’s move is. Then a simple weighted aveage is used to combine them. For more details on the calculation and how to use it see this link.

Rules

Test period is from 1/1/2006 to 12/31/2015. Rules in parenthesis are tested individually. There is no commission or slippage.

ConnorsRSI Rule

The ConnorsRSI rule is true on a cross of the value. If the ConnorsRSI rule is ‘CRSI(3-2-100)<5 ’ then this is true only on the day the ConnorsRSI(3,2,100) crosses from above 5 to below 5. These are the ConnorsRSI rules tested:

  • CRSI(3-2-100)<5
  • CRSI(3-2-100)>95
  • CRSI(6-4-200)<15
  • CRSI(6-4-200)>85
  • CRSI(12-8-300)<22
  • CRSI(12-8-300)>78
  • CRSI(24-16-300)<27
  • CRSI(24-16-300)>73

Parameters

Starting from the normal ConnorsRSI parameters of (2,3,100), I simply doubled them to get the next set to test. I did stop the last parameter at 300 because 400 and 800 seemed too large. As to how I choose, the cut-off value, I picked a value that gave about 5,000 trades when not using the MA200 filters.

Buy

  • Stock is member of the S&P 500 index
  • Stock Close is above $5
  • The 21 day moving average of Close time Volume is greater than $1 million
  • MA200 rule: (Close above MA200, Close below MA200, not used)
  • SPX MA200 rule: (SPX close above MA200, SPX close below MA200, not used)
  • ConnorsRSI rule is true
  • Enter the next day at the open

Sell

  • Exit (5, 10, 21, 63, 126) days later on the open

Multiple Entries

This is important. We allow multiple entries in a stock if the Buy rule happens again. For example, the Buy rule is ‘CRSI(3-2-100)<5 and the exit rule is 126 days. If the stock’s CRSI(3-2-100) crosses under 5 today, we enter. Now if it crosses again below 5 a month later we enter again. Each position is exited 126 day after entry and counted a separate trade.

The Baseline

All values in the tables that follow are for closed trades only. The baseline results in the tables below use the same rules as above but remove the ConnorsRSI rule. This allows us to compare how the ConnorsRSI rule changes the results.

P-value

We will be comparing the ‘average % profit/loss’ of the test vs the ‘average % profit/loss’ on the baseline, which is the population of all possible trades. To narrow down the results, I calculated the p-value for each test. Some may argue if this is the right metric or have other issues. I am trying to use this help point me to interesting results. I am not saying that a p-value below 5% (or 1% or whatever value you prefer) means that the results are good. Do I want a lower value, yes, but I do not have a hard cut off. They are shades for grey.

% Profit/Loss Results

Now given what I just said, I will use a cutoff of 5% for the p-value to narrow down results to show. There are 360 variations and 241 of those have p-values under 5%.

ConnorsRSI(3,2,100) & 5 Day Hold

160525a

First I wanted to see the results for ConnorsRSI(3,2,100 at a 5 day hold. We notice that most look good and as expected. The two middle blue highlighted rows are the ones with no MA200 filter. These two have very low p-values. What is interesting to see is the two bottom grey rows. These are when the stock and index are both above the MA200. In this case we really have no edge. This is why it is important to test against various filters to understand what kind of market conditions your edge work best. As to why it is nor working under these conditions? I looked at the yearly returns for ConnorsRSI(3,2,100) and the last two years average % P/L  have been -.04% and 0.00% for 2014 and 2015. Has ConnorsRSI stopped working? Maybe but we just don’t know.

63 Day Hold

How well does ConnorsRSI predict longer holding periods?

160525b

I filtered the results down to the using the stock’s MA200, the SPX above its MA200 and a P-value less than 5%. As to pointing to stock to trade with this longer hold, ConnorsRSI does not seem to help much. But what it could be used for is an exit on a longer holding strategy. Look at the top three rows. In all cases the return is much less than the base over the next 63 days.

ATR Multiple Results

I computed the average return over N days as a factor the 10 day ATR on the signal day. Sometimes this gave very different results than using ‘average % profit/loss.’ It is up to you to decide which one you want to focus on.

ConnorsRSI(3,2,100) & 5 Day Hold

160525c

A couple more of the variations do not have p-values under 5%. But the same general pattern as using ‘avg %p/l’ holds in this case too

Spreadsheet

Fill the form below to get the spreadsheet with lots of more information. See data on the other holds and other RSI values. Lots of great information here.

 

Final Thoughts

Like the RSI analysis, this showed it is important to decide what your metric is going to be. The same variation can give very different p-values depending on whether one was using ‘avg % p/l’ or ‘atr-multiple.’

Backtesting platform used: AmiBroker. Data provider:Norgate Data (referral link)

Good Quant Trading,

Fill in for free spreadsheet:

spreadsheeticon

 

 

 

Click Here to Leave a Comment Below

Thomas Musselman - May 25, 2016 Reply

If you missed this you may like it: he evaluates why the MA200 works with an index but NOT its constituent stocks (which always perplexed me: I think he nails it)

http://www.philosophicaleconomics.com/2016/01/gtt/
“When we take the different securities and build a combined index out of them, the volatility unique to each individual security drop outs, but the cyclicality that the securities have in common–their tendency to rise and fall…”

http://www.philosophicaleconomics.com/2016/01/movingaverage/

Mark - May 26, 2016 Reply

I think stats broken out per year would make sense here, since the market has changed quite a bit in the last 10 years.

    Cesar Alvarez - May 26, 2016 Reply

    I agree that breaking stats per year would be the next step. I did not do that here because of how long it would take to run them for all teh variations. I can guarantee you they have fluctuated wildly each year.

Davide Chirico - May 29, 2016 Reply

Hello Cesar,
I dont think CRSI stop worked. I think we may considere a different use of it under this market condition.
For the first time after a decade positive autocorreltion(252) appear on VIX, and this is in contrast with mean reversion regime on stock indexes.
We sow even backwordation on vix and now high level of contango.
I think we may consider a more fast check of market codition and use the more appropriate parameters of our indicators.
Best regards
Davide

    Cesar Alvarez - May 29, 2016 Reply

    You bring up a good point. Sometimes the market conditions are not favorable for an indicator or a strategy.

Peter - November 21, 2023 Reply

Hello Cesar
You mention that you used the RSI, however some articles are referring to Wilder’s RSI, with the Wilder smoothing function after the initial SMA of up and down prices, versus the standard RSI. To aggravate matters further, some technical analysis libraries have their own variations on the RSI implementation, and all of this leads to difficulties in replicating results.
You would be so kind as to confirm, as the author of the CRSI, if you were using a standard RSI term, or the Wilder’s RSI term with the Wilder smoothing function acting as a dampening factor?
Thank you in advance
Best regards

Peter

    Cesar Alvarez - November 22, 2023 Reply

    I am using AmiBroker’s builtin RSI. Here is the formula for it

    function BuiltInRSIEquivalent( period )
    {
    P = N = 0;

    result = Null;

    for( i = 1; i < BarCount; i++ ) { diff = C[ i ] - C[ i - 1 ]; W = S = 0; if( diff > 0 ) W = diff;
    if( diff < 0 ) S = -diff; P = ( ( period -1 ) * P + W ) / period; N = ( ( period -1 ) * N + S ) / period; if( i >= period )
    result[ i ] = 100 * P / ( P + N );
    }
    return result;
    }

Peter - November 26, 2023 Reply

Cesar, I hope you forgive me abusing your time, but I still have a doubt.
In the third term, when computing the percent rank of the daily returns, if, for example, we are at day 6 of a hypothetical 6 days time series, and are comparing the daily returns of the preceding lookback period, for example, 3 days, there are two possible interpretations.
Either you are comparing R3<R6, R4<R6, R5<R6 where R is the daily returns in percentage, and then use this to calculate the percent rank.
Or you are computing the returns of a 3 day period, which implies 2 returns values: a 3 day period has return from day -3 to -2 = , and from -2 to -1. 3 looked back days and 2 return values. Which would be the case originally intended by you?
Once again, many thanks for your time and patience.
Best regards

Peter

    Cesar Alvarez - November 27, 2023 Reply

    here is the AmiBroker formula for PercentRank which I am using for the third parameter
    function PercentRank2( Data, Periods)
    {
    Count = 0;
    for ( i = 1; i <= Periods ; i++ ) { Count += Data > Ref( Data, -i );
    }
    return 100 * Count / Periods;
    }

Leave a Reply: