> 백엔드 개발 > 파이썬 튜토리얼 > 주식 감정 분석을 위한 Python 스크립트

주식 감정 분석을 위한 Python 스크립트

Linda Hamilton
풀어 주다: 2025-01-05 18:04:47
원래의
650명이 탐색했습니다.

"주식 시장은 모든 것의 가격은 알지만 아무것도 아닌 것의 가치는 아는 사람들로 가득 차 있습니다." - 필립 피셔

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

수입품

  • 요청: 웹 API에서 데이터를 가져오기 위해 HTTP 요청을 만드는 데 사용됩니다.
  • pandas: DataFrame 형식으로 데이터를 생성하고 관리하는 데 사용되는 데이터 조작 라이브러리입니다.
  • SentimentIntensityAnalyzer nltk.sentiment.vader: 텍스트에 대한 감정 점수를 제공하는 감정 분석 도구입니다.

설정

  • NLTK 설정: 스크립트에는 NLTK를 사용하여 VADER 어휘를 다운로드해야 함을 나타내는 주석이 포함되어 있습니다. 이는 nltk.download('vader_lexicon')을 사용하여 수행됩니다.

기능

get_news_headlines(티커)

  • 목적: 특정 주식 종목 기호와 관련된 뉴스 헤드라인을 가져옵니다.
  • 매개변수:
    • 티커: 주식 티커 기호를 나타내는 문자열입니다(예: Apple의 경우 'AAPL').
  • 반환: 뉴스 헤드라인을 문자열로 나열한 목록입니다.
  • 구현:
    • 제공된 티커를 사용하여 가상 뉴스 API에 대한 URL을 구성합니다.
    • API에 GET 요청을 보내고 응답 성공 상태를 확인합니다.
    • JSON 응답을 구문 분석하여 헤드라인을 추출합니다.
    • try-Exception 블록을 사용하여 구문 분석 시 발생할 수 있는 오류를 처리합니다.

analyze_sentiment(헤드라인)

  • 목적: 뉴스 헤드라인 목록에 대한 감성 분석을 수행합니다.
  • 매개변수:
    • 헤드라인: 각각 뉴스 헤드라인을 나타내는 문자열 목록입니다.
  • 반품: 헤드라인과 감정 점수(복합, 긍정적, 부정적, 중립)가 포함된 Pandas DataFrame.
  • 구현:
    • SentimentIntensityAnalyzer를 초기화합니다.
    • 각 헤드라인을 반복하고 감정 점수를 계산하여 목록에 저장합니다.
    • 감정 데이터 목록을 Pandas DataFrame으로 변환합니다.

주요 실행

  • 스크립트는 사용자에게 주식 종목 기호를 입력하라는 메시지를 표시합니다.
  • get_news_headlines를 호출하여 해당 종목의 헤드라인을 가져옵니다.
  • 헤드라인이 발견되면 analyze_sentiment를 사용해 감성 분석을 수행합니다.
  • 결과 DataFrame이 인쇄되어 각 헤드라인에 감정 점수가 표시됩니다.
  • 헤드라인의 평균 복합 감정 점수를 계산하여 인쇄합니다.
  • 헤드라인이 발견되지 않으면 이를 알리는 메시지가 인쇄됩니다.

결론

Python은 다재다능하고 강력한 라이브러리 덕분에 최신 데이터 분석 및 계산 작업에 없어서는 안 될 도구입니다. 간단한 계산부터 복잡한 주식 시장 분석까지 모든 것을 처리하는 능력은 산업 전반에 걸쳐 그 가치를 강조합니다. Python이 지속적으로 발전함에 따라 데이터 기반 의사 결정에서 혁신과 효율성을 주도하는 Python의 역할은 더욱 확대되어 기술 발전의 초석으로서의 입지를 더욱 공고히 할 것입니다

참고: AI 지원 콘텐츠

위 내용은 주식 감정 분석을 위한 Python 스크립트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿