برنامه نویسی

اسکریپت پایتون برای تجزیه و تحلیل احساسات سهام

بازار سهام پر از افرادی است که قیمت همه چیز را می دانند اما ارزش هیچ چیز را نمی دانند– فیلیپ فیشر

محبوبیت پایتون به طور قابل توجهی در حال افزایش است و در طیف گسترده ای از برنامه ها، از محاسبات اولیه تا تجزیه و تحلیل آماری پیشرفته برای داده های بازار سهام استفاده می شود. در این مقاله به یک اسکریپت پایتون می پردازیم که تسلط رو به رشد پایتون در دنیای مالی را نشان می دهد. توانایی آن در ادغام یکپارچه با داده ها، انجام محاسبات پیچیده و خودکارسازی وظایف، آن را به ابزاری ارزشمند برای متخصصان مالی تبدیل می کند.

این اسکریپت نشان می دهد که چگونه می توان از پایتون برای تجزیه و تحلیل عناوین اخبار و استخراج بینش های ارزشمند در مورد احساسات بازار استفاده کرد. با استفاده از قدرت کتابخانه های پردازش زبان طبیعی (NLP)، اسکریپت لحن احساسی مقالات خبری مربوط به یک سهام خاص را تجزیه و تحلیل می کند. این تجزیه و تحلیل می تواند اطلاعات مهمی را برای سرمایه گذاران فراهم کند و به آنها کمک کند:

  • تصمیمات سرمایه گذاری آگاهانه تری بگیرید: با درک احساسات حاکم بر بازار، سرمایه گذاران می توانند فرصت های بالقوه را شناسایی کرده و ریسک ها را کاهش دهند.
  • استراتژی های معاملاتی موثرتری را توسعه دهید: تجزیه و تحلیل احساسات را می توان در الگوریتم های معاملاتی ادغام کرد تا زمان بندی را بهبود بخشد و بالقوه را افزایش دهد.
  • یک مزیت رقابتی به دست آورید: تطبیق پذیری پایتون امکان توسعه مدل های مالی پیچیده و تجزیه و تحلیل مجموعه داده های گسترده را فراهم می کند و مزیت قابل توجهی در چشم انداز مالی رقابتی ایجاد می کند.
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}.")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خروجی:

تجزیه و تحلیل احساسات سهام

واردات

  • requests: برای ایجاد درخواست های HTTP برای واکشی داده ها از یک وب API استفاده می شود.
  • pandas: یک کتابخانه دستکاری داده که برای ایجاد و مدیریت داده ها در قالب DataFrame استفاده می شود.
  • SentimentIntensityAnalyzer از nltk.sentiment.vader: ابزاری برای تجزیه و تحلیل احساسات که امتیازات احساسات را برای متن ارائه می کند.

راه اندازی

  • راه اندازی NLTK: این اسکریپت شامل یک نظر است که نشان می دهد واژگان VADER باید با استفاده از NLTK دانلود شود. این کار با nltk.download('vader_lexicon').

توابع

get_news_headlines(ticker)

  • هدف: عناوین اخبار مربوط به یک نماد مشخص سهام را واکشی می کند.
  • پارامترها:

    • ticker: رشته ای که نماد نماد سهام را نشان می دهد (به عنوان مثال، 'AAPL' برای اپل).
  • برمی گرداند: فهرستی از عناوین اخبار به صورت رشته ای.

  • پیاده سازی:

    • با استفاده از نشانگر ارائه شده، یک URL برای یک API اخبار فرضی می سازد.
    • یک درخواست GET را به API ارسال می کند و وضعیت پاسخگویی موفق را بررسی می کند.
    • پاسخ JSON را برای استخراج سرفصل ها تجزیه می کند.
    • خطاهای احتمالی در تجزیه را با یک بلوک try-except کنترل می کند.

analyze_sentiment(headlines)

  • هدف: تجزیه و تحلیل احساسات را در لیستی از عناوین اخبار انجام می دهد.
  • پارامترها:

    • headlines: فهرستی از رشته ها که هر کدام نشان دهنده یک عنوان خبری است.
  • برمی گرداند: یک DataFrame پانداها حاوی سرفصل ها و نمرات احساسات آنها (ترکیب، مثبت، منفی، خنثی).

  • پیاده سازی:

    • SentimentIntensityAnalyzer را راه اندازی می کند.
    • روی هر عنوان تکرار می شود، امتیازات احساسات را محاسبه می کند و آنها را در یک لیست ذخیره می کند.
    • فهرست داده‌های احساسات را به DataFrame پانداها تبدیل می‌کند.

اجرای اصلی

  • اسکریپت از کاربر می خواهد که یک نماد نماد سهام را وارد کند.
  • تماس می گیرد get_news_headlines برای واکشی عناوین مربوط به علامت داده شده.
  • اگر عناوین یافت شوند، با استفاده از تحلیل احساسات انجام می دهد analyze_sentiment.
  • DataFrame حاصل چاپ می‌شود و هر عنوان را با امتیازات احساسی آن نشان می‌دهد.
  • میانگین امتیاز احساسات مرکب را برای سرفصل ها محاسبه و چاپ می کند.
  • اگر هیچ عنوانی پیدا نشد، پیامی را چاپ می کند که نشان دهنده این موضوع است.

نتیجه گیری

تطبیق پذیری و کتابخانه های قدرتمند پایتون آن را به ابزاری ضروری برای تجزیه و تحلیل داده های مدرن و وظایف محاسباتی تبدیل کرده است. توانایی آن برای رسیدگی به همه چیز از محاسبات ساده گرفته تا تحلیل های پیچیده بازار سهام، بر ارزش آن در بین صنایع تاکید دارد. همانطور که پایتون به تکامل خود ادامه می دهد، نقش آن در ایجاد نوآوری و کارایی در تصمیم گیری مبتنی بر داده ها بیش از پیش گسترش می یابد و جایگاه خود را به عنوان سنگ بنای پیشرفت فناوری مستحکم می کند.

توجه: محتوای به کمک هوش مصنوعی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا