首页 > 后端开发 > Python教程 > 用于股票情绪分析的 Python 脚本

用于股票情绪分析的 Python 脚本

Linda Hamilton
发布: 2025-01-05 18:04:47
原创
649 人浏览过

股票市场上充满了知道所有东西价格但不知道任何东西的价值的人。” - 菲利普·费舍尔

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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板