IBD Style Relative Strength Percentile Ranking of Stocks (i.e. 0-100 Score).
I also made a TradingView indicator, but it cannot give you the percentile ranking, it just shows you the Relative Strength: https://www.tradingview.com/script/SHE1xOMC-Relative-Strength-IBD-Style/
Stocks: https://github.com/skyte/rs-log/blob/main/output/rs_stocks.csv
Industries: https://github.com/skyte/rs-log/blob/main/output/rs_industries.csv
Unfortunately the close prices loaded from the price history API are not always split adjusted. So if a stock had a split recently there is a chance the relative strength value will be wrong...
Yearly performance of stock (most recent quarter is weighted double) divided by yearly performance of reference index (SPY by default).
Tickers from ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqtraded.txt disregarding ETFs and all stocks where the industry and sector information couldn't be retrieved from yahoo finance.
- Open the latest successful run here: https://github.com/skyte/relative-strength/actions/workflows/exe.yml
- Download
exe-packageat the bottom (need to be logged in into github) - Exctract the
relative-strengthfolder and enter it- If needed open
config.yamland put in your preferences
- If needed open
- Run
relative-strength.exe
- Open
config.yamland put in your preferences - Install requirements:
python -m pip install -r requirements.txt - Run
relative-strength.py
Instead of running relative-strength.py you can also:
- Run
rs_data.pyto aggregate the price data - Run
rs_ranking.pyto calculate the relative strength rankings
- in the
outputfolder you will find:- the list of ranked stocks:
rs_stocks.csv - the list of ranked industries:
rs_industries.csv
- the list of ranked stocks:
You can create a config_private.yaml next to config.yaml and overwrite some parameters like API_KEY. That way you don't get conflicts when pulling a new version.
Can be switched with the field DATA_SOURCE
(Benchmark: Loads 1500 Stocks in 20m)
- Is default, no config necessary.
(Benchmark: Loads 1500 Stocks in 18m)
- Create TDAmeritrade Developer Account and App
- Put in your
API_KEYinconfig.yamland changeDATA_SOURCE.