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

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

Технический анализ:

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

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

Технический анализ основан на трех основных принципах:

Цена показывает все о рынке: исходя из гипотезы эффективного рынка, цена акции или криптовалюты отражает все параметры, которые влияют на рынок (или могут влиять на рынок). Эти параметры также включают фундаментальные факторы, которыми мы пренебрегаем при техническом анализе.

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

Тип рынка не имеет значения. Технический анализ можно использовать для всех рынков, от биржевых и товарных рынков до фондовых и криптовалютных рынков.

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

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

Модель регрессии дерева решений

До появления глубокого обучения деревья решений были золотым стандартом точности и интерпретируемости (здесь вы можете узнать о них больше), поэтому я решил создать модель дерева решений для прогнозирования курса акций. Я пробовал использовать Sklearn DecisionTreeRegressor для прогнозирования цен на акции различных компаний с использованием наборов данных Yahoo. Чтобы измерить ошибку моей модели, я использовал RMSE (среднеквадратическую ошибку), которая выглядит следующим образом:

Вот почему я использовал RMSE:

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

И у нас есть еще один фактор, называемый среднеквадратической ошибкой (MSE), который равен:

(где θ - фактическое значение, а θ_hat - оценка)

У нас есть:

So:

Поскольку θ - постоянная величина, мы имеем:

Также у нас есть:

И наконец, можно сделать вывод:

Теперь, когда у нас есть:

Мы можем минимизировать дисперсию и смещение нашей оценки, минимизируя MSE, а RMSE - это всего лишь второй корень MSE:

Таким образом, минимизация RMSE дает нам лучший прогноз и уменьшает ошибку.

Модель имеет приемлемый и относительно низкий RMSE (около 2,56 для акций Apple), но график прогнозируемых значений не очень близок к реальности:

Еще более разочаровывающим оказался результат линейной регрессии ». Поэтому я начал искать другие методы машинного обучения и нашел искусственную нейронную сеть как лучший метод для прогнозирования акций. Теперь давайте посмотрим, как работает моя модель ИНС.

Модель ANN:

После некоторого исследования я обнаружил, что рекуррентная нейронная сеть (RNN) является неплохим выбором для прогнозирования курса акций, поскольку она хороша для прогнозирования последовательностей (вот почему она используется для распознавания голоса и обработки естественного языка, поскольку голос и слова последовательности). Но есть небольшая проблема с RNN:

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

LSTM решает эту проблему за нас!

В модели LSTM у нас есть ворота забывания, в которых модель забывает только некоторую информацию после изменений в контексте данных и заменяет ее новыми и релевантными данными. Таким образом, полезные предыдущие данные будут сохранены и использованы в процессе принятия решений.

Определение наилучшей ориентации слоя:

Моей следующей задачей было найти хорошую ориентацию слоев для моей модели RNN. Сначала я создал простую модель с двумя моделями LSTM из 50 нейронов и двух плотных слоев с 25 и 1 нейроном, и результат был потрясающим 🤯.

Вот ориентация этой простой модели:

Всего было 3 эпохи (набор обучающих данных содержал 1765 точек данных). Среднеквадратичная ошибка модели для акций Apple составляла всего 5 долларов, а для акций Tesla - около 13 долларов (акции Tesla действительно трудно предсказать, поскольку их цена резко выросла за очень короткое время). период), что намного лучше, чем я ожидал.

Вот результат этой модели на Apple и Tesla Stock:

RMSE: 13.03422456629136

RMSE: 2.2491807376637176

Если мы обучим эту модель на акциях разных компаний и сохраним ее, мы увидим повышение точности модели.

Результаты по цене акций Walmart до и после обучения на наборе данных Apple до набора данных Walmart:

До:

RMSE: 0,7956288281609031

После:

RMSE: 0,6992931365966797

Хотя эта модель имела хорошую точность, ее все же можно улучшить. Поэтому я начал создавать более сложную модель с большим количеством нейронов. Я использовал это популярное правило: «Количество скрытых нейронов должно быть между размером входного слоя и размером выходного слоя. Количество скрытых нейронов должно составлять 2/3 размера входного слоя плюс размер выходного слоя. Количество скрытых нейронов не должно превышать размера входного слоя более чем в два раза ». После проверки различных ориентаций нейронов (разные слои и количество нейронов) с помощью KerasClassifier из keras.wrappers.scikit_learn и GridSearchCV из sklearn.model_selection , я получил такую ​​ориентацию:

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

Приложения:

Прогнозирование цен на акции имеет три основных применения:

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

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

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

Заключительные мысли:

Хотя большинство моделей прогнозирования цен на акции не совсем точны при прогнозировании точных значений цен на акции, они показали хорошие результаты при прогнозировании динамики цен, и это здорово! (Хотя эти модели могут быть весьма полезными, их не следует рассматривать как единственный источник для принятия решений, поскольку модели не учитывают все факторы в своих прогнозах)

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

Ключевые выводы:

· Что такое технический анализ

· Модель регрессии дерева решений (как это работает)

· Модель ИНС (как это работает)

· Приложения для прогнозирования цен на акции

· Заключительные мысли о текущих моделях прогнозирования цен