Введение:

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

  1. Понимание проблемы:

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

2. Сбор оперативных данных с помощью yfinance:

Чтобы начать наш анализ, мы будем использовать библиотеку yfinance, популярный пакет Python для получения данных об акциях из Yahoo Finance. Благодаря простому API мы можем получать данные о фьючерсах на акции в реальном времени для выбранного символа и периода времени. В этом примере давайте рассмотрим символ акций «AAPL» для Apple Inc.

3. Разработка функций и предварительная обработка данных:

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

4. Выбор лучших моделей машинного обучения:

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

5. Обучение и оценка:

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

6. Живые прогнозы с положительными или отрицательными результатами:

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

7. Визуализация результатов:

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

Вывод:

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

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

import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor

symbol = "AAPL"
data = yf.download(symbol, period="2d", interval="1h")
data = data[['Close']]
data.dropna(inplace=True)

data['Return'] = data['Close'].pct_change(periods=1).shift(-1)

window_size = 10
step_size = 1

predictions = []
actual_returns = []
messages = []

for i in range(0, len(data) - window_size + 1, step_size):
    window = data[i:i+window_size]

    if len(window) >= window_size:
        X = window[['Close']].values[:-1]
        y = np.where(window['Return'].shift(-1) > 0, 1, 0)[:-1]

        lr_model = LinearRegression()
        lr_model.fit(X, y)

        rf_model = RandomForestRegressor(n_estimators=100, random_state=42)
        rf_model.fit(X, y)

        X_pred = np.array([window['Close'].iloc[-1]])
        lr_prediction = lr_model.predict(X_pred.reshape(-1, 1))
        rf_prediction = rf_model.predict(X_pred.reshape(-1, 1))

        predictions.append((lr_prediction[0], rf_prediction[0]))
        actual_returns.append(data['Return'].iloc[i+window_size-1])

        lr_message = 'Positive' if lr_prediction[0] > 0 else 'Negative'
        rf_message = 'Positive' if rf_prediction[0] > 0 else 'Negative'
        messages.append((lr_message, rf_message))

predictions_df = pd.DataFrame(predictions, columns=['LR Prediction', 'RF Prediction'])
messages_df = pd.DataFrame(messages, columns=['LR Message', 'RF Message'])

result_df = pd.concat([predictions_df, pd.Series(actual_returns, name='Actual Return'), messages_df], axis=1)
print(result_df)

plt.figure(figsize=(10, 6))
plt.plot(actual_returns, label='Actual Returns', color='blue')
plt.plot(predictions_df['LR Prediction'], label='LR Predictions', color='green')
plt.plot(predictions_df['RF Prediction'], label='RF Predictions', color='red')
plt.axhline(0, color='black', linestyle='--')
plt.title('Stock Futures Returns: Actual vs Predicted')
plt.xlabel('Time')
plt.ylabel('Returns')
plt.legend()
plt.show()

Положительные или отрицательные результаты для моделей LinearRegression и RandomForestRegressor:

Визуализация результатов:

Ссылки:

Другие сведения:

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

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