Программы для предсказания движения акций
Машинное обучение: прогнозируем цены акций на фондовом рынке
Переводчик Полина Кабирова специально для «Нетологии», адаптировала статью инженера Кембриджского университета Вивека Паланиаппана о том, как с помощью нейронных сетей создать модель, способную предсказывать цены акций на фондовой бирже.
Машинное и глубокое обучение стали новой эффективной стратегией, которую для увеличения доходов используют многие инвестиционные фонды. В статье я объясню, как нейронные сети помогают спрогнозировать ситуацию на фондовом рынке — например, цену на акции (или индекс). В основе текста мой проект, написанный на языке Python. Полный код и гайд по программе можно найти на GitHub. Другие статьи по теме читайте в блоге на Medium.
Нейронные сети в экономике
Изменения в сфере финансов происходят нелинейно, и иногда может показаться, что цены на акции формируются совершенно случайным образом. Традиционные методы временных рядов, такие как модели ARIMA и GARCH эффективны, когда ряд является стационарным — его основные свойства со временем не изменяются. А для этого требуется, чтобы ряд был предварительно обработан с помощью log returns или приведён к стационарности по-другому. Однако главная проблема возникает при реализации этих моделей в реальной торговой системе, так как при добавлении новых данных стационарность не гарантируется.
Решением такой проблемы могут быть нейронные сети, которые не требуют стационарности. Нейронные сети изначально очень эффективны в поиске связей между данными и способны на их основе прогнозировать (или классифицировать) новые данные.
Обычно data science проект состоит из следующих операций:
Сбор данных
К счастью, необходимые для этого проекта данные можно найти на Yahoo Finance. Данные можно собрать, используя их Python API pdr.get_yahoo_data(ticker, start_date, end_date) или напрямую с сайта.
Предварительная обработка данных
Модели нейронных сетей
Для проекта я использовал две модели нейронных сетей: Многослойный перцептрон Румельхарта (Multilayer Perceptron — MLP) и модель Долгой краткосрочной памяти (Long Short Term Model — LSTM). Кратко расскажу о том, как работают эти модели. Подробнее о MLP читайте в другой статье, а о работе LSTM — в материале Джейкоба Аунгиерса.
MLP — самая простая форма нейронных сетей. Входные данные попадают в модель и с помощью определённых весов значения передаются через скрытые слои для получения выходных данных. Обучение алгоритма происходит от обратного распространения через скрытые слои, чтобы изменить значение весов каждого нейрона. Проблема этой модели — недостаток «памяти». Невозможно определить, какими были предыдущие данные и как они могут и должны повлиять на новые. В контексте нашей модели различия за 10 дней между данными двух датасетов могут иметь значение, но MLP не способны анализировать такие связи.
Для этого используется LSTM или Рекуррентные нейронные сети (Recurrent Neural Networks — RNN). RNN сохраняют определенную информацию о данных для последующего использования, это помогает нейронной сети анализировать сложную структуру связей между данными о ценах на акции. Но с RNN возникает проблема исчезающего градиента. Градиент уменьшается, потому что количество слоев повышается и уровень обучения (значение меньше единицы) умножается в несколько раз. Решают эту проблему LSTM, увеличивая эффективность.
Реализация модели
Важный этап работы с ценами на акции — нормализация данных. Обычно для этого вы вычитаете среднюю погрешность и делите на стандартную погрешность. Но нам нужно, чтобы эту систему можно было использовать в реальной торговле в течение определенного периода времени. Таким образом, использование статистики может быть не самым точным способом нормализации данных. Поэтому я просто разделил все данные на 200 (произвольное число, по сравнению с которым все другие числа малы). И хотя кажется, что такая нормализация ничем не обоснована и не имеет смысла, она эффективна, чтобы убедиться, что веса в нейронной сети не становятся слишком большими.
Начнем с более простой модели — MLP. В Keras строится последовательность и поверх неё добавляются плотные слои. Полный код выглядит так:
С помощью Keras в пяти строках кода мы создали MLP со скрытыми слоями, по сто нейронов в каждом. А теперь немного об оптимизаторе. Популярность набирает метод Adam (adaptive moment estimation) — более эффективный оптимизационный алгоритм по сравнению с стохастическим градиентным спуском. Есть два других расширения стохастического градиентного спуска — на их фоне сразу видны преимущества Adam:
AdaGrad — поддерживает установленную скорость обучения, которая улучшает результаты при расхождении градиентов (например, при проблемах с естественным языком и компьютерным зрением).
RMSProp — поддерживает установленную скорость обучения, которая может изменяться в зависимости от средних значений недавних градиентов для веса (например, насколько быстро он меняется). Это значит, что алгоритм хорошо справляется с нестационарными проблемами (например, шумы).
Adam объединяет в себе преимущества этих расширений, поэтому я выбрал его.
Теперь подгоняем модель под наши обучающие данные. Keras снова упрощает задачу, нужен только следующий код:
Когда модель готова, нужно проверить её на тестовых данных, чтобы определить, насколько хорошо она сработала. Это делается так:
Информацию, полученную в результате проверки, можно использовать, чтобы оценить способность модели прогнозировать цены акций.
Для модели LSTM используется похожая процедура, поэтому я покажу код и немного объясню его:
Обратите внимание, что для Keras нужны данные определенного размера, в зависимости от вашей модели. Очень важно изменить форму массива с помощью NumPy.
Модели бэктестинга
Когда мы подготовили наши модели с помощью обучающих данных и проверили их на тестовых, мы можем протестировать модель на исторических данных. Делается это следующим образом:
Однако, это упрощенная версия тестирования. Для полной системы бэктестинга нужно учитывать такие факторы, как «ошибка выжившего» (survivorship bias), тенденциозность (look ahead bias), изменение ситуации на рынке и транзакционные издержки. Так как это только образовательный проект, хватает и простого бэктестинга.
Прогноз моей модели LSTM на цены акций Apple в феврале
Для простой LSTM модели без оптимизации это очень хороший результат. Он показывает, что нейронные сети и модели машинного обучения способны строить сложные устойчивые связи между параметрами.
Оптимизация гиперпараметров
Для улучшения результатов модели после тестирования часто нужна оптимизация. Я не включил её в версию с открытым исходным кодом, чтобы читатели могли сами попробовать оптимизировать модель. Тем, кто не умеет оптимизировать, придется найти гиперпараметры, которые улучшат производительность модели. Есть несколько методов поиска гиперпараметров: от подбора параметров по сетке до стохастических методов.
Я уверен, с оптимизацией моделей знания в сфере машинного обучения выходят на новый уровень. Попробуйте оптимизировать модель так, чтобы она работала лучше моей. Сравните результат с графиком выше.
Вывод
Машинное обучение непрерывно развивается — каждый день появляются новые методы, поэтому очень важно постоянно обучаться. Лучший способ для этого — создавать интересные проекты, например, строить модели для прогноза цен на акции. И хотя моя LSTM-модель недостаточно хороша для использования в реальной торговле, фундамент, заложенный при разработке такой модели, может помочь в будущем.
Как предсказать цену акций
Умение сделать прогноз о том, как будет развиваться ситуация на рынке, – отличительная черта успешных инвесторов. К примеру, Уоррена Баффета за его сверхточные предсказания называют «оракулом».
Не удивительно, что инвесторы и трейдеры во всем мире пытаются заглянуть в будущее.
Вот вам 5 инструментов, которые могут в этом помочь.
На протяжении вот уже столетий инвесторы применяют для прогнозирования рыночных событий метод технического анализа. Он хорошо подходит для краткосрочных стратегий и основан на исследовании закономерностей в изменении цен в прошлом.
Для выявления паттернов таких закономерностей инвестор анализирует график цены нужного финансового инструмента (акции, фьючерса и т. п.).
Например, на графике ниже представлены две линии тренда, которые формируют сужающийся восходящий треугольник. Эта фигура теханализа называется «бычьей», то есть свидетельствует о возможном росте.
Для того чтобы составить прогноз, аналитики, использующие технический анализ, изучают динамику изменения цен, информацию об объемах торгов и другие статистические данные. Чтобы облегчить этот процесс, применяют специализированные атрибуты и индикаторы. Вот самые популярные из них:
Для разработки долгосрочных стратегий и прогнозирования на длительный срок используют фундаментальный анализ. При таком подходе анализируют финансовые и производственные показатели деятельности компании, акции которой интересуют инвестора. Также во внимание принимают текущие политические и рыночные тренды, учитывают различные типы рисков.
При фундаментальном анализе инвестору важно собрать как можно больше данных, которые способны повлиять на нужный актив. Необходимо оценить влияние событий, которые еще только могут произойти, как в мировой экономике целом, так и в стране или отрасли, где работает конкретная компания, в частности.
Проводить анализ можно не только вручную, но и в автоматическом режиме. В этом помогают различные алгоритмы сбора и анализа данных. В нашем техническом блоге на ресурсе «Хабрахабр» мы о них рассказывали.
Если вы не боитесь большого количества технических терминов, то добро пожаловать в разборы различных алгоритмов (методы опорных векторов, адаптивной фильтрации, а также торговые системы, применяющие функции индикаторов из технического анализа).
Как правило, для корректной работы таких систем необходимо сначала собрать значительный объем торговых данных о предыдущих периодах, разработать модель прогнозирования и протестировать ее.
Еще один распространенный метод прогнозирования цен — анализ общественного мнения (sentiment analysis). В качестве признаков, которые свидетельствуют о тех или иных «настроениях толпы», используют разные данные. Например, существуют исследования, описывающие связь между событиями на фондовом рынке и новостным фоном в Twitter. Вот работа по теме от ученых из Стенфорда.
Красная линия — реальное поведение цены акции, синяя — предсказанное с помощью алгоритма, основанного на анализе настроений в Twitter
Еще один подход — анализ поисковых запросов. Известен эксперимент, в ходе которого исследователи пытались установить связь между популярностью определенных поисковых запросов и движением рынка. Основная идея здесь в том, чтобы попытаться «заглянуть» в тот момент, когда инвестор готовится принять инвестиционное решение и собирает информацию.
В частности, авторам исследования удалось обнаружить, как связаны рост поисковых запросов по политическим и экономическим темам и последующий обвал фондовых рынков.
Все описанные методы, позволяющие предсказать изменения цен акций, помогают в прогнозировании, но значительно эффективнее использовать гибридный подход. Поэтому мы в ITI Capital запустили сервис ITI Global. Это информационная система, в которой объединены важные данные и рыночная статистика. Инвесторам доступны различные фильтры, чтобы подобрать активы по определенным критериям.
Инвестор может видеть резонансные новости по определенному финансовому инструменту и его тональность. Система учитывает как отраслевые новости, так и мнения аналитиков и блогеров — они ранжируются по высоте авторитета.
Также система собирает данные по десяткам тысяч портфелей реальных инвесторов, включая информацию по общим покупкам и продажам определенного финансового инструмента. Это отражает уровень доверия к активу: сколько человек купили или продали его.
Как предсказать цену акций: Алгоритм адаптивной фильтрации
Группа бразильских ученых опубликовала исследование, посвященное созданию инструмента для предсказания поведения активов, торгующихся на фондовом рынке. В работе представлено подробное описание метода и способа расчетов для подобных прогнозов. Мы представляем вашему вниманию наиболее интересные моменты этого документа.
Что такое адаптивный фильтр
Адаптивный фильтр — это инструмент, способный к самообучению для достижения заданного уровня соответсвия выходных данных реальному положению вещей. Под адаптивностью понимается возможность реагировать на изменения входных данных в режиме реального времени для достижения более высокой производительности. На практике, адаптивные алгоритмы реализуются двумя классическими методами — методом градиента и наименьших квадратов (LMS и RLS). Подобный фильтр может быть использован для широкого спектра задач — фильтрации, спектрального анализа или поиска сигналов и т.д.
На рисунке 1 представлена универсальная схема применения адаптивного фильтра в предиктивном фреймворке, где k — это номер итерации, x(k ) — входящий сигнал, y(k) — вывод адаптивного фильтра, являющийся прогнозом желаемого ответа d(k), а e(k) — сигнал ошибки, определяемый как разница между желаемым ответом и выводом фильтра, то есть e(k) = d(k) — y(k).
Рекурсивный адаптивный алгоритм наименьших квадратов (RLS, recursive Least-Squares) позволяет добиваться высокой производительности и скорости сходимости при использовании в переменных во времени средах.
Рис. 1. Общая блок-диаграмма адаптивного фильтра для предсказания сигналов
Еще один важный параметр — это так называемое окно наблюдений, то есть временной период анализа, который обычно имеет прямоугольное или экспоненциальное соответствие. Параметр, контролирующий соответствие и длительность окна наблюдений называется коэффициентов забывания λ (он применяется к памяти алгоритма), 0 и объектная функция выглядит так:
Использование адаптивного фильтра в фреймворке предсказаний цен акций
Цель данного исследования — понять, насколько жизнеспособен вариант с использованием адаптивной фильтрации в качестве инструмента для предсказания цен акций на реальных биржах. Адаптивный LMS-фильтр успешно применялся для предсказания трафика в беспроводных сетях [Liang (2002)]. В текущем случае адаптивная фильтрация использовалась для получения оценки возможной стоимости акций акций компании Petrobras, торгующихся на бразильской бирже Bovespa в Сан-Паулу (тикер PETR3).
Для создания модуля предсказания движения цены PETR3 был использован адаптивный цифровой FIR-фильтр со 100 реальными коэффициентами. В качестве алгоритма адаптации был использован RLS с коэффициентом забывания 0,98. Также было использовано окно предсказуемости размером в 16 дней. Симуляция производилась на платформе MATLAB, в качестве входных данных использовалась торговая информация в период с 01/03/2000 до 09/23/2009. Значения дневных цен акций соответствуют моменту закрытия торгов. На рисунке 2 показана сходимость коэффициентов адаптивного фильтра, использующегося в ходе создания предсказаний движения цены PETR3.
Рис. 2. Сходимость коэффициентов адаптивного фильтра, запущенного для генерирования предсказаний цен акций компании Petrobras (PETR3 на бразильском фондовом рынке).
Эволюция коэффициентов фильтрации ясно демонстрирует наличие сходимости в период, примерно совпадающий со временем предсказания. По оси абсцисс отмечено число торговых дней, участвующих в симуляции. Реальная оценка акций PETR3 на бразильском фондовом рынке в указанный период показана красной линией на рисунке 3. Там же черным отмечены значения предсказанных фильтром цен.
Рис. 3. Цена акций PETR3 на бразильском фондовом рынке в период анализа для фильтрации. Красным показан реальный рыночный тренд, черным — оценка, сгенерированная адаптивным фильтром.
Очевидно, что существует соответствие предсказанных цен и тем, как дела обстояли на рынке в действительности. Для подтверждения этого факта было проведено моделирование конкретного торгового дня — конкретно 2,450 день с начала наблюдений 1/3/2000 года. На рисунке 4 показан зум предсказания, сделанного адаптивным фильтром:
Рис. 4. Предсказание цен акций в конкретный день
Производительность адаптивного фильтра для предсказания цен выбранного актива
Рассмотрим стратегии инвестиций в акции PETR3 с использованием предсказаний, сгенерированных фильтром с момента 2473 (показан на рис. 5). Фильтрация осуществляется с помощью RLS-алгоритма с 100 коэффициентами и коэффициентом забывания λ = 0,98. Предполагаемый тренд движения цен акций PETR3 на основе фильтрации для 16-дневного окна отображен пунктирной линией на рисунке 5.
Рис. 5. Поведение актива PETR3 в период с 08/18/2009 до 09/22/2009. Пунктир — предсказание адаптивного фильтра, красным — реальная цена акций на рынке.
Кривая предсказания говорит о необходимости покупки актива в торговый день 09/02/2009 и продажи акций в момент 17/09/2009 — таким образом продажа должна прийтись на момент роста, предшествующего снижению цен. График реальных цен говорит о том, что если бы такая стратегия была реализована, то покупка акций прошла бы по цене 37,86, а продажа по 41,05, что дало бы прибыль в размере 8,43% от объёма инвестиций. Несмотря на то, что данный пример является лишь частным случаем, он иллюстрирует возможную эффективность предсказаний, основанных на адаптивной фильтрации. В дальнейшем были проведены испытания для других торговых дней, и результаты в общем были такими же.
Создание адаптивного фильтра и точность предсказаний
Несмотря на положительные результаты испытаний, предложенный метод оставляет некоторые вопросы. Один из них звучит так — для какого типа активов он работает лучше? Какое количество коэффициентов FIR следует использовать для повышения качества работы модуля предсказания? Влият ли на результат значение коэффициента забывания?
Для оценки качества предсказаний, сделанных с помощью адаптивной фильтрации, используется корреляция — это мера схожести для анализа качества совпадения между предсказанным сигналом и реальными котировками на бирже в рамках заданного окна предсказания.
Анализ точности осуществляется с помощью изучения значений корреляции, как функции числа коэффициентов фильтра и размером окна предсказания. На рисунке 5 показан 3D-график корреляции между 08/18/2009 и 09/22/2009:
Рис. 6. Корреляционный 3D-график между предсказанными сигналами и реальными котировками акций.
График 6 был конвертирован в трехмерный контурный график, представленный на рисунке 7. На нем лучше видна зона повышенной корреляции между сгенерированным предсказанным сигналом и реальными ценами акций на рынке.
Для изучения влияние числа коэффициентов фильтра для адаптивных предсказаний был создан боковой профиль пространства из рисунка 6 (изображен на рис. 8), на котором отмечены пики корреляции, видимые наблюдателю, находящемуся в правой части пространства. Очевидно, что участок между 30 и 100 коэффициентами представляет высокую корреляцию. Соответственно, использование 30 и меньшего числа коэффциентов недостаточно для получения точного предсказания.
Рис. 8. Профиль корреляции, учитывающий число коэффициентов.
Первый участок высокой корреляции не особенно полезен, поскольку его можно достигнуть только при очень маленьком окне предсказания. Наилучшим вариантом в данном конкретном сценарии является выбор числа коэффициентов между 60 и 100.
Затем для оценки влияния окна предсказания на качество получаемых прогнозов, был создан передний профиль трехмерного пространства из рисунка 6 (рис. 9). На нем показано поведение максимальной корреляции с учетом размеров окна предсказания. Очевидно, что выбор очень короткого окна ведет к высокой корреляции (действительно, цены акций идущих друг за другом торговых дней показывают высокую корреляцию). Однако это практически ничего не дает нам в плане создания стратегий инвестирования на фондовом рынке.
Рис. 9. Профиль корреляции с учетом размером окна предсказания (от 1 до 30 торговых дней бразильского фондового рынка).
Неожиданный результат — эксперименты показали, что выбор окна предсказания размером около 10 дней является крайне неэффективным. Напротив, предсказания на окне в примерно 15 рабочих дней показывают гораздо лучшие результаты. Точно также, как и предполагалось, слишком длинные окна предсказания приводят к снижению коррелюяции.
Таким образом, наиболее оптимальным окном предсказания в данном конкретном случае является 15-20 дней.
В таблице 1 представлена сводная информация о количестве использованных коэффициентов, длине окна предсказания, даты покупки и продажи акций согласно предложенной фильтром стратегии, цены сделок, а также общий профит транзакций.
Как видно, использование адаптивного фильтра позволило добиться получения прибыли, в среднем, в размере 7% от объёма инвестиций.
10 лучших сайтов с бесплатными графиками акций для дневных трейдеров
Получите доступ к лучшим инструментам построения графиков и анализа на рынке!
Если вы дневной трейдер, использующий технический анализ или полагающийся на скринеры при выборе своих сделок, тогда вам нужна лучшая онлайн-платформа, которую вы можете найти.
Возможно, ваш брокер предоставляет вам хороший интерфейс, но, скорее всего, он не включает в себя дополнительные опции, которые могут вам понадобиться.
В этом обзоре расскажем вам о 10 лучших бесплатных веб-сайтах с графиками акций для внутридневных трейдеров, которые могут реально повлиять на вашу торговую эффективность.
10 лучших сайтов с графиками бесплатных акций
1. Tradingview.com
Как дневной трейдер, вы получите доступ к графикам в реальном времени на таймфреймах 1, 3, 5 и 15 минут. Графики четкие, а также множество настраиваемых параметров.
TradingView также имеет интеграцию с брокером, что означает, что вы можете торговать прямо с графиков. Самым последним дополнением является WHSelfinvest.
2. Finviz.com
Finviz выделяется своей бесплатной программой проверки акций, в основном на акциях США. Возможности фильтрации превосходные. Можно проверять акции буквально по всем доступным критериям!
Finviz также предлагает несколько хороших секторных тепловых карт, которые сразу дают вам актуальные значения для каждого сектора.
Преимущество Finviz заключается в том, что бесплатные графики изначально включают в себя несколько наложенных технических индикаторов, что очень полезно для получения мгновенного представления о ситуации с акциями.
3. StockCharts.com
Есть бесплатная пробная версия на 1 месяц, однако StockCharts открывает большие возможности с 25 индикаторами на график, дневными графиками и автоматическим обновлением.
Кроме того, предоставляются хорошие возможности для начинающих, поскольку Stockcharts предоставляет полноценный бесплатный образовательный портал (ChartSchool).
4. MarketWatch.com
MarketWatch включает в себя множество скринеров, новостных лент, портфолио опционов, а также полный набор других полезных инструментов для трейдеров и инвесторов.
MarketWatch объединяет новостной контент Barron’s и Wall Street Journal.
5. Google finance
Google Finance абсолютно бесплатны. Графики акций отчетливые и очень удобные для чтения.
В ноябре 2017 года масштабы Google Finance были фактически сокращены, в результате чего остались несколько функций:
6. Freestockcharts.com
Как следует из названия, на этом веб-сайте можно бесплатно пользоваться графиками в реальном времени, и вы можете отслеживать акции, ETF и индексы с большим набором индикаторов, применимых на графиках.
Интерфейс Freestockcharts не сильно отличается от Thinkorswim, и многие трейдеры считают его одной из лучших доступных бесплатных платформ.
Существуют учебные пособия и PDF-файл, которые помогут вам использовать веб-сайт.
7. Yahoo Finance
Возможности построения графиков превосходны, с четкой интерактивной графикой, на которую можно накладывать технические индикаторы.
8. Thinkorswim
Это даст вам доступ к одной из самых мощных платформ с возможностью сканирования, использования индикаторов и получения котировок в реальном времени.
9. Webull
Торговая платформа чрезвычайно хорошо интегрирована с их брокерскими услугами, и если откроете счет, то вам предоставят бесплатные акции на сумму до 300 долларов, так что это стоит проверить.
Webull ориентирована на технических трейдеров, и им ежедневно доступны подробные исследования фондового рынка.
10. Trade Ideas
Помимо встроенных сканирований можно добавить свои собственные настройки, такие как объемы и диапазоны цен.
Заключение
Когда выбираете веб-сайт бесплатных графиков акций, помните о том, что бесплатно не значит лучше, потому что данные могут быть не всегда в реальном времени.
Однако, если вы решите использовать бесплатные данные, то рекомендуем использовать 3 лучших веб-сайта, которыми являются TradingView, Thinkorswim или Finviz.