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

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

Jan 05, 2025 pm 06:04 PM

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

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何解决Linux终端中查看Python版本时遇到的权限问题? 如何解决Linux终端中查看Python版本时遇到的权限问题? Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? 如何在使用 Fiddler Everywhere 进行中间人读取时避免被浏览器检测到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

在Python中如何高效地将一个DataFrame的整列复制到另一个结构不同的DataFrame中? 在Python中如何高效地将一个DataFrame的整列复制到另一个结构不同的DataFrame中? Apr 01, 2025 pm 11:15 PM

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

Uvicorn是如何在没有serve_forever()的情况下持续监听HTTP请求的? Uvicorn是如何在没有serve_forever()的情况下持续监听HTTP请求的? Apr 01, 2025 pm 10:51 PM

Uvicorn是如何持续监听HTTP请求的?Uvicorn是一个基于ASGI的轻量级Web服务器,其核心功能之一便是监听HTTP请求并进�...

在Linux终端中使用python --version命令时如何解决权限问题? 在Linux终端中使用python --version命令时如何解决权限问题? Apr 02, 2025 am 06:36 AM

Linux终端中使用python...

如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? 如何在10小时内通过项目和问题驱动的方式教计算机小白编程基础? Apr 02, 2025 am 07:18 AM

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

如何绕过Investing.com的反爬虫机制获取新闻数据? 如何绕过Investing.com的反爬虫机制获取新闻数据? Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...

See all articles