Сигнал к покупке подается в случае, если цена пробивает нижнюю границу области. И обратное, если цена пробивает верхнюю границу - подается сигнал к продаже. Однако данный метод дает очень много недолговечных коротких сигналов, что и является его недостатком. Его усовершенствованием является алгоритм «полосы Боллинджера», предложенный Джоном Боллинджером.
Для описания данного алгоритма необходимо понимать определение волатильности финансового инструмента. Волатильностью финансового инструмента называют статистических финансовых показатель, который характеризует изменчивость цены и позволяющий определить риск приобретения финансового инструмента.
Рассматриваемый алгоритм аккумулирует в себе алгоритм «Конверт» с учетом волатильности финансового инструмента. Основной задачей алгоритма является определение относительно высоких и низких цен. В качестве меры волатильности используют стандартное отклонение из-за его чувствительности к экстремальным значениям. Границы областей, как правило, берутся на 2 стандартных отклонения выше или ниже короткого скользящего среднего.
Полосы Боллинджера напоминают то сужающийся то расширяющийся конверт, пример алгоритма представлен на рис. 2.2.
Алгоритм рассчитывается по следующим формулам (формулы 1 - 4):
(1)
(2)
(3)
(4)
где: d - отклонение от скользящего среднего
Pi - значение цены в заданной точке
MAi - значение скользящего среднего в заданной точке
n - число слагаемых
- стандартное отклонение
LB (low bound) - нижняя граница области
UB (up bound) - верхняя граница области
Рисунок 2.2 Полосы Боллинджера
Сужение полосы обозначает низкую волатильность финансового инструмента и предшествует скорому её расширению. Однако малая волатильность не указывает направление будущего изменения цены.
Расширение полосы говорит о высокой волатильности. При таком развитии событий тренд четко определен и направление разворота очевидно. Необходимо уловить момент разворота тренда [8].
Также существуют и другие сигналы рассматриваемого алгоритма, например, ситуация, при которой две следующие друг за другом вершины вмененного ряда, первая из которых лежит вне области полос, а вторая внутри неё - сигнал к продаже. И наоборот, если одна из вершин выходит за нижнюю границу области полос, а вторая над нижней границу - подается сигнал к покупке. На рисунке ниже красными маркерами отмечены сигналы к покупке; зелеными маркерами отмечены сигналы к продаже (рис. 2.3):
Рисунок 2.3 Примеры сигналов алгоритма полос Боллинджера
2.1.3 Осцилляторы скользящих средних
Под осциллятором понимают индикатор технического анализа, характеризующий состояние перекупленности или перепроданности рынка.
Осциллятор наиболее эффективен при сравнительно узком рыночном коридоре, то есть при относительно небольшой волатильности. Существует большое множество различных осцилляторов, однако один из наиболее успешных и популярных является MACD (Moving Average Convergence/Divergence, схождение/ расхождение скользящих средних).
Moving Average Convergence/Divergence представляет собой разность двух скользящих средних (короткого с окрестностью сглаживания n1 и длинного с окрестностью сглаживания n2 > n1). Разность строится в открытой шкале околонулевой линии. Точки на нулевой линии соответствуют ситуациям, при которых скользящие средние пересекаются. Рассматриваемый осциллятор подает следующие сигналы: в ситуации, когда Moving Average Convergence/Divergence поднимается выше нулевой линии - сигнал к покупке; когда MACD опускается ниже нулевой линии - к продаже. Пример осциллятора Moving Average Convergence/Divergence изображен ниже на рис. 2.4:
Рисунок 2.4 Осциллятор MACD
2.2 Использование методов машинного обучения в прогнозировании
Машинное обучение на сегодняшний день является очень перспективным и популярным методом. Данный метод используют в различных областях для достижения определенных целей, не исключением является и прогнозирование финансовых временных рядов.
Автор статьи «Прогнозирование финансовых временных рядов с MLP в Keras» - выпускник магистр University of Verona по специальности "прикладная математика" озадачился целью проведения всего процесса работы с временными рядами от обработки исходных данных до постройки нейронных сетей и валидации результатов [6, 9, 10].
В качестве исходных данных автором были рассмотрены цены на акции Apple с 2005 года по дату исследования. Данные были скачены из официальных источников, подготовлены для обучения нейронных сетей; нейронные сети были настроены и в итоге был получен определенный результат. Результатом является определение тренда на 5 дней вперед с вероятностью 60-70%, что, в целом, под цели автора является неплохим результатом. Однако, под поставленную цель в начале работы, т.е. представление прогноза на следующий день, результат с определением тренда с точностью 60-70% является неудовлетворительным.
Таким образом, необходимо рассмотреть другие методы машинного обучения, позволяющие дать конкретный прогноз. Однако стоит понимать, что нет какого-то универсального алгоритма, который подходит под все случаи и даст наиболее точный результат. Следовательно, необходимо применить разные алгоритмы прогнозирования, поскольку каждый алгоритм обладает своим уникальным принципом работы и может подойти под конкретные данные лучше, чем какой-либо другой.
Для использования алгоритмов прогнозирования, дающих конкретный результат прогноза необходимо использовать обогащенные данные. Т.е. математическими методами получить промежуточные результаты на завтрашний день, и уже на этих результатах опираться при выполнении алгоритма прогнозирования [11].
Для обогащения данных были выбраны уже описанные ранее математические методы, а именно методы: скользящие средние, полосы Боллинджера, осцилляторы скользящих средних. Также на основе полученных методами результатов предполагается выделить индикаторы по выполнению методов [12, 13, 14]. Например, если цена верхней скользящей средней стала меньше цены временного ряда в конкретной точке, то индикатор меняется с 0 на 1, и обратно. Для каждого метода предполагается использовать свои индикаторы. Более подробно обогащение данных и использование индикаторов будет описано в техническом задании.
2.2.1 Линейная регрессия
Линейная регрессия - метод, используемый для моделирования отношений между одной или несколькими входными переменными и выходной зависимой переменной. Результат представляет собой конкретное значение, являющееся линейной комбинацией входных значений. Линейная регрессия относится к классу задач обучения с учителем [12].
Линейную регрессию можно представить в виде уравнения, которое описывает прямую, наиболее точно иллюстрирующую взаимосвязь между входными переменными «Х» и выходными переменными «Y». Для составления этого уравнения нужно найти определенные коэффициенты «B» для входных переменных.
Например: Y = a + bx.
Рисунок 2.5 Линия линейной регрессии, показывающая пересечение "а" и угловой коэффициент "b" (величину возрастания "Y" при увеличении "X" на одну единицу)
Зная значение переменной «X», необходимо найти значение переменной «Y», цель линейной регрессии заключается в поиске значений коэффициентов «a» и «b».
«X» называется независимой переменной или предиктором.
«Y» - зависимая переменная или переменная отклика.
«a» - свободный член (пересечение» линии оценки; это значение «Y» при «X» = 0 (рис. 2.5).
«b» - угловой коэффициент или градиент оцененной линии; она представляет собой величину, на которую «Y» увеличивается в среднем, если «X» увеличивается на одну единицу.
Алгоритм работы (обучения) линейной регрессии наглядно представлен на рисунке (см. рис. 2.6).
Рисунок 2.6 Обучение алгоритма линейной регрессии
Коэффициент ошибки в процессе обучения алгоритма представлен на рис. 2.7:
Основными преимуществами данного метода является:
· Быстрое моделирование.
· Алгоритм работы рассматриваемой модели доступен для понимания. Модель может быть использована для различных бизнес-решений.
К недостаткам метода можно отнести:
· Данные должны быть взаимосвязаны.
· На практике, линейная регрессия становится неэффективной при больших объемах и сложных взаимосвязях данных.
Рисунок 2.7 Коэффициент ошибки при обучении алгоритма линейной регрессии
Возможные варианты по улучшению результата прогнозирования:
Упростить данные (т.е. избавиться от похожих переменных).
По возможности сгладить шумы.
2.2.2 Градиентный бустинг
Градиентный бустинг - один из наиболее популярных и часто применяемых на практике алгоритмов машинного обучения. Данный алгоритм также относится к классу задач обучения с учителем. Данный алгоритм часто применяется в ML соревнованиях и зачастую является рецептом победы в них. Во многих поисковых системах также используется рассматриваемый алгоритм.
История появления градиентного бустинга начинается с вопроса о том, можно ли из большого количества относительно слабых и простых моделей получить одну сильную. В данном случае, под слабыми моделями подразумевают произвольные алгоритмы машинного обучения, точность которых может быть лишь немногим выше случайного угадывания.
Ответ на поставленный вопрос нашелся удивительно быстро в виде теоретической математической модели. Однако для реализации алгоритма потребовалось несколько лет. Общий подход алгоритма заключался в жадном построении линейной комбинации простых моделей (базовых алгоритмов) путем перевзвешивания входных данных. Каждая последующая модель (как правило, дерево решений) строилась таким образом, чтобы придавать больший вес и предпочтение ранее некорректно предсказанным наблюдениям.
Алгоритм Adaboost работал достаточно хорошо, но из-за малого количества обоснований работы алгоритма, вокруг него возник полный спектр спекуляций: кто-то считал его сверхалгоритмом, кто-то был скептически настроен и разделял мнение, что это малоприменимый подход с жесткой переподгонкой (overfitting). Особенно сильно это мнение закреплялось на данных с большими выбросами, на которых алгоритм оказался неустойчив. Однако в 1999 году появилось обобщение наработок алгоритмов бустинга - градиентный бустинг.
Переход к алгоритму градиентного бустинга является переходом от инженерно-алгоритмических изысканий в построении алгоритмов к полноценной методологии, как такие алгоритмы строить и изучать. С математической точки зрения изменилось не так много: алгоритм построен на всё том же добавлении (бустинге) слабых алгоритмов, с каждой последующей итерацией улучшая те участки данных, которые не были отработаны должным образом предыдущими моделями. Но при применении каждой последующей простой модели, она строится не просто на перевзвешанных наблюдениях, а так, чтобы лучшим образом приближать общий градиент целевой функции [12].
Со временем, алгоритм градиентного бустинга совершенствовался и уже в 2011 нашел популярность на соревнованиях по ML.
Выводы по главе 2
В данной главе были проанализированы одни из самых популярных, эффективных методов, используемых при прогнозировании временных рядов. Если рассматривать каждый метод в отдельности, то в целом, результаты работы метода не вызывают уверенности в успешности их использования, однако, при использовании всех этих методов одновременно, вероятность прогнозирования может значительно повыситься и использование рассмотренных ранее методов могут весьма облегчить работу трейдера, и более того, сделать её более эффективной и прибыльной.
Таким образом, следующим шагом является проектирование информационной системы, которая будет тем или иным образом объединять в себе все описанные ранее алгоритмы. Следующим этапом после проектирования ИС, последует этап разработки, тестирования и применения полученного продукта на реальных данных. После реализации ИС можно будет говорить об успешности использования в совокупности описанных методов.
информационный система прогнозирование финансовый ряд
Глава 3. Разработка требований к информационной системе
В данной главе будут определены требования, предъявляемые к разрабатываемой информационной системе, определены инструменты проектирования и дано описание реализации выбранных на предыдущем этапе методов. Также будет рассмотрена структура разрабатываемой информационной системы.