На сегодняшнем нестабильном фондовом рынке инвесторы постоянно ищут возможности максимизировать свою прибыль. Анализ настроения акций может дать ценную информацию о рыночных тенденциях и помочь определить потенциальных победителей и проигравших. В этом сообщении блога мы рассмотрим, как использовать Polygon API, модели машинного обучения (ML) и анализ настроений для определения наиболее прибыльных и наиболее проигрышных акций.

Шаг 1. Получение исторических данных об акциях. Первым шагом является получение исторических данных об акциях для нашего анализа. Мы будем использовать API Polygon, который предоставляет огромное количество рыночных данных в реальном времени и за прошлые периоды. Используя API, мы можем получить необходимые данные для наших моделей машинного обучения.

Шаг 2. Анализ настроений и обработка данных. Чтобы определить настроения, связанные с акциями, нам нужны данные, связанные с настроениями. Хотя API Polygon не предоставляет прямых данных о настроениях, мы можем получить их из внешних источников, таких как новостные API или платформы социальных сетей. Выполняя анализ настроений по этим источникам текстовых данных, мы можем оценить настроения (положительные, отрицательные, нейтральные), связанные с конкретными акциями.

Шаг 3. Объединение данных об акциях и данных о настроениях. Получив исторические данные об акциях и данные о настроениях, мы можем объединить их на основе совпадающих временных меток или любых других соответствующих критериев. Объединив эти наборы данных, мы можем создать всеобъемлющий набор данных, который включает как информацию о цене акций, так и результаты анализа настроений.

Шаг 4. Моделирование с помощью машинного обучения. Имея объединенный набор данных, мы можем приступить к моделированию с помощью машинного обучения. Мы будем использовать модели машинного обучения, такие как алгоритмы классификации или модели глубокого обучения, для обучения и прогнозирования настроений акций на основе доступных функций и данных об настроениях. Этот шаг позволяет нам использовать возможности машинного обучения для классификации акций по различным категориям настроений.

Шаг 5. Визуализация. Чтобы лучше понять результаты анализа тональности, мы визуализируем результаты с помощью графиков. Мы можем использовать различные методы визуализации, такие как гистограммы или круговые диаграммы, чтобы представить распределение настроений акций лидеров роста и лидеров убытков. Эти визуализации дадут четкое представление о настроениях, связанных с этими акциями.

Вывод. Анализ настроений по акциям — ценный инструмент для инвесторов, стремящихся принимать обоснованные решения на фондовом рынке. Используя Polygon API, комбинируя данные об акциях с данными об настроениях и используя модели машинного обучения, мы можем определить самые прибыльные и самые проигравшие акции с соответствующим анализом настроений. Благодаря этим знаниям инвесторы могут принимать более обоснованные решения и потенциально извлекать выгоду из рыночных возможностей.

Пример кода Python:

import requests
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

api_key = "YOUR_API_KEY"
base_url = "https://api.polygon.io/v2/aggs/ticker"

tickers = ["AAPL", "TSLA", "GOOGL", "AMZN"]
from_date = "2023-01-01"
to_date = "2023-06-01"

stock_data = {}

for ticker in tickers:
    url = f"{base_url}/{ticker}/range/1/day/{from_date}/{to_date}?apiKey={api_key}"
    response = requests.get(url)
    data = response.json()
    stock_data[ticker] = data['results']

gainers = {}
losers = {}

for ticker, data in stock_data.items():
    df = pd.DataFrame(data)
    df['timestamp'] = pd.to_datetime(df['t'], unit='ms')
    df.set_index('timestamp', inplace=True)
    df.sort_index(ascending=True, inplace=True)
    
    df['change'] = df['c'].pct_change()
    
    gainers[ticker] = df['change'].idxmax()
    losers[ticker] = df['change'].idxmin()

top_gainer = max(gainers, key=gainers.get)
top_loser = min(losers, key=losers.get)

gainer_data = stock_data[top_gainer]
loser_data = stock_data[top_loser]


gainer_df = pd.DataFrame(gainer_data)
gainer_df['timestamp'] = pd.to_datetime(gainer_df['t'], unit='ms')
gainer_df.set_index('timestamp', inplace=True)
gainer_df.sort_index(ascending=True, inplace=True)

loser_df = pd.DataFrame(loser_data)
loser_df['timestamp'] = pd.to_datetime(loser_df['t'], unit='ms')
loser_df.set_index('timestamp', inplace=True)
loser_df.sort_index(ascending=True, inplace=True)


gainer_features = gainer_df[['o', 'h', 'l', 'v']]  
gainer_target = gainer_df['c'] 

loser_features = loser_df[['o', 'h', 'l', 'v']]
loser_target = loser_df['c']

gainer_features_train, gainer_features_test, gainer_target_train, gainer_target_test = train_test_split(
    gainer_features, gainer_target, test_size=0.2, random_state=42
)

loser_features_train, loser_features_test, loser_target_train, loser_target_test = train_test_split(
    loser_features, loser_target, test_size=0.2, random_state=42
)


gainer_model = LinearRegression()
gainer_model.fit(gainer_features_train, gainer_target_train)
gainer_score = gainer_model.score(gainer_features_test, gainer_target_test)

loser_model = LinearRegression()
loser_model.fit(loser_features_train, loser_target_train)
loser_score = loser_model.score(loser_features_test, loser_target_test)

print("Model performance:")
print(f"Gainer Model R-squared: {gainer_score}")
print(f"Loser Model R-squared: {loser_score}")

Модель машинного обучения с построением результатов анализа настроений для наиболее прибыльных и наиболее проигрышных акций. Вы можете использовать гистограммы или круговые диаграммы для отображения распределения тональности или любой другой метод визуализации, который лучше всего представляет результаты анализа тональности.

gainer_predictions = gainer_model.predict(gainer_features_test)
print("GAINER:", gainer_predictions)

plt.figure(figsize=(12, 6))
plt.plot(gainer_target_test.index, gainer_target_test, label="Actual")
plt.plot(gainer_target_test.index, gainer_predictions, label="Predicted")
plt.xlabel("Date")
plt.ylabel("Stock Price")
plt.title("Top Gainer Stock - Actual vs. Predicted")
plt.legend()
plt.show()

loser_predictions = loser_model.predict(loser_features_test)
print("LOSER:", loser_predictions)
plt.figure(figsize=(12, 6))
plt.plot(loser_target_test.index, loser_target_test, label="Actual")
plt.plot(loser_target_test.index, loser_predictions, label="Predicted")
plt.xlabel("Date")
plt.ylabel("Stock Price")
plt.title("Top Loser Stock - Actual vs. Predicted")
plt.legend()
plt.show()

Это всего лишь простой пример того, как вы можете использовать API Polygon.io для получения данных о настроении акций и использовать модель машинного обучения для прогнозирования того, какие акции, скорее всего, будут наиболее прибыльными, а какие проигрышными. Вы можете использовать этот подход для создания более сложной торговой стратегии, которая поможет вам принимать более обоснованные инвестиционные решения.

Посетите мой блог: https://medium.com/@sahajgodhani777

Посетите мой официальный сайт: https://sahajgodhani.in/