Exploring Analyst Recommendations and Social Sentiment Dynamics
Written on
Chapter 1: Introduction to Social Sentiment and Analyst Recommendations
The question arises: Does collective opinion shape analyst recommendations? This article delves into the connection between social sentiment and analyst ratings. A significant relationship could influence both short-term and long-term trading strategies that incorporate social sentiment. If social sentiment serves as an effective predictor for stock returns and influences analyst opinions, we might extend our holding periods when short-term strategies align with positive recommendations, thereby minimizing portfolio turnover. Conversely, negative ratings may prompt early exits or conditional entries, depending on the sentiment window.
The content will be organized into the following sections:
- Accessing Historical Social Sentiment Data
- Accessing Historical Analyst Recommendations
- Analyzing the Relationship Between Social Sentiment and Analyst Recommendations
- Promoting Financial Modeling Prep (FMP) and Quant Guild
- Utilizing Financial Modeling Prep's API
We will make function calls to the Financial Modeling Prep API, which provides a wealth of historical financial data that is beneficial for quantitative research. If you wish to utilize their API, please consider using my affiliate link to support my writing endeavors.
Having worked with their API recently, I can attest to its effectiveness for academic research. If there's sufficient interest from my audience, I may develop a module within Q-Fin: A Python Library for Financial Mathematics tailored for this research — but I digress.
Section 1.1: Accessing Historical Social Sentiment Data
Our first task is to gather historical social sentiment data. We will implement a methodology akin to my previous article, "Predicting Stock Returns using StockTwits' Social Sentiment." In this approach, we will evaluate the social sentiment and analyst recommendations as they become available.
Is this information actionable? What does the contrast between contemporaneous and predictive analysis entail? Should we examine sentiment over varying timeframes (monthly, weekly, etc.)? Likely. However, this is a Medium article — if you're seeking academic rigor, consider reading this instead. Should you feel more knowledgeable than I or my co-authors after that, feel free to drop me an email: [email protected].
It’s important to highlight that Twitter's (now X) social sentiment data is no longer accessible due to recent API restrictions. Nevertheless, there is ample academic literature indicating a strong positive correlation between sentiment from different platforms — that said, social sentiment remains social sentiment.
Let’s establish a function to access FMP's API for historical social sentiment. While we could use a broad universe of equities like the R3000 or S&P 500, for simplicity, I will focus on a select group of large-cap tickers. We'll query data for these tickers using the predefined get_historic_sentiment function.
Next, we will write code to iteratively fetch social sentiment data while serializing it to avoid redundancy. This will yield a collection of dataframes, each corresponding to a unique ticker with relevant features (indexing sentiment by date and time). Before merging this with analyst recommendations, we need to aggregate the data to a daily level and combine all equities into a single dataframe.
To achieve this, we will perform a groupby operation and compute the mean for each unique date. Although the date is less precise than the original timestamp, it allows us to merge with the analyst data efficiently.
Copyarray(['AAPL', 'MSFT', 'AMZN', 'GOOGL', 'META', 'TSLA', 'JNJ', 'PFE',
'PG', 'KO', 'PEP', 'NKE', 'XOM', 'CVX', 'JPM', 'C'], dtype=object)
Section 1.2: Accessing Historical Analyst Recommendations
Next, we need to retrieve historical analyst recommendations. We will follow a similar structure as the get_historic_sentiment function. In the get_analyst_recs function, I will create three new features: buy, sell, and spread. The buy field aggregates all buy recommendations, the sell field sums all sell recommendations, and the spread represents the difference between buy and sell recommendations.
Fortunately, there’s no need for grouping or averaging with the recommendation data, as we only receive timestamps and symbols. This allows us to create a pooled dataframe that contains all analyst recommendation information, similar to the historical sentiment dataframe.
Now, you might have some inquiries. Let’s engage in a brief Q&A.
Is there a lot implicitly happening in this analysis?
Absolutely.
Should sentiment be analyzed daily, weekly, or monthly for accuracy?
That’s worth investigating.
Why do analyst recommendations matter? Could they relate to future stock returns?
Indeed, they can help manage portfolio turnover in sentiment-based strategies. Are there more effective data sources?
For further insight, delve into the academic literature and return with your findings.
While I could elaborate further, I will instead illustrate how to merge these dataframes and proceed with our analysis.
Chapter 2: Analyzing Social Sentiment and Analyst Recommendations
There are numerous methods to analyze the interplay between social sentiment and analyst recommendations. However, my primary focus is on examining the recommendation spread. Why? I am intrigued by its potential effect on pricing and subsequent trading strategies concerning portfolio turnover.
If elevated social sentiment aligns with wider spreads (possibly boosting prices), then it might be advantageous to maintain long positions and lower portfolio turnover post-analyst recommendations. This piece isn’t about crafting trading strategies, so I’ll steer back on track.
Let’s visualize the connection between social sentiment and analyst recommendation spread using a scatter plot.
What insights can we draw from this?
I posit that even a high school AP statistics student could plot a line through this graph with a positive slope.
In all seriousness, this resembles the chart from our contemporaneous return analysis. In a neutral sentiment environment, we observe a noisy return distribution.
However, when we segmented returns into quartiles and made the distributions time-variant, we identified a desirable monotonic relationship between the signal and return.
Unfamiliar with this concept? Refer to my previous article.
Here, we observe the same dynamics concerning analyst recommendation spreads. A positive sentiment correlates with broader spreads, while negative sentiment leads to tighter spreads.
Now, let’s apply OLS regression to explore this further.
The results indicate that the t-statistic implies the coefficient on social sentiment is statistically significant (we have sufficient evidence to reject the null hypothesis).
Does sentiment impact returns that shape analyst recommendations? Do analyst ratings affect returns, which in turn influence sentiment? Are returns swaying sentiment that influences analyst recommendations?
All variables here are interconnected. A thorough analysis of these relationships would require extensive data and effort, far beyond the scope of this article.
Closing Thoughts
In this article, we utilized Financial Modeling Prep's API to access historical social sentiment data and analyst recommendations. After preprocessing and merging both dataframes, we discerned a statistically significant relationship between these two financial variables.
What’s next? This intriguing relationship warrants further investigation to determine if the increased spread is a genuine correlation or mere coincidence tied to social media sentiment. A more causal analysis (perhaps using regression discontinuity) could help ascertain if the release of analyst recommendations influences social sentiment or vice versa, while also accounting for the effects of returns.
Overall, if a legitimate relationship emerges beyond this preliminary analysis, it could significantly impact social sentiment trading strategies, allowing for earlier exits to mitigate losses or extended positions to lower turnover.
Quant Guild
Interested in enhancing your understanding of quantitative finance, mathematics, statistics, data science, machine learning, and AI? Explore our courses at Quant Guild and use code QGMEDIUM for a 50% discount!
I extend my gratitude to Financial Modeling Prep for supporting this article. Please consider using my affiliate link if you're interested in their API.
YouTube
GitHub
Medium
Discord
Thank you for reading! If you have any questions or feedback, please feel free to comment or reach out to me anytime at [email protected].
Looking forward to our next discussion!