Разработка прототипа информационной системы прогнозирования финансовых временных рядов
Проектирование прототипа информационной системы, направленной на прогнозирование финансовых временных рядов. Требования, предъявляемые к ИС. Методы использования алгоритмов прогнозирования, полос Боллинджера, комбинаций и осцилляторов скользящих средних.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 28.10.2019 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.Allbest.Ru/
Размещено на http://www.Allbest.Ru/
Размещено на http://www.Allbest.Ru/
Пермский филиал федерального государственного автономного образовательного учреждения высшего образования
Национальный исследовательский университет
Высшая школа экономики
Факультет экономики, менеджмента и бизнес-информатики
Кафедра информационных технологий в бизнесе
Направление подготовки 38.04.05 «Бизнес-информатика»
Образовательная программа «Информационная аналитика в управлении предприятием»
Выпускная квалификационная работа
Разработка прототипа информационной системы прогнозирования финансовых временных рядов
Выполнил: Авхимович Д.В.
Руководитель к.ф.-м.н.,
Доцент Л.В. Шестакова
Пермь, 2019 год
Аннотация
Данная работа представляет собой проект по разработке прототипа информационной системы, направленного на прогнозирование финансовых временных рядов. В работе представлено описание алгоритмов прогнозирования, основанных на методах машинного обучения и математических методах.
Отчет состоит из четырех глав и 1 приложения, содержание изложено на 63 страницах:
В первой главе работы представлено описание предметной области, даны определения временным рядам, разобраны основные теоретические моменты временных рядов, рассмотрены фундаментальный и технический классы анализа, сделан обзор подобных продуктов на рынке, определена минимально необходимая точность прогноза.
Вторая глава содержит теорию алгоритмов прогнозирования, на основании которой было принято решение использовать следующие математические методы: комбинации скользящих средних, полосы Боллинджера, осцилляторы скользящих средних. В качестве методов прогнозирования машинного обучения были выбраны градиентный бустинг и линейная регрессия.
Третья глава работы представляет собой разработку требований, предъявляемых к информационной системе, а также описание использования алгоритмов прогнозирования финансовых временных рядов.
Четвертая глава содержит описание проектирования прототипа ИС, а также результаты тестирования.
Техническое задание на проектирование информационной системы прогнозирования финансовых временных рядов представлено в Приложении А и изложено на 14 страницах.
Ключевые слова: машинное обучение, прогнозирование финансовых временных рядов, комбинация скользящих средних, полосы Боллинджера, осцилляторы скользящих средних, математические методы прогнозирования, финансовые временные ряды, градиентный бустинг, линейная регрессия.
Оглавление
- Аннотация
- Введение
- Глава 1. Анализ предметной области
- 1.1 Классы анализа
- 1.1.1 Технический анализ
- 1.1.2 Фундаментальный анализ
- 1.2 Временные ряды
- 1.3 Определение необходимой точности прогноза
- 1.4 Обзор аналогов
- 1.5 Выводы по главе
- Глава 2. Определение методов прогнозирования
- 2.1 Использование математических методов в прогнозировании
- 2.1.1 Комбинация скользящих средних
- 2.1.2 Полосы Боллинджера
- 2.1.3 Осцилляторы скользящих средних
- 2.2 Использование методов машинного обучения в прогнозировании
- 2.2.1 Линейная регрессия
- 2.2.2 Градиентный бустинг
- 2.3 Выводы по главе
- Глава 3. Разработка требований к информационной системе
- 3.1 Функциональные требования к системе
- 3.2 Модуль «Подготовка и обогащение данных»
- 3.3 Модуль «Прогнозирование с помощью ML»
- 3.4 Модуль «Прогнозирование с помощью математических методов»
- 3.4.1 Комбинация скользящих средних
- 3.4.2 Полосы Боллинджера
- 3.4.3 Осцилляторы скользящих средних
- 3.5 Выводы по главе
- Глава 4. Проектирование прототипа ИС
- 4.1 Диаграмма классов
- 4.2 Проектирование главной формы
- 4.3 Загрузка и сохранение данных
- 4.4 Применение методов ML
- 4.5 Построение графиков
- 4.6 Тестирование
- 4.7 Выводы по главе
- Заключение
- Библиографический список
- Приложение
Введение
В современной рыночной конъюнктуре не найдется ни одной успешной компании, которая бы не стремилась автоматизировать свою деятельность. Высококачественная автоматизация бизнес процессов позволяет добиться более высокой производительности труда и значительно облегчает работу целом, более того она дает и дополнительные преимущества. Использование разного рода информационных систем помогает во всех сферах жизнедеятельности человека. Так, на рынке существуют различные системы помощи принятия решений.
Человеку, работающему на бирже, приходится ежедневно анализировать огромные объемы информации и, основываясь на обработанных данных, строить прогнозы относительно цен в ближайшем будущем. При некачественном анализе данных, его деятельность будет убыточна. Для того, чтобы облегчить эту работу или же сделать анализ более полным и соответственно более реалистичным разрабатывают такие системы, которые позволяют анализировать огромные объемы информации и выдавать определенный результат или сигнал для брокера.
Анализ на бирже делится на фундаментальный и технический. К фундаментальному анализу относятся различные новости, которые могут повлиять на цену акции, состояние экономики страны и многое другое. К техническому анализу относят анализ графиков по данной акции, поиск алгоритмов, выявление трендов, применение различных математических методов, что в совокупности помогает спрогнозировать дальнейшее поведение акции на бирже.
Ежегодно увеличивается количество компаний, выпускающие акции, более того, появляются новые рынки - рынки электронных валют или же крипто-валютные рынки. Более того, крипто валютный рынок является весьма молодым, его постоянно лихорадит, вследствие чего, волатильность монет очень большая, что может привлекать все больше рискованных инвесторов. Данный рынок отличается от рынка ценных бумаг, однако, в теории, подчиняется тем же законам, а значит, к нему применимы те же классы анализа: фундаментальный и технический.
Существует большое количество методов технического анализа, каждый из которых отличается по своей логике работы от других. Каждый метод может быть более эффективным под определенный набор данных. С появлением новых математических методов, брокеры пытаются применить их в своих целях для прогнозирования цен на акции.
Поскольку графики представляют собой временные ряды - последовательность значений, описывающих протекающий во времени процесс, измеренных в последовательные моменты времени, обычно через равные промежутки, можно использовать методы прогнозирования временных рядов. Предполагается использовать методы машинного обучения, различные математические методы для прогнозирования временных рядов.
Проблема - готовые системы для поддержки принятия решений, основанные на прогнозировании временных рядов весьма дорогостоящи для частного использования.
Объектом исследования являются временные ряды.
Предмет исследования - прогнозирование временных рядов.
Цель работы - разработка прототипа ИС, которая бы представляла пользователю конкретный прогноз цены на завтрашнее закрытие торгов.
Для достижения поставленной цели необходимо выполнить следующие задачи:
1. Рассмотреть теорию временных рядов.
2. Определить методы, подходящие для прогнозирования временных рядов.
3. Разработать техническое задание для системы по прогнозированию цен, на основании временных рядов.
4. Разработать прототип ИС для прогнозирования временных рядов.
На этапе анализа используются такие методы исследования, как абстракция и декомпозиция для представления объекта в виде системы. Для описания взаимодействия всех элементов системы используются объектно-ориентированный анализ и проектирование.
Глава 1. Анализ предметной области
В данной главе будет произведен анализ предметной области, определены термины технического анализа и фундаментального анализа. Будет рассмотрена теория временных рядов, основные виды графиков, применяемые в техническом анализе. Для последующего исследования будет определена минимально необходимая точность прогноза, который будет давать разработанная информационная система. Также в главе будут рассмотрены аналогичные системы.
1.1 Классы анализа
Одна из первостепенных задач при инвестировании капитала и игре на фондовом рынке - попытаться найти финансовые инструменты, с помощью которых можно увеличить свои вложения и минимизировать риски игры на финансовом рынке. Крупные, средние и мелкие игроки пытаются предвидеть будущие цены, тренды развития финансового рынка и увеличить на правильных прогнозах свой актив.
Для того, чтобы инвестиции были эффективны, необходимо проводить многоуровневый анализ финансового рынка, который реализуется в инвестиционной стратегии. В зависимости от различных факторов применяют два основных подхода: технический и фундаментальный анализ. Далее в работе будет рассмотрен каждый класс анализа более подробно.
1.1.1 Технический анализ
Для прогнозирования цен на рынке ценных бумаг применяют технический и фундаментальный анализ. Различие этих двух видов анализа различается инструментами прогнозирования, так технический анализ - способ прогнозирования будущей стоимости на основе графиков и индикаторов. А под фундаментальным анализом в свою очередь понимают прогнозирование стоимости на основе финансовых показателей деятельности компании и вычисления внутренней стоимости компании. Сравнивая эти две стоимости можно сделать вывод относительно переоцененности или недооцененности компании.
Также эти два вида анализа отвечают на разные вопросы: Фундаментальный - какие акции купить; Технический - в какой момент времени (и по какой цене) купить.
Основные положения технического анализа заключены в теории Доу и сформулированы в виде следующих аксиом [1]:
1. цена учитывает все происходящие события;
2. движение цен подвержено тенденциям;
3. история на фондовом рынке повторяется.
Смысл первой аксиомы заключается в том, что на стоимость финансовых инструментов влияют все факторы, как основные: политические, экономические и финансовые, так и прочие, вплоть до психологического состояния покупателей и продавцов. Другими словами, изменение цены - результат воздействия совокупности внешних факторов. Таким образом, проводя анализ ценовых графиков (финансовых временных рядов) и технических индикаторов, можно предсказать изменение стоимости финансовых инструментов в будущем.
Второе положение заключается в том, что рынок имеет инерционность, другими словами, движение цен на рынке имеет определенные тенденции. Это позволяет анализировать состояние рынка и делать определенные предсказания его развития.
В третьем положении утверждается, что факторы, которые влияли на изменение стоимости акций на рынке в прошлом, будут работать и в будущем.
Технический анализ, в свою очередь, делится на два основных вида: графический и аналитический. К графическому методу технического анализа относят анализ графиков цен с целью прогнозирования изменения курса. Основные типы графиков цен представлены ниже в табл. 1.1 [1]:
Таблица 1.1
Основные типы графиков
Тип графика |
Вид графика |
Применение |
|
Линейный |
Рекомендуют применять на коротких временных интервалах (до нескольких минут). |
||
Гистограмма |
Рекомендуют применять на интервалах от 5 минут (отражает минимальную и максимальную цены). |
||
Японские свечи |
Применяют вместо отрезков. |
||
Крестики-нолики |
Применяют для определения уровней сопротивления и поддержки. |
||
График объема торгов |
Указывает на уровень активности рынка. |
При анализе ценового графика строят линию поддержки (линию, соединяющую ценовые минимумы), линию сопротивления (линию, соединяющую ценовые максимумы) и линию тренда (линию, описывающую направление движения цены). Прогнозирование ценовой динамики рынка осуществляется путем анализа графиков и выявления фигур, образованных графиком цен. Различают фигуры перелома тенденции, которые при выполнении некоторых условий могут предсказать смену тренда на рынке и фигуры продолжения тенденции, которые могут показывать продолжение тренда. Примеров фигур поворота и фигур продолжения существует огромное множество, наиболее известные и базовые: голова-плечи, треугольник, флаг и т.д.
Основными инструментами технического анализа являются индикаторы, которые можно разделить на пять групп [1]:
1. Индикаторы тренда. Служат для измерения силы и продолжительности тренда. К этой группе индикаторов относится простая скользящая средняя, взвешенная и экспоненциальная скользящие средние и т.п.
2. Индикаторы изменчивости. Используются для измерения флуктуаций стоимости базисного актива. Особенно важны при изменении тренда. К ним относятся стандартное отклонение, полоса Боллинджера и индикатор Чайкина.
3. Индикаторы момента. Отражают скорость изменения цены за определенный промежуток времени. Данные индикаторы используются для прогнозирования момента окончания тренда.
4. Индикаторы цикла. Предназначены для выявления циклических составляющих и определения их длины. К ним относятся временные зоны Фибоначчи, волновой индикатор и др.
5. Индикаторы силы рынка. Применяются для определения силы текущей тенденции (объем сделок, число открытых позиций) и являются подтверждающими индикаторами.
Не стоит забывать, что использование очень большого количества индикаторов приводит к задержке принятия решения о купле или продаже ценных бумаг, следовательно, приводит к неоправданным потерям. Поэтому целесообразно использовать небольшое количество индикаторов и обнаруживать тенденции рынка на раннем этапе, в процессе их зарождения и формирования.
1.1.2 Фундаментальный анализ
Как уже было определено ранее, фундаментальный анализ - анализ множества факторов, которые экономически и финансово создают макроэкономическую структуру государства. Одна из основных причин, почему необходимо разбираться в фундаментальном анализе - торговля по новостям. Выход важной, значимой новости сильно влияет на цену рассматриваемой акции или пары. В случаях сильного новостного фона, инвесторы могут откладывать технический анализ и заниматься преимущественно фундаментальным анализом. Также бывают и ситуации, когда рынок бурно реагирует ещё до выхода новости, в ожидании этой новости. Влияющие на рынок новости можно разделить на:
· экономические;
· политические;
· слухи и ожидания;
· форс-мажор.
Воздействие новостей на рынок может иметь различный временной интервал, но практически на любую новость рынок реагирует мгновенно. Дальнейшее движение может лишь поддержать сложившийся на новости тренд.
Для проведения фундаментального анализа, изучают факторы, которые указывают на общее состояние экономики, такие как:
· тенденции изменения ВВП (при росте ВВП национальная валюта и активы на территории государства укрепляются);
· бюджет страны (планируемый и фактический размеры профицита или дефицита);
· платежный и торговый балансы (соотношение экспорта к импорту);
· данные по безработице;
· индексы потребительских и оптовых цен, величина инфляции;
· индексы промышленного производства и биржевых акций.
Существует множество индексов и показателей состояния макроэкономики. При изменении этих индексов и показателей, опытные игроки могут верно определить свою стратегию игры на бирже.
Также на рынок влияют и политические факторы: смена правительства, результаты выборов, публичные заявления руководителей государства - всё это влияет на экономику, а, следовательно, и на рынок. Таким образом, всё что влияет и может повлиять на экономику государства, тем более мировую экономику - можно отнести к фундаментальному анализу. Однако, в рамках текущей работы, не планируется затрагивать фундаментальный анализ, не смотря на всю его значимость. Технический анализ, в свою очередь, тесно связан с временными рядами. Далее, необходимо подробно рассмотреть, что представляют собой временные ряды.
1.2 Временные ряды
Под временными рядами, как правило, понимают последовательно измеренные через некоторые интервалы времени данные. Анализ временных рядов объединяет методы их изучения, а также их прогнозирование. Под прогнозированием временных рядов понимают построение модели для прогнозирования будущих событий, основываясь на результатах уже произошедших событий. Примером такого прогнозирования является предсказание цены открытия биржи, основываясь на предыдущей деятельности и результатах деятельность этой биржи. Пример временного ряда изображен ниже на рис. 1.1:
Модель временных рядов привержена идее, что близкие во времени наблюдения будут теснее связаны между собой, чем удаленные. Также стоит отметить, что модели временных рядов используют однонаправленный порядок по времени, то есть текущие значения временного ряда выражаются через прошлые значения, а не через последующие [2].
Рисунок 1.1 Пример временного ряда
Важно понимать, что необходимо учитывать внешние факторы, не отраженными в накопленных данных, то есть, при выходе на рынок более сильного конкурента, предсказанные значения временного ряда могут не совпасть с реальными. Поэтому, в ситуациях, при которых большое влияние оказывают факторы из вне, необходимо использовать и другие методы анализа, не связанные с временными рядами.
Рассматривая временные ряды, необходимо понимать их базовые характеристики.
Для последующего анализа временных рядов, необходимо понимать базовые характеристики временных рядов. Если рассматривать, как меняются в течение времени значения временного ряда, можно выделить следующие характеристики:
Базовый уровень. Базовым уровнем называют среднее значение временного ряда. В некоторых моделях прогнозирования временных рядов базовым уровнем называют начальное значение временного ряда.
Тренд. Тренд показывает, как временной ряд изменяется от одного периода к другому. Т.е. направление движения к росту или спаду значений временного ряда. Пример тренда показан на рисунке ниже (рис. 1.2):
Рисунок 1.2 Тренд временного ряда
Сезонные колебания. Некоторые значения имеют прямую зависимость от определенных периодов времени, это может быть определенный день недели, или месяц в году. На примере ниже приведен пример сезонных колебаний, сезонный тренд с наивысшими показателями в январе и июле и низкими показателями в мае и октябре [3]. Пример сезонных колебаний представлен на рисунке (см. рис. 1.3).
Рисунок 1.3 Сезонные колебания
Шум. Шумом называют случайные колебания не неравномерные движения данных. Пример шумов на временном ряде приведен ниже на рис. 1.4. Все что выходит за пределы красных линий является шумом, или по-другому выбросом:
Рисунок 1.4 Шум на временном ряде
1.3 Определение необходимой точности прогноза
Для того, чтобы можно было оценить результат работы программы, необходимо определить критерии качества её работы. В данном случае, необходимо определить, с какой точностью программа должна давать прогноз на следующий день закрытия торгов. Для определения точности прогнозирования необходимо понимать среднюю волатильность монет на бирже. Для примера, принято решение рассматривать пару BTC/ USD.
Согласно данным сайта bits.media, которые провели исследование волатильности главной пары криптовалютного рынка, средневзвешенная волатильность за 2018 год составила порядка 20% в неделю. При этом среднесуточная волатильность за 2018 год составила 7,13% (bitstap.top). Таким образом, идеальным вариантом является работа программы, дающей прогноз с погрешностью менее 6%. В данном случае, ежедневно можно проводить операции со средним доходом в 1%, который в год составит уже более 150% (если рассматривать вариант, что профитно отрабатывают Ѕ всех ставок). Однако, получив прогноз с такой погрешностью, эта система будет являться не поддержкой принятия решений, а полноценной системой для торгов. К тому же, данная система, скорее всего должна принимать во внимание внешние факторы, т.е. фундаментальный анализ.
Исходя из этого, прогноз с точностью от 90% является достаточно хорошим результатом, поскольку, брокер, принимает во внимание также и результаты фундаментального анализа. В этом случае, система поможет качественно дать прогноз, принимая во внимания который, брокер сможет увеличить доходность своего портфеля.
1.4 Обзор аналогов
Вероятно, почти каждый игрок на бирже хотел бы обладать программой, по которой можно торговать с постоянной доходностью. Следовательно, существует спрос на всякого рода ИС, которые стремятся к точному прогнозу цены по определенной ценной бумаге. В сети Интернет была найдена интересная ИС с названием ITI Global. Данная информационная система в основном агрегирует данные из различных источников и нужна для фундаментального анализа. ИС по каждой запрошенной бумаге предоставляет конкретную информацию, а также постоянно предоставляет актуальную информацию о состоянии экономики на текущий день. К сожалению, так и не удалось узнать стоимость данной ИС, по причине сложного взаимодействия. Т.е. изначально нужно воспользоваться продуктом в демоверсии, далее, после истечении срока выставляется цена продукта. Конкретных же продуктов, которые основаны на техническом анализе найти не удалось [4, 5, 6].
Выводы по главе 1
В данной главе был произведен анализ предметной области, определены термины технического анализа и фундаментального анализа. Рассмотрена теория временных рядов, основные виды графиков, применяемые в техническом анализе. Для последующего исследования определена минимально необходимая точность прогноза, которая составляет 90%, то есть при достижении точности выше 90%, можно считать, что разрабатываемая информационная система применима и полезна для использования в инструментах анализа трейдера.
Глава 2. Определение методов прогнозирования
В данной главе будут проанализированы одни из самых популярных, эффективных методов, используемых при прогнозировании временных рядов, сделаны выводы относительно их применимости в разрабатываемой информационной системе. Будет определен подход использования данных методов и ожидаемые результаты применения методов.
2.1 Использование математических методов в прогнозировании
При прогнозировании финансовых временных рядов также стоит рассмотреть и стандартные, наиболее популярные математические методы прогнозирования.
Ниже будут рассмотрены математические методы прогнозирования [7].
2.1.1 Комбинация скользящих средних
Данный метод достаточно прост в использовании, однако является весьма эффективным. Многие трейдеры применяют данный метод для игры на бирже. Рассматриваемый метод помогает определить смену тренда на существующих данных. То есть, применив данный метод можно определить смену тренда в будущем и определить стратегию своего поведения относительно анализируемой позиции.
В наиболее популярной вариации применения данного метода используется количество сглаживаний равное двум. Предполагается использовать именно данную вариацию метода. Ниже приведен пример использования метода комбинации скользящих средних при сглаживании равном двум (рис. 2.1).
Для применения данного метода необходимо выбрать два различных скользящих средних: короткую скользящую среднюю (с окрестностью n1) и длинную скользящую среднюю (с окрестностью n2 > n1).
Рисунок 2.1 Пример использования комбинации скользящих средних
Исходя из графика видно, что через небольшой промежуток времени после изменения тренда скользящие средние пересекаются. Это связано с тем, что зеленая скользящая средняя имеет меньшую окрестность, соответственно она более приближена к исходному графику. Ситуация, при которой скользящая средняя с меньшей окрестностью пробивает снизу скользящую среднюю с большей окрестностью, сигнализирует о убывающей средней тенденции на рынке. Соответственно в этот момент лучше всего совершить продажу позиции.
2.1.2 Полосы Боллинджера
Алгоритм комбинаций скользящих средних имеет свои недостатки, такие как, необходимость большой окрестности длинного скользящего среднего, в связи с чем данный алгоритм достигает наибольшей ценности при нахождении общих тенденций временного ряда. Исходя из этого, за весь временной промежуток совершается относительно небольшое количество сделок, что не позволяет использовать более мелкие движения временного ряда. Для определения более мелких движений временного ряда был вычислен алгоритм, названный полосами Боллинджера.
Прародителем алгоритма является алгоритм «Конверт», его суть заключается в двух извилистых параллельных линиях, проходящих выше и ниже скользящей средней. Эти линии образуют между собой область, которая охватывает большую часть ценовых колебаний временного ряда. Для расчёта диапазона необходимо на небольшой процент (преимущественно он 1,5% до 3%) увеличить и уменьшить значения короткого скользящего среднего.
Сигнал к покупке подается в случае, если цена пробивает нижнюю границу области. И обратное, если цена пробивает верхнюю границу - подается сигнал к продаже. Однако данный метод дает очень много недолговечных коротких сигналов, что и является его недостатком. Его усовершенствованием является алгоритм «полосы Боллинджера», предложенный Джоном Боллинджером.
Для описания данного алгоритма необходимо понимать определение волатильности финансового инструмента. Волатильностью финансового инструмента называют статистических финансовых показатель, который характеризует изменчивость цены и позволяющий определить риск приобретения финансового инструмента.
Рассматриваемый алгоритм аккумулирует в себе алгоритм «Конверт» с учетом волатильности финансового инструмента. Основной задачей алгоритма является определение относительно высоких и низких цен. В качестве меры волатильности используют стандартное отклонение из-за его чувствительности к экстремальным значениям. Границы областей, как правило, берутся на 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. Разработка требований к информационной системе
В данной главе будут определены требования, предъявляемые к разрабатываемой информационной системе, определены инструменты проектирования и дано описание реализации выбранных на предыдущем этапе методов. Также будет рассмотрена структура разрабатываемой информационной системы.
3.1 Функциональные требования к системе
Информационная система должна обеспечить следующий функционал:
1. Загрузку исходных данных в формате «.csv».
2. Обогащение загруженных данных.
3. Подготовку данных для использования алгоритмов планирования.
4. Поочередное выполнение алгоритмов планирования.
5. Предоставление пользователю результатов прогнозирования.
6. Предоставление пользователю загруженных и обогащенных данных.
7. Предоставление пользователю построенных графиков на основе выполнения математических методов.
3.2 Модуль «Подготовка и обогащение данных»
Данные поступают в виде «.csv» файла. Необходимо реализовать возможность выбора необходимого «.csv» файла в оконном режиме для последующей обработки и анализа данных. Файл выглядит следующим образом (рис. 3.1):
В файле имеется 8 столбцов:
«updated» - дата записи;
«high» - наибольшая цена за текущую дату;
«low» - наименьшая цена за текущую дату;
«open» - цена открытия торгов за текущую дату;
«close» - цена закрытия торгов за текущую дату;
«volume» - объемы за текущую дату;
«average» - средняя цена цена за текущую дату;
«MiningDifficulty» - сложность майнинга за текущую дату.
Рисунок 3.1 Пример файла с входными данными
Данные поступают уже в отсортированном виде, порядок сортировки от ранней даты к более поздней.
Необходимо обогатить полученные данные математическими методами, для этого необходимо добавить столбцы, описанные в таблице ниже и заполнить их значениями, по указанным в таблице правилам (табл. 3.1):
Таблица 3.1
Наименования столбцов и правила их заполнения для обогащения данных
Наименование столбца |
Правило заполнения |
|
1st_zkolz_sredn |
Рассчитывается как среднее значение цены закрытия за 2 предыдущих дня. |
|
2nd_zkolz_sredn |
Рассчитывается как среднее значение цены закрытия за 6 предыдущих дней. |
|
TrandChange |
Если 1st_zkolz_sredn > 2nd_zkolz_sredn, тогда присваивается значение «1», иначе присваивается значение «0». |
|
Central_line |
Рассчитывается как среднее значение цены закрытия за 20 предыдущих дней. |
|
Standard_Deviation |
Рассчитывается как среднее отклонение цены закрытия за 20 предыдущих дней. |
|
Upper_Bound |
Central_line - Standard_Deviation * 2 |
|
Bottom_Bound |
Central_line + Standard_Deviation * 2 |
|
IndicatorOnTop |
Если цена закрытия за предыдущий день > Upper_Bound, тогда присваивается значение «0», иначе присваивается значение «1». |
|
BottomIndicator |
Если цена закрытия за предыдущий день > Bottom_Bound, тогда присваивается значение «0», иначе присваивается значение «1». |
|
MovingAverageOscillators |
1st_zkolz_sredn - 2nd_zkolz_sredn |
|
IndicMov |
Если MovingAverageOscillators > 0, тогда присваивается значение «1», иначе присваивается значение «0». |
После обогащения данных необходимо записать исходные и обогащенные данные в файл формата «.csv» с 20 строки (так как Standard_Deviation рассчитывается с 21 строки). Последняя строка файла должна содержать заполненные колонки «updated», «Mining Difficulty» и обогащенных данных.
Должна быть предусмотрена возможность вывода всех данных в элемент «Data Table» в отдельной WinForms.
Класс должен называться «Data_Preparation» и иметь следующие функции:
«LoadData» - функция для загрузки данных из «.csv» файла.
«PrepareData» - функция для обработки и обогащения.
«ShowData» - public функция для вывода данных в DataTable.
3.3 Модуль «Прогнозирование с помощью ML»
Прогнозирование выполняется на языке программирования «R». Для прогнозирования используются алгоритмы линейной регрессии и градиентного бустинга. Изначально необходимо загрузить обогащенные данные из файла формата «.csv». Для применения описанных в теоретической части данной работы методов прогнозирования машинного обучения необходимо иметь обучающую выборку и тестовую выборку. Поскольку задача стоит дать прогноз на завтрашнее закрытие цены, следовательно тестовой выборкой будет являться весь файл с данными, за исключением последней строки. Тестовая выборка же будет представлять 1 последнюю строку загружаемого файла.
При прогнозировании и обучении алгоритмом линейной регрессии необходимо использовать следующие столбцы:
X1st_zkolz_sredn + X2nd_zkolz_sredn + TrandChange + MiningDifficulty
+ Central_line + Standard_Deviation + Upper_Bound + Bottom_Bound +
+ IndicatorOnTop + BottomIndicator + MovingAverageOscillators +
+ IndicMov.
При прогнозировании и обучении алгоритмом градиентного бустинга необходимо использовать следующие столбцы:
X1st_zkolz_sredn + X2nd_zkolz_sredn + TrandChange + MiningDifficulty
+ Central_line + Standard_Deviation + Upper_Bound + Bottom_Bound +
+ IndicatorOnTop + BottomIndicator + MovingAverageOscillators +
+ IndicMov.
Результат выполнения должен представлять файл в формате «.csv» с одной строкой и тремя столбцами: updated, GradientBoost_1, LinearReg_1. В updated записывается дата прогноза; в GradientBoost_1 записывается значение прогноза при использовании градиентного бустинга, в LinearReg_1 записывается значение прогноза при использовании линейной регрессии.
3.4 Модуль «Прогнозирование с помощью математических методов»
Необходимо реализовать следующие математические методы прогнозирования временных рядов:
1. Комбинация скользящих средних.
2. Полосы Боллинджера.
3. Осцилляторы скользящих средних.
Предполагается реализация представленных методов с использованием языка программирования C#. Прогнозирование данными методами представляет построение трех отдельных графиков в отдельных WinForms.
График комбинаций скользящих средних состоит из трех кривых: 1 - кривая цен закрытия, 2 - кривая первой скользящей средней, 3 - кривая второй скользящей средней.
График полос Боллинджера состоит из трех кривых: 1 - кривая цен закрытия, 2 - кривая Upper_Bound, 3 - кривая Bottom_Bound.
График осцилляторов скользящих средних представляет собой столбчатую диаграмму. Данными для столбчатой диаграммы является разница первой скользящей средней и второй скользящей средней.
На главной форме необходимо дать пользователю возможность ввода горизонта построения графиков. На основании заданного горизонта, графики должны строиться на последних днях числа, введенного пользователем.
При заполнении горизонта, необходимо обработать ввод. Для ввода доступны только целые числа. Если число меньше единицы, или поле пустое, пользователь не должен иметь возможности построить графики.
3.4.1 Комбинация скользящих средних
Метод скользящего среднего заключается в том, что прогнозируемое значение вычисляется как среднее арифметическое по предыдущим данным (формула 9):
(9)
Необходимо отобразить 2 скользящих средних:
Короткую (с окрестностью = b), Длинную (с окрестностью = v).
При пересечении скользящих средних, необходимо отобразить на графике планируемое изменение тренда.
Таким образом, необходимо создать класс MovingAverageMethod() со следующими методами:
Get_data(); - для получения списка со значениями временного ряда и со значениями окрестностей двух скользящих средних.
Calculate_line1(); - для расчета короткой скользящей средней и хранения рассчитанных данных в списке.
Calculate_line2(); - для расчета длинной скользящей средней и хранения рассчитанных данных в списке.
Calculate_X(); - для определения точек пересечения скользящих средних.
Print_Graph(); - для вывода исходного временного ряда, и скользящих средних.
Clean_Graph(); - для очистки графа.
Пример построенного графа изображен ниже на рис. 3.2:
Рисунок 3.2 Пример использования комбинации скользящих средних
3.4.2 Полосы Боллинджера
Алгоритм рассчитывается по следующим формулам (формулы 10-13):
(10)
(11)
(12)
(13)
где:
d - отклонение от скользящего среднего
Pi - значение цены в заданной точке
MAi - значение скользящего среднего в заданной точке
n - число слагаемых
- стандартное отклонение
LB(low bound) - нижняя граница области
UB(up bound) - верхняя граница области
При выявлении сигнала, необходимо отобразить сигнал в графическом виде на общем графике.
Таким образом, необходимо создать класс BollingerBands() со следующими методами:
Get_data(); - для получения списка со значениями временного ряда.
Calculate_line1(); - для расчета скользящей средней и хранения рассчитанных данных в списке.
Calculate_UpLine(); - для расчета верхней границы области и хранения рассчитанных данных в списке.
Calculate_DownLine(); - для расчета нижней границы области и хранения рассчитанных данных в списке.
Define_Signal(); - для нахождения сигнала.
Print_Graph(); - для вывода графов.
Clean_Graph(); - для очистки графа.
Пример построенного графа изображен на рис. 3.3.
Рисунок 3.3 Полосы Боллинджера
3.4.3 Осцилляторы скользящих средних
MACD представляет собой разность двух скользящих средних (короткого с окрестностью сглаживания n1 и длинного с окрестностью сглаживания n2 > n1). Разность строится в открытой шкале околонулевой линии. Точки на нулевой линии соответствуют ситуациям, при которых скользящие средние пересекаются.
Скользящие средние необходимо строить, используя следующую формулу (формула 14):
(14)
На первом графике необходимо отобразить 2 скользящих средних:
1. Короткую (с окрестностью = b)
2. Длинную (с окрестностью = v)
На втором графике необходимо отобразить MACD (т.е. разность двух скользящих средних).
Таким образом, необходимо создать класс MovingAveragesOscillators() со следующими методами:
Get_data(); - для получения списка со значениями временного ряда и со значениями окрестностей двух скользящих средних.
Calculate_line1(); - для расчета короткой скользящей средней и хранения рассчитанных данных в списке.
Calculate_line2(); - для расчета длинной скользящей средней и хранения рассчитанных данных в списке.
Calculate_MACD(); - для расчета разницы между короткой и длинной скользящей средней.
Print_Graph_1(); - для вывода исходного временного ряда, и скользящих средних.
Print_Graph_2(); - для вывода графа MACD.
Clean_Graph(); - для очистки обоих графов.
Пример построенного графа изображен на рис. 3.4.
Рисунок 3.4 Осциллятор MACD
Запуск ИС инициирован двойным нажатием на левую кнопку мыши по иконке ИС. При запуске открывается окно, в котором пользователю представляется выбор:
1. Загрузить данные.
2. Вывести загруженные данные.
3. Применить машинное обучение.
4. Комбинация скользящих средних.
5. Полосы Боллинджера.
6. Осцилляторы скользящих средних.
При нажатии на соответствующую кнопку открывается дополнительное окно WinForms с результатом выполнения выбранного метода.
Пока данные не загружены, кнопки с методами заблокированы для пользователя.
Выводы по главе 3
В данной главе были определены требования, предъявляемые к разрабатываемой информационной системе, определены инструменты проектирования и дано описание реализации выбранных на предыдущем этапе методов. Также рассмотрена структура разрабатываемой информационной системы.
Основываясь на требованиях, приведенных в текущей главе было разработано Техническое задание в соответствии с ГОСТ 34.602 - 89. Согласно техническому заданию в дальнейшем будет разработан прототип информационной системы, проведено тестирование, на основании которого будут сделаны выводы, относительно применимости данной системы как дополнительного инструмента аналитики трейдера.
Глава 4. Проектирование прототипа ИС
В данной главе будет описан процесс проектирования информационной системы прогнозирования финансовых временных рядов. Пошагово описаны процессы создания форм и их функционала. Также будет проведено тестирование прототипа информационной системы. Согласно результатам тестирования, будут сделаны выводы о применимости ИС при техническом анализе.
Подобные документы
Разработка системы прогнозирования временных рядов динамики продаж товаров с учетом факторов влияния ForExSal, предназначенной для определения краткосрочного прогноза предполагаемого спроса. Анализ концептуальной и функциональной схемы работы системы.
отчет по практике [1,9 M], добавлен 27.03.2011Порядок и принципы документирования работ, выполняемых на этапе анализа и проектирования в жизненном цикле программных средств, нормативная основа. Описание пользовательского интерфейса прототипа разработанной информационной системы, его структура.
курсовая работа [472,9 K], добавлен 11.11.2014Разработка информационной системы туристического агентства с использованием современных инструментальных средств, технологий; создание ее прототипа; определение целей, задач и функций ИС. Концептуальное, логическое и физическое проектирование базы данных.
курсовая работа [1,1 M], добавлен 09.06.2013Разработка фрагментов математического обеспечения для автоматизированной информационной системы прогнозирования нагрузки пассажирских авиаперевозок. Анализ входных данных и предметной области. Состав информационной базы автоматизированного комплекса.
курсовая работа [1,6 M], добавлен 07.03.2015Информационное, структурно-функциональное и объектно-ориентированное проектирования. Разработка и реализация информационной системы для авиазаводов. Разработка прототипа программного продукта – Borland Delphi 7.0. Автоматизирование документооборота.
курсовая работа [4,4 M], добавлен 26.02.2014Характеристика информационной системы и действующей системы-прототипа ОАО "Центрпродсервис". Организационная структура, информационно-технологическое сопровождение и алгоритмическое обеспечение системы. Проектирование базы данных. Расчет проектных затрат.
дипломная работа [2,8 M], добавлен 21.01.2015Анализ информационной системы салона сотовой связи. Разработка модели бизнес-процессов учебной информационной системы. Создание справочников и их заполнение, документов и их программного кода. Порядок разработки регистров, трех видов планов и отчетов.
курсовая работа [1,4 M], добавлен 05.06.2013Сокращение постоянных и переменных издержек путем автоматизации документооборота в компании "IT-Сервис". Разработка информационной системы и прототипа клиент-серверного трехзвенного приложения в среде Borland Delphi 7.0. Оценка экономического эффекта.
реферат [226,3 K], добавлен 25.09.2014Разработка автоматизированной системы управляющей компании "Дом" в среде Visual Studio 2012. Генерация списка существующих квартир. Создание базы данных и программного продукта, функциональные требования к нему. Построение диаграмм UML и ER-модели.
дипломная работа [1,0 M], добавлен 25.10.2017Изучение непараметрических моделей коллективного типа в задаче прогнозирования временных зависимостей. Анализ исследования и восстановления показателей преступности от следственных мероприятий. Описания руководства программиста информационной системы.
дипломная работа [3,6 M], добавлен 25.09.2011