ホームページ > バックエンド開発 > Python チュートリアル > 株価センチメント分析用の Python スクリプト

株価センチメント分析用の Python スクリプト

Linda Hamilton
リリース: 2025-01-05 18:04:47
オリジナル
689 人が閲覧しました

株式市場は、あらゆるものの価格は知っているが、何の価値も知らない人たちでいっぱいです」。 - フィリップ・フィッシャー

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

輸入品

  • リクエスト: Web API からデータをフェッチする HTTP リクエストを作成するために使用されます。
  • pandas: DataFrame 形式でデータを作成および管理するために使用されるデータ操作ライブラリ。
  • nltk.sentiment.vader の SentimentIntensityAnalyzer: テキストの感情スコアを提供する感情分析用のツールです。

設定

  • NLTK Setup: スクリプトには、VADER レキシコンを NLTK を使用してダウンロードする必要があることを示すコメントが含まれています。これは、nltk.download('vader_lexicon') で行われます。

機能

get_news_headlines(ティッカー)

  • 目的: 指定された株式ティッカー シンボルに関連するニュースの見出しを取得します。
  • パラメータ:
    • ticker: 株式ティッカー シンボルを表す文字列 (例: Apple の 'AAPL')。
  • 戻り値: 文字列としてのニュース見出しのリスト。
  • 実装:
    • 提供されたティッカーを使用して、仮説的なニュース API の URL を構築します。
    • GET リクエストを API に送信し、成功した応答ステータスを確認します。
    • JSON 応答を解析して見出しを抽出します。
    • try-excel ブロッ​​クを使用して解析時の潜在的なエラーを処理します。

分析感情(見出し)

  • 目的: ニュース見出しのリストに対してセンチメント分析を実行します。
  • パラメータ:
    • 見出し: 文字列のリスト。それぞれがニュースの見出しを表します。
  • 戻り値: 見出しとその感情スコア (複合、ポジティブ、ネガティブ、ニュートラル) を含むパンダ データフレーム。
  • 実装:
    • SentimentIntensityAnalyzer を初期化します。
    • 各見出しを反復処理し、感情スコアを計算し、リストに保存します。
    • 感情データのリストを pandas DataFrame に変換します。

メイン実行

  • スクリプトはユーザーに株式銘柄記号の入力を求めます。
  • get_news_headlines を呼び出して、指定されたティッカーのヘッドラインを取得します。
  • 見出しが見つかった場合は、analyze_sentiment を使用してセンチメント分析を実行します。
  • 結果の DataFrame が印刷され、各見出しとセンチメント スコアが表示されます。
  • 見出しの平均複合感情スコアを計算して出力します。
  • 見出しが見つからない場合は、それを示すメッセージが表示されます。

結論

Python の多用途性と強力なライブラリにより、Python は最新のデータ分析や計算タスクに不可欠なツールとなっています。単純な計算から複雑な株式市場分析まであらゆるものを処理できるその能力は、業界全体でその価値を強調しています。 Python が進化し続けるにつれて、データ主導の意思決定におけるイノベーションと効率性の推進におけるその役割はさらに拡大し、技術進歩の基礎としての地位を固める予定です

注: AI 支援コンテンツ

以上が株価センチメント分析用の Python スクリプトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート