首頁 >後端開發 >Python教學 >用於股票情緒分析的 Python 腳本

用於股票情緒分析的 Python 腳本

Linda Hamilton
Linda Hamilton原創
2025-01-05 18:04:47661瀏覽

股票市場上充滿了知道所有東西價格但不知道任何東西的價值的人。」 - 菲利普·費舍爾

Python 的受歡迎程度顯著提高,並被用於廣泛的應用,從基本計算到股票市場數據的高級統計分析。在本文中,我們將研究一個 Python 腳本,它體現了 Python 在金融領域日益增長的主導地位。它能夠與數據無縫整合、執行複雜的計算和自動執行任務,這使其成為金融專業人士的寶貴工具。

此腳本示範如何使用 Python 分析新聞標題並提取有關市場情緒的寶貴見解。透過利用自然語言處理 (NLP) 庫的強大功能,該腳本可以分析與特定股票相關的新聞文章的情緒基調。該分析可以為投資者提供重要訊息,幫助他們:

  • 做出更明智的投資決策:透過了解當前的市場情緒,投資人可以識別潛在機會並降低風險。
  • 制定更有效的交易策略:情緒分析可以整合到交易演算法中,以改善時機並可能提高回報。
  • 獲得競爭優勢:Python 的多功能性允許開發複雜的金融模型和分析大量資料集,在競爭激烈的金融領域提供顯著優勢
import requests
import pandas as pd
from nltk.sentiment.vader import SentimentIntensityAnalyzer

# THIS NEEDS TO BE INSTALLED
# ---------------------------
# import nltk
# nltk.download('vader_lexicon')

# Function to fetch news headlines from a free API
def get_news_headlines(ticker):
    """
    Fetches news headlines related to the given stock ticker from a free API.

    Args:
        ticker: Stock ticker symbol (e.g., 'AAPL', 'GOOG').

    Returns:
        A list of news headlines as strings.
    """

    # We are using the below free api from this website https://eodhd.com/financial-apis/stock-market-financial-news-api
    url = f'https://eodhd.com/api/news?s={ticker}.US&offset=0&limit=10&api_token=demo&fmt=json'
    response = requests.get(url)
    response.raise_for_status()  # Raise an exception for bad status codes

    try:
        data = response.json()
        # Extract the 'title' from each article
        headlines = [article['title'] for article in data]
        return headlines
    except (KeyError, ValueError, TypeError):
        print(f"Error parsing API response for {ticker}")
        return []

# Function to perform sentiment analysis on headlines
def analyze_sentiment(headlines):
    """
    Performs sentiment analysis on a list of news headlines using VADER.

    Args:
        headlines: A list of news headlines as strings.

    Returns:
        A pandas DataFrame with columns for headline and sentiment scores (compound, positive, negative, neutral).
    """

    sia = SentimentIntensityAnalyzer()
    sentiments = []

    for headline in headlines:
        sentiment_scores = sia.polarity_scores(headline)
        sentiments.append([headline, sentiment_scores['compound'],
                           sentiment_scores['pos'], sentiment_scores['neg'],
                           sentiment_scores['neu']])

    df = pd.DataFrame(sentiments, columns=['Headline', 'Compound', 'Positive', 'Negative', 'Neutral'])
    return df

# Main function
if __name__ == "__main__":

    ticker = input("Enter stock ticker symbol: ")
    headlines = get_news_headlines(ticker)

    if headlines:
        sentiment_df = analyze_sentiment(headlines)
        print(sentiment_df)

        # Calculate average sentiment
        average_sentiment = sentiment_df['Compound'].mean()
        print(f"Average Sentiment for {ticker}: {average_sentiment}")

        # Further analysis and visualization can be added here
        # (e.g., plotting sentiment scores, identifying most positive/negative headlines)
    else:
        print(f"No news headlines found for {ticker}.")

輸出:

Python Script for Stock Sentiment Analysis

進口

  • 請求:用於發出 HTTP 請求以從 Web API 取得資料。
  • pandas:用於建立和管理 DataFrame 格式資料的資料操作庫。
  • SentimentIntensityAnalyzer 來自 nltk.sentiment.vader:情緒分析工具,為文本提供情感分數。

設定

  • NLTK 設定:腳本包含一條註釋,指示需要使用 NLTK 下載 VADER 字典。這是透過 nltk.download('vader_lexicon') 完成的。

功能

獲取新聞頭條(股票)

  • 用途:取得與給定股票代碼相關的新聞標題。
  • 參數
    • 股票代號:代表股票代號的字串(例如,Apple 的「AAPL」)。
  • 傳回:作為字串的新聞標題清單。
  • 實作
    • 使用提供的程式碼建立假設新聞 API 的 URL。
    • 向 API 發送 GET 請求並檢查是否成功回應狀態。
    • 解析 JSON 回應以擷取標題。
    • 使用 try- except 區塊處理解析中的潛在錯誤。

分析情緒(標題)

  • 用途:對新聞標題清單進行情緒分析。
  • 參數
    • headers:字串列表,每個字串代表一個新聞標題。
  • 回傳:包含標題及其情緒分數(複合、正面、負面、中性)的 pandas DataFrame。
  • 實作
    • 初始化 SentimentIntensityAnalyzer。
    • 迭代每個標題,計算情緒分數,並將其儲存在清單中。
    • 將情緒資料清單轉換為 pandas DataFrame。

主要執行

  • 腳本提示使用者輸入股票代碼。
  • 它調用 get_news_headlines 來獲取給定股票的頭條新聞。
  • 如果找到標題,它會使用analyze_sentiment 執行情緒分析。
  • 列印產生的 DataFrame,顯示每個標題及其情緒分數。
  • 它計算並印出標題的平均複合情感得分。
  • 如果沒有找到標題,它會列印一條訊息來指示這一點。

結論

Python 的多功能性和強大的函式庫使其成為現代資料分析和計算任務不可或缺的工具。它處理從簡單計算到複雜股票市場分析的一切能力凸顯了其跨行業的價值。隨著 Python 的不斷發展,其在推動數據驅動決策的創新和效率方面的作用將進一步擴大,鞏固其作為技術進步基石的地位

註:AI輔助內容

以上是用於股票情緒分析的 Python 腳本的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn