Which Financial Analysts provide the most accurate Stock Ratings?
Photo by Rodeo Project Management Software on Unsplash.com
If you read my last post ‘How accurate are Analyst Ratings, really?’ you probably had a hunch that this follow-up post was coming. Now that we calculated the metrics of how accurate analyst ratings are, we also want to find out who the most accurate analysts are.
Analysts of well-known brokerage firms release public stock ratings to provide buy/sell/hold recommendations for investors. These ratings are an attempt to use a company’s current performance to make predictions regarding the company’s future price trends.
The rating process is often complex and takes different data sources into consideration such as financial statements, press releases, general market news as well as info from company conference calls. These ratings are often provided quarterly and for a target date of a year or less.
In this post we are going to determine the top most accurate analysists in terms of price target forecast and rating (Buy/Hold/Sell).
If you are psyched, this post is for you!
This story is solely for general information purposes, and should not be relied upon for trading recommendations or financial advice. Source code and information is provided for educational purposes only, and should not be relied upon to make an investment decision. Please review my full cautionary guidance before continuing.
The Game Plan
The first hurdle to take is where to get historic analyst ratings that include price targets. For this information I found FinnWorlds.com, which has an Analyst Ratings API.
FinnWorld offers a Starter Plan with a reduced rate of $19.99 for the first month. Be advised that the rate changes to $199 after the first month so if you are just planning to try this API, be sure to cancel before the month ends.
To fetch historic stock prices, I used the Tiingo Historical Prices API. Tiingo offers a free Starter Plan and a Power Plan for $10/month. However, you can also modify the script to use a different data source.
To limit the number of stocks we retrieve ratings for I selected the list of NASDAQ 100 symbols since that gives me a convenient number to work with. You could also use another index or select the stocks a different way using market cap, sector, price range, etc.
Here are the steps to be implemented:
- Fetch a list of NASDAQ 100 symbols
- For each symbol: Fetch the list of analyst ratings for the last 10 years from FinnWorlds API
- Filter out ratings that have a target date in the future
- Fetch the actual prices at target date from Tiingo API
- For all ratings: Group by analyst name, firm and calculate ratings count and average price target accuracy and rating accuracy
- Store results
- Sort by highest rating count and highest average price target accuracy
- Print stats
- Sort by highest rating count and highest average rating accuracy
- Print stats.
Note that there are two separate types of metrics that are getting calculated:
First, we want to analyze the difference between predicted target price and the actual price at that date.
Next, we want to measure if a prediction of Buy/Hold/Sell was right or wrong based whether the price at target date has increased or decreased compared to the price at the rating date.
Trade Ideas provides AI stock suggestions, AI alerts, real-time stock market data, charting, scanning, automated trading, educational resources, and more. Get a 15% discount with promo code ‘BOTRADING15’.
Implementation
You can download the complete Python script from my blog ‘B/O Trading Blog’.
Results
So let’s take a look at some of the results.
The problem with the analyst rating data is that there is a large number of different analysts that provided a small number of ratings. This means that for each analyst we only provided a small number of samples, which makes these results less meaningful. The results would have been more significant if we had a small number of analysts each of which provided a large number of ratings.
In any case, here the top 10 results. Note that I sorted by number of ratings first, then by accuracy.
Top 10 accurate analysts by ratings count and price target accuracy
For example, Amit Daryanani was on average within a 18.04% difference between the target price and actual price for 8 ratings.
- david-wong (Nomura): 64.63%, ratings count: 11
- romit-shah (Nomura): 32.55%, ratings count: 9
- amit-daryanani (Evercore ISI): 18.04%, ratings count: 8
- heath-terry (Goldman Sachs): 24.27%, ratings count: 8
- weston-twigg (Piper Sandler): 29.86%, ratings count: 8
- michael-gibbs (Raymond James): 22.63%, ratings count: 7
- john-pitzer (Credit Suisse): 22.79%, ratings count: 7
- stacy-rasgon (Bernstein): 28.81%, ratings count: 7
- shebly-seyrafi (FBN Securities): 45.54%, ratings count: 7
- ken-sena (Wells Fargo): 18.29%, ratings count: 6
Top 10 accurate analysts by rating count and Buy/Hold/Sell rating
For example, David Wong was 82% correct with a Buy/Hold/Sell rating for 11 ratings.
- david-wong (Nomura): 0.82, ratings count: 11
- romit-shah (Nomura): 0.78, ratings count: 9
- amit-daryanani (Evercore ISI): 0.62, ratings count: 8
- heath-terry (Goldman Sachs): 0.62, ratings count: 8
- weston-twigg (Piper Sandler): 0.25, ratings count: 8
- michael-gibbs (Raymond James): 0.86, ratings count: 7
- shebly-seyrafi (FBN Securities): 0.86, ratings count: 7
- stacy-rasgon (Bernstein): 0.71, ratings count: 7
- john-pitzer (Credit Suisse): 0.57, ratings count: 7
- yaoxian-chew (Credit Suisse): 0.67, ratings count: 6
What is worth pointing out is that we see some of the same names on both lists.
Also, some analysts were able to make future price predictions which an average price difference of around 20% which is stunning, considering a prediction time frame of year. Some analysts provided a success rate of 80% or more for their Buy/Hold/Sell rating, which is pretty amazing.
Wrapping Up
In this post we discussed an approach on how to find the financial analysts with the most accurate stock price ratings. Then we went over the steps how to implement this approach in Python. We finished up by looking at some of the results of this script.
I hope you found this post worth your time.
Special: Become my referred member for free and I will give you a free 1-year subscription to my blog ‘B/O Trading Blog’. After becoming a member, send me a quick email to botradingblog(a)gmail.com and I will sign you up.
You can support my writing for free using this link. Don’t miss another story — subscribe to my stories by email.
This post contains affiliate marketing links.
Have a great day!




