Наш доверительный интервал составляет от 50 до 70%.

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

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

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

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

Повестка дня

  1. Модуль Стокера
  2. Скользящие средние
  3. Простая линейная регрессия
  4. K-Ближайшие соседи
  5. Многослойный персептрон
  6. Что вам следует делать вместо этого
  7. Зоны улучшения
  8. Ресурсы

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

Использование модуля Stocker

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

Сначала нам нужно клонировать репозиторий GitHub.

!git clone https://github.com/WillKoehrsen/Data-Analysis.git

Нам также необходимо импортировать некоторые библиотеки. Теперь, когда репо клонировано, мы также можем импортировать модуль Stocker.

!pip install quandl
!pip install pytrends
import stocker
from stocker import Stocker

Давайте создадим объект Stocker. Я выбрал Google в качестве своей компании, но вы не обязаны делать то же самое. В модуле Stocker есть функция plot_stock (), которая многое делает сама.

Если вы обратите внимание, вы заметите, что даты для объекта Stocker не актуальны. Он останавливается на 2018–3–27. Внимательно посмотрев на реальный код модуля, мы увидим, что данные взяты из обмена WIKI Quandl. Возможно, данные не обновляются?

Мы можем использовать Stocker для проведения технического анализа акций, но пока мы сосредоточимся на средних. Стокер использует созданный Facebook пакет под названием prophet, который подходит для аддитивного моделирования.

Теперь давайте проверим прогнозы биржевиков. Нам нужно создать набор тестов и обучающий набор. У нас будет набор для обучения на 2014–2016 годы, а для тестирования - на 2017 год. Давайте посмотрим, насколько точна эта модель.

Результаты довольно ужасны, прогнозы почти так же плохи, как подбрасывание монеты. Давайте настроим некоторые гиперпараметры.

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

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

Пришло время провести окончательное испытание: попытать счастья на фондовом рынке (конечно, на моделировании).

Даже после всех этих настроек ясно, что простая покупка и удержание принесут большую прибыль.

Подготовка данных для машинного обучения

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

Скользящие средние

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

Давайте измерим точность нашей модели с помощью RMS (среднеквадратичной ошибки).

Теперь давайте посмотрим, как наш прогноз отображается рядом с фактическими ценами.

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

Простая линейная регрессия

Давайте попробуем использовать другой метод прогнозирования будущих цен на акции - линейную регрессию.

Сначала давайте создадим новый набор данных на основе оригинала.

Теперь давайте добавим еще несколько функций в набор данных для алгоритма линейной регрессии. Мы будем использовать некоторые функции из модуля fastai.

А теперь давайте проведем тестовый сплит.

Теперь мы можем реализовать алгоритм и получить некоторые результаты.

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

k-Ближайшие соседи

Перейдем к еще одному алгоритму машинного обучения - KNN.

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

Каковы наши результаты?

Ой! Это худший прогноз, который мы когда-либо делали! Есть причина, по которой k-ближайшие соседи более полезны для задач классификации и мелкомасштабной регрессии. Это классический случай переобучения. Поскольку KNN на самом деле просто вычисляет расстояния от каждой точки до другой, он был совершенно не в состоянии определить тенденцию изменения цен. Что дальше?

Многослойный персептрон

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

Давай получим наши результаты.

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

Заключение

Что мы узнали сегодня? Что нам показал весь этот технический анализ? Ответ довольно прост: если вы не являетесь кем-то вроде Рэя Далио, Уоррена Баффета или кого-либо из великих инвесторов, очень рискованно и, в конечном счете, не так прибыльно пытаться превзойти фондовый рынок. Согласно некоторым источникам, большинство хедж-фондов не могут преуспеть даже лучше, чем S&P 500! Поэтому, если вы хотите получить максимальную отдачу от своих инвестиций, используйте стратегию «купи и держи». По большей части, простое инвестирование в индексный фонд, такой как S&P 500, принесло довольно хорошую прибыль, даже когда в экономике было несколько крупных падений. В конце концов, решать вам.

Зоны улучшения

Спасибо, что нашли время прочитать эту статью! Не стесняйтесь проверить мой сайт портфолио или мой GitHub.

1. Используйте разные данные о запасах

Я использовал только данные об акциях Google и относительно небольшой промежуток времени. Не стесняйтесь использовать разные данные, которые можно получить с помощью Stocker, Yahoo Finance или Quandl.

2. Попробуйте разные алгоритмы машинного обучения.

Есть МНОГО очень хороших алгоритмов машинного обучения. Я использовал лишь небольшую часть из них, и только один из них был даже алгоритмом глубокого обучения.

3. Настройте больше гиперпараметров.

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

Ресурсы

  1. Понимание фондового рынка
  2. "Технический анализ"
  3. Что такое машинное обучение?
  4. Скользящие средние
  5. "Линейная регрессия"
  6. K-Ближайшие соседи
  7. "Нейронные сети"
  8. Тензорфлоу
  9. Керас