Мнение

Сравнение каждого алгоритма машинного обучения для прогнозирования фондового рынка

Как я смог использовать Data Science для прогнозирования индекса S & P500.

Оглавление

  1. Вступление
  2. Сравнение моделей
  3. Резюме
  4. использованная литература

Вступление

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

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

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

Сравнение моделей

Я буду обсуждать библиотеку Python, которую я использовал, а также данные, параметры, сравниваемые модели, результаты и код ниже.

Библиотека

Используя возможности PyCaret [3], теперь вы можете тестировать все популярные алгоритмы машинного обучения друг с другом. Для этой проблемы я буду сравнивать MAE, MSE, RMSE, R2, RMSLE, MAPE и TT (Sec) - время, необходимое для завершения модели. Некоторые из преимуществ использования PyCaret в целом, как заявили разработчики, заключаются в повышении производительности, простоте использования и готовности к работе - все это я могу лично подтвердить.

Данные

Набор данных [4], который я использую, взят из Kaggle. Вы можете скачать его легко и быстро. Он состоит из 19 МБ вместе с данными по акциям S&P 500 за 5 лет. Также есть индивидуальные данные для каждой акции. Он состоит из 619,040 строк и 7 столбцов.

Столбцы:

  • Дата
  • открытым
  • высокий
  • низкий
  • близко
  • объем
  • Имя

Параметры

Это параметры, которые я использовал в setup() PyCaret. Проблема машинного обучения - это проблема регрессии, включая данные с фондового рынка, с переменной target, являющейся полем close. Для воспроизводимости можно установить session_id. Есть еще масса параметров, но это те, которые я использовал, и PyCaret отлично справляется с автоматическим обнаружением информации из ваших данных - например, выбирает, какие функции являются категориальными, и он подтвердит это вместе с вами в setup(). Поскольку это проблема временных рядов, то есть есть упорядоченные данные с датами, мы должны убедиться, что если мы используем fold_strategy, его нужно обозначить как timeseries.

Модели по сравнению

Я буду сравнивать 19 алгоритмов машинного обучения, некоторые из них невероятно популярны, а о некоторых я даже не слышал, поэтому будет интересно посмотреть, какой из них победит с этим набором данных. Важно помнить, что победа означает для вас или вашей компании - это, скорее всего, показатель вашей ошибки. Ради использования в бизнес-сценарии я буду использовать MAE или среднюю абсолютную ошибку в качестве метрики для определения того, какая модель в конечном итоге победит. Еще один важный фактор, который следует учитывать, - это время, необходимое для обучения модели. Как вы увидите, некоторые из них заняли много времени.

Вот все модели, которые я сравнивал:

  • Линейная регрессия
  • Лассо-регрессия
  • Риджская регрессия
  • Эластичная сетка
  • Ортогональное соответствие
  • Байесовский хребет
  • Регрессор с усилением градиента
  • Экстремальное усиление градиента
  • Случайный лесной регрессор
  • Регрессор дерева решений
  • CatBoost Regressor
  • Машина для повышения светового градиента
  • Регрессор дополнительных деревьев
  • Регрессор AdaBoost
  • Регрессор K Neighbours
  • Регрессия по наименьшему углу лассо
  • Регрессор Хубера
  • Пассивный агрессивный регрессор
  • Наименьшая угловая регрессия

Полученные результаты

Хорошо, самое интересное - сравнить модели. Как видно на скриншоте ниже, у моделей, как всегда, есть свои плюсы и минусы. Некоторые модели выглядят неточно, а некоторые имеют невероятно низкую погрешность. Время, необходимое для обучения каждой модели, также было очень разным. Итак, какой из них выиграл в нашем случае? Я скажу Поиск ортогонального соответствия. Честно говоря, я никогда не слышал об этом алгоритме до того, как поигрался с PyCaret, но это, по сути, линейная модель, и поэтому важно тестировать не только алгоритмы, которые вы знаете, и исследовать больше. Он превзошел все модели в MAE, MSE, RMSE и R2 (лучший результат). Важно отметить, что ни RMSLE, ни MAPE не выиграли. Тем не менее, это было одно из самых быстрых времен обучения, что может быть полезно в производственной среде (и при тестировании).

Поскольку единицами измерения целевой переменной были доллары, мы можем сказать, что средняя абсолютная ошибка составила 50 центов. Значение close - это то, что мы пытались предсказать (фактическое), а значение Label - это прогноз. В целом, эта модель на этих данных показала очень хорошие результаты!

Код

Вот код Python, который вы можете попробовать протестировать самостоятельно, импортировав библиотеки, прочитав свои данные, настроив регрессию, сравнив модели и сделав прогнозы [8]:

# import libraries
from pycaret.regression import *
import pandas as pd
# read in your stock data
stocks_df = pd.read_csv(‘file location of your data on your computer.csv’)
# setup your regression parameters 
regression = setup(data = stocks_df, 
 target = ‘close’,
 fold_strategy = ‘timeseries’,
 session_id = 100, 
 )
# compare models
compare_models()
# predict on test set
predictions = predict_model(omp)

Резюме

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

To summarized, we used PyCaret to train several models, with ultimately a linear model, Orthogonal Matching Pursuit, using time-series functions, as well as regression, to predict the S&P500.

Я хочу поблагодарить и восхищаться Моэзом Али за разработку этой замечательной библиотеки Data Science.

Надеюсь, моя статья была вам интересна и полезна. Не стесняйтесь оставлять комментарии ниже, если вы обращались к этой библиотеке для прогнозирования временных рядов или использовали другой метод. Вы предпочитаете одно другому? Какие типы блокировщиков используются при прогнозировании данных временных рядов?

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

Не стесняйтесь проверять мой профиль и другие статьи, а также обращаться ко мне в LinkedIn.

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

[1] Фото Austin Distel на Unsplash, (2019)

[2] Фото Austin Distel на Unsplash, (2019)

[3] Моэз Али, PyCaret, (2021 г.)

[4] Кам Ньюджент о Kaggle, Данные об акциях S&P 500, (2021 г.)

[5] М.Прибыла, Скриншот Dataframe, (2021 г.)

[6] М.Прибыла, Скриншот сравнения моделей, (2021 г.)

[7] М.Прибыла, Скриншот прогнозов, (2021 г.)

[8] M.Przybyla, Python Code, (2021)

[9] Фото MayoFi на Unsplash, (2020)