Прогнозирование запасов - занятие дураков, но это ошеломляющее и увлекательное занятие. В этом посте я использую популярное программное обеспечение временных рядов Prophet от Facebook для прогнозирования цен закрытия акций и биржевых фондов (ETF). Я сравниваю прогнозы с данными на 2020 год и прогнозом на 2021 год.

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

Используя API-интерфейсы Prophet и yfinance (Yahoo Finance), я спрогнозировал цены на акции и ETF на 2021 год, но перед этим мне пришлось проверить, насколько хорошо Prophet прогнозирует. Поэтому я включил его, чтобы спрогнозировать цены на акции на декабрь 2020 года. Этот год стал для фондового рынка катанием на американских горках, и кратковременный обвал фондового рынка, который мы видели ранее в этом году, не может быть уловлен простым алгоритмом прогнозирования временных рядов. Учитывая это, если прогноз будет ближе к реальности в декабре 2020 года, мы, вероятно, сможем потратить некоторое время на анализ прогнозов на 2021 год.

Прогнозы на 2020 год

Я выбрал несколько образцов акций и ETF для прогнозирования цен на акции в декабре 2020 года. Я использовал дневную цену закрытия акций с 1 января 2016 года по 31 декабря 2019 года, чтобы спрогнозировать цены закрытия на весь год. Я вычислил среднеквадратичную ошибку (RMSE) для прогноза, и результаты показаны в таблице 1.

Верхние 15 строк в таблице - это отдельные акции, а нижние 15 строк - для ETF. Прогнозы по ETF немного ближе к реальности, чем по отдельным акциям.

Прогнозы на 2021 год

Теперь давайте посмотрим на прогнозы на 2021 год. На этот раз я использовал пятилетнюю дневную цену закрытия акций, чтобы спрогнозировать цены закрытия на декабрь 2021 года.

Вот несколько графиков для выбранных акций и ETF:

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

Код

Вот код для создания ваших собственных прогнозов. Сначала импортируйте необходимые библиотеки.

import pandas as pd
from fbprophet import Prophet
import yfinance as yf

Затем получите исторические данные о запасах с помощью yfinance.

# download stock data
tickers = ['FB', 'MSFT', 'VOO', 'SCHG']
stock_history = yf.download(tickers, period="5y")

Подготовьте данные, чтобы мы могли передать их Пророку.

# Prep up data
train = {}
for e in tickers:
    train_df = stock_history['Close'][e]
    train_df = train_df.reset_index()
    train_df[['ds', 'y']] = train_df[['Date', e]]
    train[e] = train_df[['ds', 'y']]

Прогнозируйте использование Prophet на следующие 365 дней.

# Predict stock closing value for the next 365 days
for e in tickers:
    m = Prophet(daily_seasonality=True)
    m.fit(train[e])
    future = m.make_future_dataframe(periods=365)
    forecast = m.predict(future)
    print(forecast[['ds', 'yhat']].tail(1))
    label = e + " stock price"
    fig = m.plot(forecast, xlabel='', ylabel=label)

использованная литература

[1] Прогнозирование в масштабе, Пророк. [Онлайн]. Доступно: https://facebook.github.io/prophet/.

[2] Дж. Браунли, Прогнозирование временных рядов с помощью Prophet в Python, Machine Learning Mastery, 26 августа 2020 г. [Онлайн]. Доступно: https://machinelearningmaster.com/time-series-forecasting-with-prophet-in-python/.

[3] Р. Арусси, Надежно загружайте исторические рыночные данные с Yahoo! Финансы с помощью Python , Ран Арусси (официальный веб-сайт), 17 апреля 2019 г. [Онлайн]. Доступно: https://aroussi.com/post/python-yahoo-finance.