RS Rating

Has anyone an idea on how to calculate this indicator? Here’s definition from IBD site:

Relative Price Strength (RS) Rating or Relative Strength
This IBD SmartSelect® Corporate Rating is a measure of a stock’s price performance over the last twelve months, compared to all stocks in our database.
The rating scale ranges from 1 (lowest) to 99 (highest).
Initial Public Offering (IPO) stocks will be assigned a “1” rating until the data from five trading sessions are available for calculation.

Attached an example from MarkerSmith

Thanks
Fabio


Hello Fabio,

It is not an exact replication of IBD, but there is a P123 ranking system inspired by IBD and O’Neil’s philosophy:
https://www.portfolio123.com/app/ranking-system/666

There is a “Relative Price Strength” composite node, which includes several momentum factors.

I use a similar composite node in a strategy that is inspired by O’Neill’s system (knock on wood, it has been working well so far this year).

Let me know if that’s what you’re looking for.

Cheers,
Ryan

Thanks Ryan,

I really appreciate your help, but your suggestion is not exactely what I am looking for. The formulas in IBD Smartselect RS you mentioned are all relative to the stock itself, and are not compared to the index strenght. What I am looking for are stocks stronger than index.

But the main problem I am facing with IBD theory is to detect stocks very close to a previous maximum (forming a “base”) !!!
The formula “Price > 0.95*HighVal(#Year, 0, #High)” works (not perfectly) in the case of “CHE” or “AJG”(very close to months/weeks past maximum), but even detect stocks like LOGI very far from their base. LOGI had to be bought in the beginning of May.
I am seeking the first type of stocks , very close (slightly below) to a previous maximum after a “cup”, and do not know how to filter from “LOGI” type stocks .

Fabio

Fabio, I see now. To compare price movement relative to the universe, what about an aggregate function, i.e. for 3 month momentum greater than the universe momentum:
Close(0)/Close(60)>aggregate(“close(0)/close(60)”,#all,#avg)

Or to rank, perhaps divide stock value by the aggregate value. Or compare to industry/sector in ranking system nodes.
You can also change out #all for #SP500 for the S&P.

As for previous high, looking at the stock charts for AJG, CHE, LOGI, it looks like the formula you’re using “Price > 0.95*HighVal(#Year, 0, #High)” does not discriminate between those stocks that are in “recovery” mode (i.e. still need to make to back to a previous high) AJG, CHE, to those that are in “new record high” mode (LOGI). Have you tried playing with the offset, or “if” rules, so that the current price must also be below a specific/latest high (if you’re trying to look specifically at February highs for example)?

Ryan,

thanks again for your answer…I did not know the “aggregate” formula (is rather complicate, and I am not good to manage PF123 complicated formulas expecially when no example are available) but it seems valuable and I think I can manage. I will work on it…

For what is the main problem (skim stocks like LOGI from recovering stocks like AJG or CHE), frankly I do not understand how could I use the offset to determin a stock I want to buy NOW because is near to a previous max (adding other rules). The previous high of a stocks (suppose considering a 1 year back period) is February for CHE but is different for each stock. I want to screen such kind of stocks and eliminate the other like LOGI.
To do that I could probably cut off the last let’s say 7/15 day of the graph, but how?

Fabio

Hi Fabio,

Here’s what I use to screen for one-year RS:

FRank(“Close(0)/Close(240)”,#All,#DESC)>70

This calculates a stock’s price return over the last 240 days, relative to the current universe of stocks (as specified for the screen in Settings / Universe). It ranks the results by percentile (in descending order, where 99 is the highest RS and 1 is the lowest RS) and selects stocks that are above the 70th percentile.

If you wish, you can select a different percentile by changing 70 to some other number. In How to Make Money in Stocks (2009, fourth edition), William O’Neil, founder of Investor’s Business Daily, recommends RS ratings in the 80s or 90s.

Hope this helps!

Matthew

Here’s another formula that might be of use, even if just pulling something out to use in another formula. I don’t think I use this for anything, but it compares the stock’s price movement over past 10 days to the index’s price movement. In this case it’s 10 days vs. index, but can change # of days as needed. Also can substitute another index ETF for SPY using the GetSeries… >1 would be better than index ETF, <1 worse.

( Close(0)/Close(10)) / (Close(0,GetSeries(“SPY”))/Close(10,GetSeries(“SPY”)))

Thank you very much Matthew for your very clear answer, and thanks to SpacemanJones too.I think this point is now well coverd.
Remain the most difficult question (for me)…how to detect (to screen) a stock recovering and reaching (+/- 5/10%) it’s previous maximum like now are doing “CHE” or “AJG”.
Fabio

This will select stocks that are within 10% of their 52-week high:
Close(0)>(PriceH*0.90)

Thank you mramenaden, you probably did not follow the whole thread, but this formula does not reach my target.
Fabio