Stock Sentiment Analysis in Python

Home » Coding » Basic Coding » Python » Stock Sentiment Analysis in Python

Stock sentiment analysis is a powerful technique used by traders and investors to gain insights into market sentiment and make informed decisions. By analyzing textual data such as news articles, social media posts, and financial reports, we can gauge the overall sentiment towards a particular stock or the broader market. In this coding tutorial, we will explore various steps involved in conducting stock sentiment analysis in Python, including data collection, preprocessing, feature extraction, sentiment classification, and evaluation.


Python, with its rich ecosystem of libraries, provides a convenient and efficient platform for performing stock sentiment analysis. We will build this Python project using the analysis tool VADER (Valence Aware Dictionary and Sentiment Reasoner). It evaluates the sentiment of the text and creates it into two classes, negative and positive, based on the Compound score. This mode reviews textual format information. This code can be helpful in understanding the sentiment expressed in text data, such as customer reviews, social media posts, or any other form of textual content.

So let’s start coding and learn how to harness the power of natural language processing and machine learning to uncover valuable sentiment insights in the world of stocks.



With the help of the sentiment analysis tool VADER (Valence Aware Dictionary and Sentiment Reasoner), this code aims to determine the sentiment of a given text and categorize it as either positive, negative, or neutral based on the compound score.


1. Basic Python Knowledge

2. VS Code or Any Text Editor

3. Python Environment: The code requires a Python environment to run. Ensure that Python is installed on the system and the code is executed using a Python interpreter.

4. Importing the SentimentIntensityAnalyzer Module: SentimentIntensityAnalyzer module should definitely be imported before starting to code.

Source Code

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
text = "This is a sample text about a stock."
analyzer = SentimentIntensityAnalyzer()
sentiment_scores = analyzer.polarity_scores(text)
compound_score = sentiment_scores['compound']
if compound_score >= 0.05:
sentiment_label = 'positive'
elif compound_score <= -0.05:
sentiment_label = 'negative'
sentiment_label = 'neutral'
print(f"Sentiment: {sentiment_label}, Compound Score: {compound_score}")

Explanation of the code

1. We initially import the vaderSentiment.vaderSentiment and import the function SentimentIntensityAnalyzer from that. This function is used to analyze the sentiment given in the text

2. Now, to test whether the snippet is working or not, we will give a custom input like here we gave “This is a sample text about a stock”.

3. We just created the object named analyzer with the function SentimentIntensityAnalyzer(). This helps it evaluate the analysis score.

4. After that, we used the `polarity_scores()` method of the `analyzer` object, which is called with the sample text as the argument. This method returns a dictionary containing the sentiment scores, including a compound score, which represents the overall sentiment of the text.

5. The dictionary returns the range of sentiment that has been analyzed and is stored under the variable compound_score. The compound score ranges between -1 to 1. The number closer to -1 returns the negative class, and the number near to 1 will return the positive class.

6. The value of the “compound_score” was then verified using conditional expressions.

  • The sentiment is considered positive if the “compound_score” is greater than or equal to 0.05, in which case the variable “sentiment_label” is given the value “positive”.
  • The ‘sentiment_label’ is given the value ”negative” if the ‘compound_score’ is less than or equal to -0.05, which indicates that the sentiment is negative.
  • The ‘sentiment_label’ is given the value ”neutral” if neither of these requirements is met, indicating that the emotion is neutral.

7. At the end, the code returns the sentiment of the formatted word from the string and returns the compound score; according to the compound score, it prints the class of sentiment it belongs to.


Stock Sentiment Analysis in Python

Figure 1: For the custom string given, the compound score returned is 0.0, so it belongs to a neutral class

If you change text = “This stock is performing exceptionally well” in the code, the output will be as follow:

Stock Sentiment Analysis in Python

Figure 2: For our custom text, the compound score returned is 0.3384, so it belongs to class positive


Hence, we used the VADER sentiment analysis tool to analyze the sentiment of a sample text. It assigns a sentiment label (positive, negative, or neutral) based on the compound score and prints the sentiment label and compound score as the output.

More Machine Learning Projects>>>


You May Also Like To Create…


Submit a Comment

Your email address will not be published. Required fields are marked *