МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ ИМ. А.А. УГАРОВА
(филиал) федерального государственного автономного образовательного
учреждения высшего образования
«Национальный исследовательский технологический университет «МИСиС»
ФАКУЛЬТЕТ
автоматизации и информационных технологий
КАФЕДРА автоматизированных и информационных систем управления
НАПРАВЛЕНИЕ 09.03.02 Информационные системы и технологии,
ПРОФИЛЬ 01 Информационные системы и технологии
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
на тему: «Исследование применимости искусственных нейронных сетей для
прогнозирования финансовых временных рядов»
Выполнена в форме дипломной работы
Обучающегося: Жукова Петра Игоревича
Руководитель: к.т.н., доцент Глущенко Антон Игоревич
(подпись)
Нормоконтроль проведен: к.п.н., доцент Гамбург Клавдия Семёновна
(должность, ученое звание, степень, И.О.Фамилия)
(подпись)
Рецензент к.т.н., доцент, заведующий кафедрой высшей математики и информатики СТИ
НИТУ «МИСиС» Кабулова Евгения Георгиевна
(подпись)
Работа рассмотрена на заседании кафедры и допущена к защите в ГЭК
протокол № ____ от __________ г.
Заведующий кафедрой,
д.т.н., профессор
Ю.И. Ерёменко
________________
Декан,
д.т.н., профессор
_________________
Ю.И. Ерёменко
Старый Оскол, Июнь 2018 г.
(Подпись)
(Подпись)
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ ИМ. А.А. УГАРОВА
(филиал) федерального государственного автономного образовательного учреждения
высшего образования
«Национальный исследовательский технологический университет»
«МИСиС»
Факультет АИТ
«Утверждаю»
Кафедра АИСУ
Зав. кафедрой
__________________________________________
«1» сентябрь 2017 г.
ЗАДАНИЕ НА ВЫПОЛНЕНИЕ ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ
РАБОТЫ
студента группы ИТ-14-1Д Жукова Петра Игоревича
1.Тема выпускной квалификационной работы «Исследование применимости искусственных
нейронных сетей для прогнозирования финансовых временных рядов»
2.Цели выпускной квалификационной работы: экспериментально проверить применимость
аппарата искусственных нейронных сетей для решения задачи прогнозирования финансовых
временных рядов
3. Исходные данные: документация по R, документация по Shiny R, документация CRAN по
библиотеке ANN2, документация CRAN по библиотеке ggplot, документация CRAN по
библиотеке TTR, пользовательская документация по библиотеке rusquant, учебное пособие по
экономической эффективности, учебное пособие по информационной безопасности
компьютерных систем, руководство пользователя Rstudio, данные котировок акций Google,
4. Основная литература, в том числе:
4.1 Монографии, учебники Ю.И Еременко «Интеллектуальные системы принятия решений и
управления», И.И Елисеева «Эконометрика. Учебник»,Ф.Гилл, У. Мюррей, М.Райт
«Практическая оптимизация»
4.2 Отчеты по НИР, диссертации, дипломные работы: И.Л. Каширина «О методах
формирования нейросетевых ансамблей в задачах прогнозирования финансовых
временных рядов»
4.3 Периодическая литература справочная документация Rstudio
5. Перечень основных этапов исследования и форма промежуточной
отчетности по каждому этапу
5.1 Аналитическая часть – анализ рассматриваемой проблемы, анализ требований,
обоснование необходимости разработки
5.2 Экспериментальная часть – экспериментальная проверка применимости ИНС для решения
задачи приближенного прогнозирования, прогнозирования по тренду. Экспериментальная
проверка применимости нейросетевого комитета для увеличения качества приближенного
прогноза. Экспериментальная проверка применимости методов регуляризации для борьбы с
переобучением в рамках решаемой задачи
5.3 Информационная безопасность – анализ угроз, которым подвержена ИС, и пути их
решения.
5.4 Экономическая эффективность – анализ расходов и доходов предприятия, экономический
эффект, полученный в результате внедрения и эксплуатации ИС.
6. Математические или теоретические аппараты и методики, используемые в работе:
Аппарат искусственных нейронных сетей, модель линейно-взвешенной скользящей средней,
модель ARMA, модель ARIMA, модель ARFIMA
7. Использование ЭВМ (примерный объем в часах) 360 часов
8. Перечень подлежащих разработке вопросов по экономике и
организации производства (по согласованию с руководителем ВКР):
Оценить экономическую эффективность сигнальной системы, созданной на основании
полученных результатов экспериментов.
9. Перечень подлежащих разработке вопросов по информационной безопасности
рассмотреть реализацию приложения, на основании имеющихся результатов экспериментов,
оценить потенциальные угрозы и составить план борьбы с ними.
Согласовано:
Консультант по информационной безопасности
10.Основные вопросы, рассматриваемые в литературном обзоре: прогнозирование
финансовых временных рядов, применение искусственных нейронных сетей, для
прогнозирования стационарных и нестационарных временных рядов, применение
регуляризации для борьбы с переобучением, применение нейросетевых комитетов, для
увеличения качества получаемого прогноза.
11.Графический и иллюстративный материал: график исходной ретроспективы, алгоритм
обучения при квадратичной целевой функции, алгоритм обучения при целевой функции
Хьюбера,
математическая
модель
используемого
многослойного
персептрона,
математическая модель модифицированного для работы с процентными приращениями
многослойного персептрона. Схема нейросетевого комитета,
, интерфейс информационной системы, схема защиты ИС.
Согласовано:
Консультант по нормоконтролю
12. Консультанты по работе
12.1 к.п.н., доцент Гамбург К.С. п.11
12.2 к.т.н., доцент Глущенко А.И п.5.2
12.3 к.т.н., доцент Соловьёв А.Ю. п.5.3
13.Дата выдачи задания 1 сентября 2017 г.
14.Руководитель работы: к.т.н, доцент, Глущенко А.И
15. Задание принял к исполнению _студент, Жуков Петр Игоревич__
Список сокращений и условных обозначений
ARMA – Модель авторегрессии скользящего среднего
ARIMA – Модель интегрированной авторегрессии скользящего среднего
ARFIMA – Модель частотной интегрированной авторегрессии скользящего
среднего
БД – База данных
ИС – Информационная система
ИНС – Искусственная нейронная сеть
СУБД – Система управления базами данных
Кол-во
Формат
Обозначение
Наименование
А4 09.03.02 ДР.ИТ-14-1д-04-01С2
Топология ИНС для экспериментов
с чистыми данными
А4 09.03.02 ДР.ИТ-14-1д-04-02С2
1
Топология ИНС для экспериментов
с процентными приращениями
1
А4 09.03.02 ДР.ИТ-14-1д-04-03С2
Модель нейросетевого комитета
1
А4 09.03.02 ДР.ИТ-14-1д-04-01С10
Алгоритм обучения
с квадратичной функцией ошибки
А4 09.03.02 ДР.ИТ-14-1д-04-02С10
Примечание
1
Алгоритм обучения
с функцией ошибки Хьюбера
1
А4
Формирование обучающей выборки
1
Плакат
А4
Форма для работы
1
Плакат
1
Плакат
1
Плакат
сервером-приложения
1
Плакат
Экономическая эффективность
1
Плакат
Пояснительная записка
72
с искусственной нейронной сетью
А4
Форма для работы с получения
и первичной обработки данных
Информационная безопасность
А4
для web-приложения с локальным
сервером-приложения
А4
Информационная безопасность
для web-приложения с удаленным
А4
09.03.02 ДР.ИТ-14-1д-04-ВКР
Изм Лист
Студ. дип.
Н.контр
кккконкон
тр.
№ докум.
Рук.
Зав. каф.
Глущенко
Еременко
Жуков
Гамбург
Подп. Дата
Исследование применимости
искусственных нейронных сетей для
прогнозирования финансовых
временных рядов
Ведомость выпускной
квалификационной работы
Лит.
Масса
Лист 1
Масштаб
Листов 1
СТИ НИТУ МИСиС
АИСУ 2018г.
Аннотация
Целью данной дипломной работы является экспериментальная проверка
применимости ИНС, с учетом имеющихся практик, для прогнозирования
финансовых
временных
рядов,
с
целью
поиска,
альтернативной
для
существующей, системы прогнозирования рынка.
Для решения данной задачи было разработано Web-приложение с
локальным web-сервером, на языке Shiny R, позволяющее инициализировать,
обучать и использовать ИНС в рамках финансовых временных рядов.
Аналитическая
часть
проекта
содержит
анализ
рассматриваемой
проблемы, описание существующих способов решения проблемы, а также
современный вектор развития система служащих для решения данной проблемы.
Экспериментальная
экспериментов
с
часть
отдельными
содержит
практиками
структуру
и
использования
результаты
ИНС
для
прогнозирования финансовых временных рядов, а также экспериментальную
проверку эффекта совокупного использования некоторых отдельных практик.
В разделе «Информационная безопасность» предлагается рассмотреть два
возможных варианта реализации приложения, как коммерческой сигнальной
системы, а также рассмотреть защиту от угроз для каждого из предложенных
вариантов.
«Обоснование экономической эффективности проекта» содержит анализ
расходов и доходов на создание сигнальной системы, а также экономический
эффект, полученный в результате внедрения и эксплуатации web-приложения
как сигнальной системы. Данная глава позволяет рассчитать доходы,
полученные благодаря эксплуатации сигнальной системы, а также срок
окупаемости проекта.
Пояснительная записка содержит 71 листа, 20 формул, 29 рисунков, 14
таблиц, графический материал в количестве 10 листов формата А4,1
приложение. При выполнении дипломной работы использовано 10 источников
информации
Содержание
Введение ....................................................................................................................... 8
1 Аналитическая часть ................................................................................................ 9
1.1 Анализ предметной области ................................................................................ 9
1.2 Актуальность проблемы ..................................................................................... 15
1.3 Сравнение существующих методов .................................................................. 17
1.4 Постановка задачи............................................................................................... 24
2 Экспериментальная часть ...................................................................................... 25
2.1 Формирование обучающей выборки ................................................................. 25
2.2 Прогнозирование на необработанных входных данных. Применение
регуляризации ............................................................................................................ 28
2.2.1 Прогнозирование на сглаженных данных ..................................................... 43
2.2.2 Прогнозирование на процентных приращениях........................................... 46
2.4 Использование нейросетевого комитета .......................................................... 50
3 Информационная безопасность и защита информации ..................................... 59
3.1 Краткая характеристика выполняемой работы ................................................ 59
3.2 Характеристика защиты информации ............................................................... 59
3.3.1 Разграничение прав доступа и парольная политика .................................... 60
3.3.2 Хранение и защита информации. Резервное копирование. ......................... 61
3.3.3 Защита от сетевых угроз и вредоносного по................................................. 61
3.4 Характеристики защиты информации для web-приложения с удаленным
сервером приложений ............................................................................................... 63
3.4.1 Разграничение прав и парольная политика ................................................... 63
3.4.2 Резервное копирование. Защита и хранение данных. Бесперебойная работа
..................................................................................................................................... 65
3.4.3 Способ защиты от сетевых угроз ................................................................... 66
4 Обоснование экономической эффективности проекта ...................................... 68
4.1 Расчёт затрат с учетом разработанной ИС ....................................................... 68
4.2 Расчёт доходов с учетом разработанной ИС .................................................... 68
4.3 Определение экономического эффекта и срока окупаемости проекта ......... 69
Заключение ................................................................................................................ 71
Список источников информации ............................................................................. 72
Приложение 1 ............................................................................................................ 73
8
Введение
В рамках современной рыночной экономике, возможность правильно
спрогнозировать рынок позволяет провести высокодоходную инвестицию, и как
следствие наедятся на высокую норму прибыли. В последнее время появилось
множество систем – электронных торговых площадок, позволяющих получать
прибыль с изменения направления рынка, инвестору без специального
образования или высокого начального капитала.
Появление множество трейдеров без специальных знаний, привело к
необходимости создания систем помощи принятия решений, называемых
сигнальными, конечной целью которых является анализ рынка и формирование
вывода о направлении его движения.
Проблема
использования
таких
систем
связана
с
их
высокой
себестоимостью, так как такая система является экспертной системой с
продукционной базой знаний. данной дипломной работе рассматривается
применимость аппарата искусственных нейронных сетей, с целью построение на
их основе сигнальной системы. Выбор ИНС в качестве альтернативы
продукционной базе знаний, обусловлен тем, что на практике задачу
прогнозирования направления рынка хорошо решает человек, аппарат
искусственных нейронных сетей – попытка смоделировать (с некоторыми
условностями) поведение человеческого мозга в момент решения конкретной
задачи. Предполагается, что в результате экспериментальной проверки
существующих
практик
применения
ИНС
удастся
создать
логику
прогнозирования на основе которой можно было бы построить сигнальную
систему.
9
1 Аналитическая часть
1.1 Анализ предметной области
Финансовый рынок (рынок ценных бумаг) – это совокупность финансовых
инструментов
(активов)
и
физический
или
юридических
лиц,
взаимодействующих с ними (и между собой) с целью получения прибыли.
Инфраструктура ценных бумаг состоит из:
1.
Функциональная – фондовые биржи, внебиржевые торговые
системы и альтернативные торговые системы;
2.
Инвестиционная
-
банки,
брокеры,
дилерские
компании,
небанковские кредитно-финансовые организации;
3.
Техническая – клиринговые и расчетные организации, депозитарии,
регистраторы;
4.
Информационная – информационные агентства, аналитические
компании, деловая пресса.
Классифицировать фондовые рынки можно по ряду критериев, одним из
которых является характер движения ценных бумаг:
1.
Первичный рынок – рынок на котором происходит размещение
впервые выпущенных ценных бумаг, по большей части – закрытая экосистема;
2.
Вторичный рынок – рынок на котором происходят сделки с ранее
выпущенными и повторно размещенными ценными бумагами, на вторичном
рынке происходит основной оборот сделок;
3.
Третий рынок – внебиржевой рынок торговли ценными бумагами,
актуален для тех финансовых активов, которые не смогли пройти листинг и
попасть на биржу, традиционно используется для торговли пакетами акций
между институциональными инвесторами;
4.
Четвертый рынок – новый вид рынка, появился благодаря развитию
в области ИС, представляет из себя электронную системы для торгов напрямую
между институциональными инвесторами.
С 90-х годов XX-го века наибольшую популярность приобрели рынки
FOREX, который предоставляют частным лицам возможность, не оказывая
10
прямого влияния на ход рыночных торгов, зарабатывать, инвестируя не в
финансовый инструмент напрямую, а в его поведение. Согласно общепринятой
концепции, под поведением рынка подразумевают следующее:
1. Восходящее движение (Бычий тренд) – положительное изменение цены,
при котором каждая последующая цена закрытия находится выше предыдущей;
2. Нисходящее движение (Медвежий тренд) – отрицательное изменение
цены, при котором каждая последующая цена закрытия находится ниже
предыдущей;
3. Боковое движение (Флет) – «нейтральное» поведение цены, при котором
она не выходит за определенные рамки пиковой активности. В рамках флета так
же наблюдаются положительные и отрицательные изменения цен, который в
данном случае называют – коррекцией.
Отличительной чертой рынков FOREX является то, что трейдер (частный
инвестор) не принимает непосредственного участия в формировании поведения
финансового актива, а значит в процессе торгов никак не влияет на изменение
цены.
Конечная цель трейдера, на любом из рынков – получить максимальную
прибыль от инвестиций. Получить прибыль можно предсказав с достаточной
степенью надежности, поведение рынка, для построение прибыльной торговой
стратегии. Все методы прогнозирования поведения рынка могут быть
классифицированы на:
1. Методы технического анализа;
2. Методы фундаментального анализа.
Технический анализ – совокупность инструментов прогнозирования
вероятного изменения цен, на основании закономерностей изменений цен в
прошлом в аналогичных обстоятельствах. Базовой основой является анализ
графиков цен – «чартов» и(или) биржевого стакана [1]. Первым инструментов
технического анализа был – «метод КЭЙСЕН». На западе метод известен как
«Японские свечи». Родоначальник технического анализа – Чарльз Доу. Ряд его
статей, посвященных рынку ценных бумаг, лег в основу «теории Доу». На
11
данный момент, инструменты технического анализа условно можно разделить
на:
Паттерны – разворотные конфигурации, наиболее простой из
1.
инструментов ТА. Представляет из себя огромное множество типовых наборов
элементов кривой цены и правил, на основании которых принимается решение;
Математические инструменты – скользящие, экспоненциальные,
2.
взвешенные средние, стохастические осцилляторы, различные индексы и т.д.
Опираясь на мнение критиков и защитников технического анализа, можно
выявить следующее:
Недостатки:
1.
1.1
Невозможность точного прогноза;
1.2
Сложность и «закрытость» некоторых инструментов;
1.3
Огромное множество инструментов, что свидетельствует о
том, что нет «идеального» метода предсказания;
1.4
создается
Ввиду
использованных
простор
для
методов
манипуляций
внутри
игроками,
инструментов,
использующими
технический анализ.
Преимущества:
2.
2.1
Возможность прогнозирования трендов;
2.2
Позволяет адекватно оценить картину происходящего на
рынке (Флэт, коррекция и тд);
2.3
Является
хорошим
способом
проверять
всевозможную
«инсайдерскую» информацию;
2.4
Детерминированный подход - многие из инструментов ТА
просты к пониманию и использованию, что делает ТА популярным среди
новичков.
Фундаментальный
анализ
–
термин
для
обозначения
методов
прогнозирования рыночной стоимости компаний (и ее акций), основанных на
анализе финансовых и производственных показателей ее деятельности. В случае
фундаментального подхода, анализу подвергается:
12
1. Выручка;
2. Чистая прибыль;
3. Чистая стоимость компании;
4. Обязательства;
5. Денежный поток;
6. Величина выплачиваемых дивидендов;
7. Производственные показатели;
8. Внешнеполитическая, правовая и экономическая жизнь общества
государства, резидентом которого является компания и так далее.
Прибыль формируется за счет того, что «внутренняя стоимость» компании
не совпадает со стоимостью ее акций, так как последние подчиняются
отношению «Спрос/Предложения». Цель фундаментального анализа выявить
«недооцененные» акции, «внутренняя стоимость» компании-владельца которых
выше чем рыночная цена акции [2]. В основе американской школы
фундаментального анализа лежит труд Бенджамина Грэма «Анализ ценных
бумаг» 1923 года.
Получение прибыли на фондовом рынке – инвестиция в правильный
финансовый актив на правильный срок. В настоящее время торговля на рынке
представлена в одном из двух возможных вариантов:
1. «Комнатные» торги – когда инвесторы и брокеры находятся в одном месте
и торговые операции выполняются «на местах» (ММВБ);
2. Электронные торги – современный метод ведения торгов на фондовых
биржах, суть которого заключается в возможном удаленном управлении
своими финансовыми активами. Торговля из любой точки мира (Forex).
«Комнатные» торги, на данный момент остаются уделом крупных
инвесторов, сделки при таком роде торгов за частую долгосрочные, а
минимальные порог входа превышает доступные рядовому обывателю нормы.
Развитие
электронных
торгов,
позволяет
вести
спекулятивно-
инвестиционную деятельность, не выходя из дома, и как правило имеет низкий
13
по сравнению с «Комнатными» торгами порог вхождения, как по начальному
капиталу, так и по квалификации.
Наличие множества трейдеров, не обладающих исчерпывающими
знаниями в области технического и фундаментального анализа привело к острой
нехватке аналитических систем, способных прогнозировать поведения рынка ,и,
как следствие, к появлению на рынках так называемых сигнальных систем.
Сигнальная система – практически тоже самое что и торговый робот, с одним
отличием
-
она
не
заключает
сделки.
Сигнальные
системы,
стали
разрабатываться как самими брокерами, так и сторонними компаниями. На
данный момент на рынке присутствует все возможное множество сигнальный
систем (или роботов):
1. ABI – Bot;
2. Binary Options Robot (BOR);
3. Elly-Bot;
4. Система IQ Robots;
Среди вышеизложенных роботов, максимальную популярность (согласно
статистике, ForexClub) является Abi – Bot. Выделяют целый ряд преимуществ,
среди которых:
1. Высокая доходность 87% правильных сигналов;
2. Надежность;
3. Просто использования;
4. Бесплатное некоммерческое использования.
Однако, после анализа предложенной документации, было выявлены
следующие недостатки:
1. Данная
система
работает
с
определенном
рядом
индикаторов
технического анализа и высокодоходные прогнозы (долгосрочные на
средневолатильном и скальпируемые на высоковолатильном) являются
платной опцией.
2. Данный робот использует анализ паттернов (стандартных разворотных
конфигураций,
выход
стохастического
осциллятора
за
границы
14
перепроданности и перекупленности и др.) для формирования сигнала.
Такой подход является, успешным, однако существует проблема ложных
сигналов, так как паттерны сами по себе являются следствием
человеческого опыта.
3. В основе данного робота лежит продукционная модель представления
знаний, наполненная правилами «Если – то» для каждого конкретного
паттерна.
Роботы Binary Options Robot и Elly- Bot представляют из себя закрытые
системы, в которых алгоритм получения сигнала неясен. Данные роботы имеют
следующие преимущества:
1. Заявлена отличная от «паттерной» технология получения сигнала;
2. Возможность интеграции с рядом торговых систем, для автоматизации;
3. Работает с высоковолатильными рынками
Недостатки данной сигнальной системы:
1. Норма доходности ниже чем у Abi (~70%);
2. Система полностью закрытая (нет блока пояснения получения того или
иного результата);
3. Большинство функций для торговли в рамках скальпируемых временных
промежутков (1 минута, 5 минут, 10 минут) платные
Выше были рассмотрены системы, проектируемые без привязки к брокеру.
По мимо этих систем, существует огромное множество персональных
сигнальных роботов, интегрируемых брокерами в свои системы электронных
торгов. Такие роботы являются ,зачастую, частью платной программы членства,
предлагаемой брокером.
После сравнительного анализа существующих предложений на рынке,
были выявлены следующие тезисы:
1. Сигнальная система (сигнальный робот) – это экспертная система;
2. Преобладающее большинство систем строятся на паттерном анализе;
3. Паттерный анализ подразумевает создание большой продукционной
базы знаний;
15
4. Для создание такой базы знаний требуются эксперты и инженеры по
знаниям;
5. Процесс разработки сигнальной системы затратный;
6. Высокая себестоимость сигнальных систем из-за существующего
метода получения сигнала, приводит к высокой стоимости продукта;
7. Существует множество закрытых роботов, не предоставляющих логику
получения сигнала;
На данный момент существует проблема создания логики сигнальной
системы, отличной от паттерного анализа, которая бы обладала следующими
качествами:
1. Норма доходности такая же или незначительно (~2-5%) меньше чем у
систем основанных на паттерном анализе;
2. Себестоимость разработки такой системы значительно меньше, чем у
существующих систем;
3. Работоспособность в рамках высоковолотильных рынков (резкое ничем не
обоснованное изменение значений) и скальпируемых интервалах времени;
Далее проведем анализ актуальности проблемы построения таких систем.
1.2 Актуальность проблемы
Задачу поиска отличной от паттерной технологии получения сигнала
можно декомпозировать в следующем виде:
Задача прогнозирования направления рынка
Задача прогнозирования временных рядов
Задача машинного обучения
Рисунок 1.1 Декомпозиция задачи поиска технологии получения сигнала
16
Задача машинного обучения – задача аппроксимации внутри диапазона.
Все методы так или иначе относящиеся к машинному обучению можно
разделить на:
1. Классические методы (Математические модели);
2. Интеллектуальные методы (Имитационные модели).
К классическим методам относят:
1. Линейную и нелинейную регрессию;
2. Авторегрессионные модели;
3. Модели скользящи средней;
4. Модели, основанные на «Марковском» процессе.
Основная область их применения – временные ряды с сезонной
компонентной, стационарные, и другие ряды имеющие явные или неявные
зависимости известного вида. Отличительной особенностью данных методов
является
их
неспособность
аппроксимировать
скрытые
зависимости
неизвестного вида.
Скрытые
финансовые
зависимости
временные
неизвестного
ряды,
не
вида,
позволяют
которыми
применять
наполнены
классические
математические методы таким образом, чтобы достичь приемлемого качества
прогноза.
Практически
доказано,
что
задачу
прогнозирования
финансового
временного ряда в процессе торгов хорошо решает человек, обладая набором
знаний и опытом. Технология паттерного анализа опирается на имитационную
модель и пытается аккумулировать набор правил-поведения человека. Помимо
продукционных моделей формирования знаний, среди интеллектуальных
методов для решения данной задачи, также выделяют аппарат искусственных
нейронных сетей.
Метод искусственных нейронных сетей пытается воссоздать поведение
человеческого мозга в процессе анализа и решения задачи прогнозирования.
Поскольку человек работает с типовыми образами (паттернами) рынка, а не с
числами, решение задачи прогнозировании сводится к одной из двух задач:
17
1. Классификация и распознавания образов (паттернов);
2. Аппроксимация внутри диапазона;
Распознавание образов требует усложнения аппаратной части, что
несомненно повлечет за собой увеличение себестоимости и, в конечном счете,
может оказаться намного дороже, чем технологии «патерного» анализа. Поэтому
в качестве решения задачи прогнозирования финансового временного ряда
предлагается
экспериментально
проверить
применимость
аппарата
искусственных нейронных сетей для численной аппроксимации.
1.3 Сравнение существующих методов
Авторегрессионная модель скользящего среднего (ARMA) – представляет
из себя совокупность двух более простых моделей представления временных
рядов – модель авторегрессии и модель скользящего среднего для стационарных
рядов. ARMA-модель можно записать в следующем виде:
𝑝
𝑞
𝑋𝑡 = 𝑐 + (∑𝑖=1 𝛼𝑖 ∗ 𝑋𝑡−1 ) + (1 + ∑𝑖=1 𝛽𝑖 ∗ 𝜀𝑡 )
(1.1)
Где:
1. с - это свободный член;
2. α и β – авторегрессионные коэффициенты и коэффициенты скользящего
среднего соответственно;
3. ε – Белый шум;
4. p и q – целые числа задающие порядок модели.
Применение такой модели в чистом виде на практике для решения задачи
прогнозирования финансового временного ряда не представляется возможным
из-за не стационарности последнего. Поэтому в исходную модель ARMA
добавляют интегрирующий коэффициент, превращая ее в авторегрессионную
модель интегрированного скользящего среднего. ARIMA – модель можно
записать в следующем виде:
𝑝
𝑞
∆𝑑 𝑋𝑡 = 𝑐 + (∑𝑖=1 𝛼𝑖 ∗ ∆𝑑 𝑋𝑡−1 + (1 + ∑𝑖=1 𝛽𝑖 ∗ 𝜀𝑡 )
Где
(1.2)
18
1. ∆𝑑 − оператор разности временного ряда порядка 𝑑 ,
вычисляемый
рекурсивно.
Данную модель можно применять для нестационарных рядов, однако она
так же имеет ряд недостатков.
Подход данной модели к временным рядам заключается в том, что в
первую очередь оценивается стационарность ряда. Предполагается, что
нестационарный ряд приводится к стационарному путем взятия d-единичных
корней [4].
Модель ARIMA позволяет оценить границы прогнозируемой величины, и
может быть использована вместе с более сложными математическими моделями
для количественной оценки прогнозируемого значения.
Применение модели ARIMA на сезонных временных рядах или на
низковолатильных рынках (рынок нефти, рынок недвижимости), позволяет с
достаточной степенью достоверности предсказывать значение временного ряда.
Для примера используем стандартный сезонный ряд «AirPassengers» библиотеки
R (рис.1.2), данный набор представляет из себя сезонный временной ряд,
который подходит в качестве демонстрационного варианта.
Рисунок 1.2 Спрогнозированные значения продажи авиабилетов c использованием ARIMA
19
На основании статистических данных о продаже билетов авиакомпаний за
период с 1950 по 1960 год, ARIMA-модель смогла с высокой степенью
достоверности спрогнозировать значения временного ряда на последующие
периоды.
Достоинства данной модели:
1. Четкое
математико-статистическое
обоснование,
наиболее
научно
обоснованная модель;
2. Степень формализации, позволяющая подобрать подходящую модель к
временному ряду с учетом специфики решаемой задачи;
3. Точечные и интервальные прогнозы не требуют отдельного оценивания;
4. Хорошо показывает себя на низковолатильных рынках и на сезонных
временных рядах.
Недостатки модели:
1. Необходима большая ретроспектива для качественной оценки;
2. Не подходит для прогнозирования котировок цен финансовых активов на
высоковолатильных рынках, так как обладает низкой адаптивностью;
3. Построение модели требует больших затрат времени и ресурсов;
Искусственная нейронная сеть – математическая модель, построенная по
принципу организации и функционирования биологических нейронов головного
мозга. Первые попытки создания нейронной сети относят к сетям У Маккалока
и У. Питтса. Основное отличием нейронных сетей от классических моделей
состоит в том, что они способны обучаться на данных с совершенно
неизвестными зависимостями. Возможность обобщать подобные зависимости –
главное преимущество ИНС.
Технически обучение ИНС – процесс нахождения коэффициентов связи
между нейронами. Существуют следующие алгоритмы обучения:
1. Обучение с учителем;
2. Обучение без учителя;
3. Обучение с подкреплением.
20
Внутри алгоритмов обучения находится принцип нахождения частных
производных, в зависимости от порядка производных алгоритмы делятся на:
1. Алгоритмы локальной оптимизации с вычислением частных производных
первого порядка:
1.1 Градиентный метод;
1.2 Метод с одномерной или многомерной оптимизацией целевой
функции в направлении антиградиента;
1.3 Метод сопряжения градиентов.
2. Алгоритмы локальной оптимизации с вычислением частных производных
первого и второго порядка:
2.1 Метод Ньютона;
2.2 Метод оптимизации с разряженными матрицами Гессе;
2.3 Метод Гаусса-Ньютона;
2.4 Метод Левенберга-Марквардта;
2.5 Квазиньютоновские методы.
3. Стохастические алгоритмы оптимизации:
3.1 Поиск в случайном направлении (Генетический алгоритм);
3.2 Имитация отжига;
3.3 Метод Монте-Карло.
Искусственная нейронная сеть представляет из себя N-нейронов,
соединенных между собой. В зависимости от топологии ИНС бывают:
1. Полносвязные (Сеть Хопфилда);
2. Многослойные (Сеть Ворда);
3. Слабосвязные.
Характеру связи искусственные нейронные сети классифицируют на:
1. Сети прямого распространения (Многослойный персептрон)
2. Рекуррентное сети (Рекуррентная сеть Хопфилда)
3. Радиально-базисные сети (RBF – Сети)
4. Самоорганизующие сети (Нейронная сеть Кохонена)
21
Основой любой топологии искусственной нейронной сети является
искусственный нейрон. Искусственный нейрон – взвешенный сумматор, выход
которого определяется через входы и матрицу весов Математическая модель
нейрона:
𝑦 = 𝑓(𝑢), где 𝑢 = ∑𝑛𝑖=1 𝑤𝑖 ∗ 𝑥𝑖 + 𝑏
(1.3)
Где:
1. n – число входов нейрона;
2. 𝑥𝑖 – значение i-го входа;
3. 𝑤𝑖 – вес i-го синапса входного нейрона;
4. b – смещение.
Функций y = f(u) называется активационной и бывает следующих видов:
1. Сигмоидальная;
2. Гиперболический тангенс;
3. Полулинейная;
4. Линейная.
В случае многослойной нейронной сети с множественными скрытыми
слоями входами нейрона последующего слоя будут выходы нейронов
предыдущего слоя.
Рассмотрим
многослойный
персептрон,
обученный
методом
наикратчайшего спуска (градиентный метод). При данном подходе задача
сводится к передаче выхода скрытого слоя (неизвестного) на вход с целью
коррекции ошибки. Данная задача даже при наборе ограниченных входных
данных имеет бесконечное множество решений (бесконечная кривая ошибки),
поэтому для ограничения пространства поиска используется квадрат невязки
(метод наименьших квадратов) как целевая функция:
1
𝑝
𝐸(𝑤) = ∑𝑗=1(𝑦𝑖 − 𝑌𝑖 )2
2
Где:
1. 𝑦𝑗 – значение j-го выхода нейронной сети;
2. 𝑌𝑗 – целевое значение j-го выхода;
(1.4)
22
3. p – число нейронов выходного слоя.
Поскольку
обучение
нейронной
сети
осуществляется
методом
градиентного спуска, то изменение веса на каждом шаге итерации будет
происходить по формуле:
𝜗𝐸
∆𝑤𝑖𝑗 = −𝜂 ∗
𝜗𝐸
𝜗𝑤𝑖𝑗
𝜗𝑆𝑖
𝜗𝑤𝑖𝑗
𝜗𝐸
=
𝜗𝑦𝑖
∗
(1.5)
𝜗𝑤𝑖𝑗
𝑑𝑦𝑗
𝑑𝑆𝑗
∗
𝜗𝑆𝑖
(1.6)
𝜗𝑤𝑖𝑗
= 𝑥𝑖
(1.7)
Где
1. 𝜂 − скорость обучения
2. Е - целевая функция (функция ошибки)
3. 𝑤𝑖𝑗 − вес 𝑖 − го синапса, 𝑗 − го нейрона
4. 𝑆𝑖 − взвешенная сумма входных сигналов
Конечная математическая модель метода обратного распространения
ошибки, заключается в рекурсивной формуле для определения n-го слоя при
известном (n+1)-го слоя:
Для скрытых слоев:
(𝑛)
𝛿𝑗
(𝑛)
𝛿𝑗
(𝑛+1)
= [∑𝑘 𝛿𝑘
=
𝜗𝐸
𝜗𝑦𝑖
∗
(𝑛+1)
∗ 𝑤𝑗𝑘
𝑑𝑦𝑗
]∗
𝑑𝑦𝑗
𝑑𝑆𝑗
(1.8)
(1.9)
𝑑𝑆𝑗
Для выходного слоя:
(𝑛)
𝛿𝑗
(𝑁)
= (𝑦𝑖
− 𝑑𝑖 ) ∗
𝑑𝑦𝑗
𝑑𝑆𝑗
(1.10)
Для корректировки весов:
(𝑛)
(𝑛)
∆𝑤𝑖𝑗 = −𝜂 ∗ 𝛿𝑗
∗ 𝑥𝑖𝑛
(1.11)
Модель искусственной нейронной сети, обученной методом обратного
распространения ошибки, позволяет решать следующие задачи:
1. Прогнозирования;
2. Принятия решений и управления;
23
3. Классификации и кластеризации;
4. Аппроксимация;
5. Оптимизации;
6. Анализа данных.
Модель ИНС обратного распространения ошибки имеет свои достоинства:
1. Толерантность к ошибкам наблюдения;
2. Адаптивность;
3. Нетребовательность к жесткой формализации входных данных;
4. Возможность работать с множеством различных типов данных;
5. Желательно наличие большой ретроспективы данных, но не обязательно.
Недостатки:
1. Переобучение;
2. Проблема локальных минимумов;
3. Для качественного прогноза требуется высокая повторяемость данных;
4. Нет жесткого алгоритма выбора архитектуры;
5. Нет жесткого алгоритма выбора скорости обучения;
Многообразие
возможных
характеристик
аппарата
искусственных
нейронных сетей, позволяет использовать их для прогнозирование финансовых
временных рядов со скрытыми зависимостями неизвестного вида, таких как
котировки
акций
валютных
и
рынков
ценных
бумаг.
Отсутствие
детерминированного алгоритма решения данной задачи позволяет провести ряд
экспериментов с архитектурой и топологией искусственных нейронных сетей с
целью выявления общего алгоритма использования, применимо к конкретной
задачи. Существующий опыт применения многослойных сетей, обученных
методом обратного распространения ошибки свидетельствует о невозможности
получения точного числового значения в качестве прогноза, используя одну
нейронную сеть [5]. Предлагается рассмотреть один из вариантов объединения
нейронных сетей - случайные леса, и экспериментально проверить их
применимость для получения точного прогноза.
24
1.4 Постановка задачи
Экспериментально
1.
проверить
возможность
использования
необработанных данных для прогнозирования.
1.1
Проверить применимость методов регуляризации для борьбы
с переобучением, возникающим из-за зашумленности необработанных данных
скрытыми зависимостями неизвестного вида.
Экспериментально проверить применимость методов первичной
2.
обработки входных данных (усреднение скользящими средними, взятия
процентных приращения).
2.1
Учесть опыт применения регуляризации и экспериментально
проверить предположение о увеличении качества прогноза при применении
регуляризации в процессе обучения на обработанных входных данных
3.
Экспериментально
проверить
применимость
нейросетевого
комитета, состоящего из многослойных нейронных сетей, обученных методом
обратного
распространения
ошибки
для
прогнозирования финансового временного ряда.
решения
задачи
точного
25
2 Экспериментальная часть
2.1 Формирование обучающей выборки
Перед тем как обучить модель ИНС необходимо сформировать
обучающую выборку. Обучающая выборка на ряду с валидационной и тестовой,
отбирается из общего набора данных в следующих пропорциях:
ОБЩАЯ РЕТРОСПЕКТИВА ВРЕМЕННОГО РЯДА
Обучающая
Валидационная
Тестовая
10%
20%
70%
Рисунок 2.1 Процентное разделения общей ретроспективы данных
Перед тем как выбрать какие данные будут использоваться для
формирования выборок необходимо проанализировать существующие рынки.
Основываясь на том, что рынки ценных бумаг менее хаотичны и подвержены
долгим однонаправленным трендам, было принято решения в качестве исходных
данных использовать данные из данного сегмента рынка. Перед тем как
определиться, акции какой компании использовать, было предпринято решение
оценить глубину ретроспективы, при которой можно было бы считать
обобщение
и,
как
следствие,
прогноз
адекватными.
После
анализа
предоставляемых Finam, котировок ценных бумаг, было принято решение
использовать
интервал
с
2014-01-03
по
2018-03-23.
Выбор
глубины
ретроспективы обусловлен тем, что с 1-м января 2014-го года по 3-е марта 2018го
котировки
ценных
бумаг
были
пересчитаны
с
учетом
нового,
установившегося, курса национальной валюты РФ. Учитывая допустимую
26
глубину ретроспективы, на рынке ценных бумаг, в качестве исходных данных
были выбраны цены акций компании Google. В качестве фактического
временного ряда были использованы «цены закрытия» - это значения цены
акции в конце рабочего дня (рис.2.2). Выбор дневного временного интервала
обусловлен меньшей зашумленностью по сравнению с интервалами в 30 и 15
минут.
Рисунок 2.2. Исходная ретроспектива
Принимая во внимание диаграмму разделения (рис.2.1) исходные данные
были разделены в следующем виде (рис.2.3).
В качестве метода формирования обучающего множества из общей
ретроспективы, предлагается использовать метод «скользящего окна». Суть
данного подхода в том, что мы используем входное и выходное «окно» с
фиксированным размером M и N
𝑥1 𝑥2
𝑋 = (𝑥2 𝑥3
𝑥3 𝑥4
𝑥𝑀
𝑥𝑀+1 ) – Входное окно
𝑥𝑀+2
27
𝑥𝑀+1
𝑌 = (( ⋮
𝑥𝑀+𝑘
⋯ 𝑥𝑀+𝑁
⋱
⋮ )) – Выходное окно
⋯ 𝑋𝑀+𝑁+𝐿
На каждом последующем шаге вектора входных и выходных окон
смещаются на 1, тем самым происходит «движение» вдоль ломаной кривой со
скоростью k. Каждый последующий входной вектор равен выходному значению
предыдущего вектора, добавленного в последующий входной вектор.
𝑋̅𝑖 = ̅̅̅̅̅̅
𝑋𝑖−1 + ̅̅̅̅̅
𝑌𝑖−1
(2.1)
Рисунок 2.3. Разделение исходной ретроспективы на обучающую, валидационную и
тестовую выборки.
В
случае
с
прогнозированием
финансового
временного
ряда
с
минимальным горизонтом прогноза равным 1-му дню, целесообразно
использовать «окно» размером 5 дней. Ввиду специфики ведения торгов, в
неделю укладывается ровно пять дневных значений временного ряда,
применение именно такого размера окна позволит в режиме реального времени
28
производить прогнозирование, а также сгладит резкие скачки между ценами
закрытия и открытия в конце текущей и начале следующей недели.
После формирования обучающей выборки методом «скользящего окна» с
размером окна равным 5-и, обучающее множество увеличивается примерно в 6
раз. Ввиду того, что вся обучающая выборка на этапе обучения предоставляется
«окнами» N по 5 значений, где спрогнозированное 6-е значение, является уже
частью N+1 окна, происходит внутреннее накопление ошибки. Так как
неизвестны шумовые факторы, влияющие на качество прогноза, предположим,
что
накопление
ошибки
происходит
путем
аппроксимации
шумовых
зависимостей, в следствии чего происходит резкое снижение качества
интерполяции и экстраполяции на заданном интервале.
Ввиду 5-дневного окна прогнозирования в качестве тестового множества
предлагается использовать последние 5 значений ряда не вошедшие в
валидационное множество.
2.2 Прогнозирование на необработанных входных данных. Применение
регуляризации
Было проведено обучение исходной ИНС на чистых, необработанных
данных о ценах закрытия акций Google. Практика подобного прогнозирования
показывает, сильные шумовые факторы, влияющие на процесс обучения в
целом.
На графике (рис.2.4) можно заметить, что процесс обучения ИНС на
необработанных, «чистых» данных приводит к переобучению. Проблема
переобучения возникает в следствии аппроксимации шумов. Переобучение – это
состояние регрессионной модели, при котором она теряет обобщающие свойства
и не способна аппроксимировать данные, отличные от обучающих. Для борьбы
с переобучением можно использовать следующие методы:
1. Увеличение оригинальной ретроспективы;
2. Уменьшение факторов (весов в нейронной сети);
3. Применения регуляризации.
29
Рисунок 2.4. Результат обучения на необработанных данных без регуляризации. Черный –
основной график, красный пунктирный – график аппроксимации
Увеличить оригинальную ретроспективу в рамках финансовых временных
рядов, без еще большего добавления шумовых зависимостей невозможно, так
как в формировании данных учувствует не формализуемый человеческий
фактор. Уменьшение количества весов, за счет уменьшения нейронов в скрытых
слоях искусственной нейронной сети может привести к снижению качества
прогноза. Отсутствие детерминированного алгоритма поиска оптимального
количества нейронов скрытых слоев создает бесконечно большое количество
неизвестных оптимальных решений. Ввиду того, что сложность модели
(количество нейронов) не является критическим фактором для методов
регуляризации предлагается использовать их для борьбы с переобучением.
Регуляризация – это процесс, при котором к критерию оценки ошибки,
добавляется некий штрафующий коэффициент, целью которого является не
допустить чрезмерное усложнение модели, в случае с обучением искусственных
30
нейронных сетей – это слишком большие веса, которые и ведут к переобучению
[6]. Выделяют два метода регуляризации:
1.
L1-регуляризация (lasso regression);
L1 = ∑i(yi − y(t i ))2 + λ ∑i|wi |
2.
(2.2)
L2-регуляризаций (ridge regression).
L2 = ∑i(yi − y(t i ))2 + λ ∑i wi2
(2.3)
Каждый из данных методов решает определенную проблему в процессе
регуляризации. Поскольку в L1 – регуляризации дополнительный член является
модулем, а в L2 –квадратичной функцией, и так как, метод обучения –
градиентный спуск, то производная от квадратичной функции будет стремиться
к нулю тем медленней, чем ближе она к нулю, тем самым L2 – регуляризации
обеспечивает уменьшение коэффициентов модели, а не их обнуление. В свою
очередь модуль L1 – регуляризации, стремиться к нулю с постоянной скоростью,
и по достижению нуля там и остается, тем самым происходит обнуление весов,
отвечающих за шумовые зависимости.
Современным методом использования регуляризации в искусственных
нейронных сетях является комбинированный метод ElasticNet (LeN)
LeN = ∑i(yi − y(t i ))2 + λ ∑i|wi | + λ ∑i wi2
(2.4)
Данный метод подразумевает использование сразу и L1, и L2
регуляризации в процессе оценки ошибки. Такой подход позволяет обнулять
шумовые зависимости в данных и одновременно с этим защитить модель от
чрезмерного усложнения
При использовании любого из методов, открытым остается вопрос выбора
коэффициента λ. Коэффициент регуляризации находится в интервале (0,+∞).
Использование слишком большого коэффициента приведет к тому, что все веса
установятся в 0(L1), либо перестанут изменятся, достигнув критического
минимума (L2). Поскольку поиск является эмпирическим, был проведен ряд
экспериментов по поиску оптимального значение λ. На первом этапе необходимо
ограничить область внутри которой лежат коэффициенты. На втором этапе,
экспериментально подобрать из множества оптимальных значений пару (λ1,λ2),
31
при которых ИНС будет с достаточной степенью обобщать значения тестового
множества.
Структура эксперимента:
Дано: искусственная нейронная сеть структурой: 5 нейронов во входном
слое, 50 нейронов в скрытом слое (один скрытый слой), один нейрон в выходном
слое. Линейная функция в входном и выходном слое, в скрытом слое
сигмоидальная (логистическая) функция активации Метод обучения –
градиентный спуск (обратного распространения ошибки). В качестве критерия
ошибки, выбран квадрат невязки (1.4). В качестве регуляризатора был применен
метод множественной регуляризации LeN (2.4).
Цель: поиск оптимального значения (λ1,λ2)
Ход эксперимента: для нахождения пары коэффициентов регуляризации,
был предпринят шаг оценить граничные значения для каждого из них. Результат
эксперимента с (λ1=10,λ2=0) (рис.2.5) ,говорит о чрезмерно высоком значении
коэффициента регуляризации для L1
Рисунок 2.5 График аппроксимации с L1 – регуляризацией и λ = 10 Основной график –
реальные данные, пунктирный – аппроксимированные.
32
Для того что бы найти минимум для λ1при котором все веса исходной
модели не становятся нулевыми, был применен метод бисекции, при котором
верхняя граница отрезка (0,λ1) делится пополам на каждом этапе итерации.
Таким образом результат для λ1 = 5 (рис.2.6) говорит о том, что выбранное
значение коэффициента лежит внутри допустимого диапазона, однако вид
кривой, свидетельствует о том, что вместе с шумовыми факторами обнулились
и веса и у некоторых факторов зависимости.
Рисунок 2.6 График аппроксимации с L1 – регуляризацией и λ = 5. Основной график –
реальные данные, пунктирный – аппроксимированные.
На следующем шаге, для того что бы уменьшить вероятность обнуления
необходимых зависимостей выбран λ = 2.5, результат (рис. 2.7) свидетельствует
о том в процессе обучения некоторые факторы зависимости по-прежнему
обнуляются, однако форма кривой говорит о хорошем обобщении на большей
части диапазона. Таким образом можно сделать вывод что для L1 –
регуляризации верхняя граница для λ = 2.5. Однако необходимо снизить
вероятность обнуления значимых факторов модели. Для этого, была
33
предпринята попытка проверки λ1 = 1.25. Результат (рис.2.7) говорит том, что
выбранное значение коэффциента не приводит к слишком резкому обнулению
весов у нейронов скрытого слоя, о чем свидетельствует и вид кривой (рис.2.52.7). Так же можно говорить о хорошем уровне обобщения данных внутри
заданного диапазона.
Принимая λ1 = 1.25 остается актуальным поиск λ2, беря во внимание
верхнее граничное значение для λ1, предположим, что λ2 имеет такую же (близку)
верхнюю границу.
Рисунок 2.7 График аппроксимации с L1 – регуляризацией и λ = 2.5. Основной график –
реальные данные, пунктирный – аппроксимированные.
Для поиска второго коэффициента регуляризации, будем использовать
такой же эмпирический метод. К регуляризатору (2.4) с λ1 = 1.25, добавим λ2 =
2.5. Предполагается, что L2-регуляризаций не позволяет весам модели
разрастаться до размеров, усложняющих обобщение. Однако результат (рис.2.9)
говорит о том, что использование λ2=2.5 приведет график к графику при λ1=5
34
(рис.2.5), что свидетельствует о том, что верхняя граница для λ2 много меньше
чем 2.5.
Рисунок 2.8 График аппроксимации с L1 – регуляризацией и λ = 1.25. Основной график –
реальные данные, пунктирный – аппроксимированные.
Для проверки предположения о том, что верхняя граница для λ2 <<2.5,
было проведено обучение нейронной сети с регуляризатором (λ 1=1.25; λ2=0.5),
уменьшив тем самым второй коэффициент регуляризации в 5 раз. Вид кривой
(рис.9) говорит о том, что столь низкий показатель λ2 никак не влияет на качество
обобщения
и
регуляризацию.
График
регуляризатора
L1
(рис.2.8)
и
множественного регуляризатора LeN (рис.2.10) эквивалентны. Данный факт
свидетельствует о том, что применение L2 – регуляризатора с λ2 <1 в процессе
обучения не дает видимого результата.
При λ2>1 и неизменном значении λ1 равным 1.25, график аппроксимации
нейронной сети стремится к виду регуляризированного графика L1 регуляризацией с λ1приближенной к верхней границе, а при λ2<1 L2 не вносит
значительный вклад в процесс регуляризации.
35
Рисунок 2.9 График аппроксимации с L1 и L2 – регуляризацией и λ1 = 1.25. λ2 =2.5. Основной
график – реальные данные, пунктирный – аппроксимированные.
Рисунок 2.10 График аппроксимации с L1 и L2 – регуляризацией и λ1 = 1.25. λ2 =0.5.
Основной график – реальные данные, пунктирный – аппроксимированные.
36
Вместе с тем, λ2<1, не наносит существенного вреда обобщающей
способности нейронной сети. Ввиду этого было принято решение использовать
следующие значения коэффициентов регуляризации (λ1=1.25, λ2=0.75). Для
проверки влияния регуляризации на качество прогнозирования нейронной сети
был проведен эксперимент, который показал (рис.2.11) что применение
сигмоидальной логистической функции активации (2.5) приводит к тому что в
процессе обучения функция уходит в насыщение и полученный прогноз
двигается в сторону насыщения.
𝑞(𝑥) =
1
1+𝑒 −𝑥
(2.5)
Для решения данной проблемы была заменена функция активации
скрытого слоя нейронной сети на гиперболический тангенс (2.6)
th(Ax) =
𝑒 𝐴𝑥 −𝑒 −𝐴𝑥
𝑒 𝐴𝑥 +𝑒 −𝐴𝑥
(2.6)
Рисунок 2.11 График аппроксимации с L1 и L2 – регуляризацией и λ1 = 1.25. λ2 =0.5. а –
спрогнозированный фрагмент в масштабе.
После обучения нейронной сети с функцией (2.6), был получен следующий
график (рис.2.12). Обучение на необработанных, «чистых» значениях исходного
ряда (рис.2.3) приводит к переобучению.
Использование механизмов регуляризации, позволило снизить влияние
шумов в процессе обучения, однако вид спрогнозированного отрезка кривой
37
(рис.2.12), а также накапливаемая разница Δпрогноза ~ 3 спрогнозированных
значений
(табл.2.1)
свидетельствует
о
«угадывании»
в
процессе
прогнозирование.
Рисунок 2.12 График аппроксимации с L1 и L2 – регуляризацией и λ1 = 1.25. λ2 =0.5. а –
спрогнозированный фрагмент в масштабе. С функцией активации гиперболический тангенс.
Для того что бы удостоверится в правильности прогноза, загрузим данные
за последние 10 дней (рис.2.13)
Рисунок 2.13 График реальных значений временного ряда. а –фрагмент в масштабе.
«Угадывание» - это следствие процесса переобучения, при котором ИНС
не смогла обобщить заданный интервал и выделить зависимость, на основании
которой
происходит
формирование
новых
значений,
поэтому
на
прогнозируемом интервале происходит формирование близких между собой, но
имеющих совершенно случайную зависимость друг от друга.
38
Реальные значения за
последние 5 дней
Прогноз на последние 5
дней
Для
решения
1013.380
Таблица 2.1 Спрогнозированный интервал
1024.470 1028.350 1006.750 1015.740
1023.5724 1026.4633 1030.7897 1033.9963 1036.9467
данной
проблемы
предлагается
использовать
перекодирования исходного ряда (рис.2.3) в один из индикаторов технического
анализа.
2.3 Перекодирование входных данных
«Чистые» значения цен закрытия чрезмерно зашумлены. По мимо этого,
они
полны
скрытых
зависимостей,
которые
усложняют
процесс
прогнозирования. Предлагаются следующие решения данной проблемы:
1. Сглаживание временного ряда с использованием скользящих средних;
2. Взятие в качестве входов нейронной сети процентных изменений на всем
исследуемом интервале.
В качестве инструмента сглаживания предлагается рассмотреть:
1. Простую скользящую среднюю;
2. Взвешенную скользящую среднюю.
Смысл каждой из скользящих средних - сгладить (усреднить) значение в
заданном интервале. В случае прогнозирования финансового временного ряда
это позволит избавиться от коррекционных скачков на графике. Коррекция в
теории технического анализа – это состояние графика котировок, при котором
сильный восходящий или нисходящий тренд резко меняет свое направление на
непродолжительный срок, а затем возвращается к исходному состоянию. Такой
эффект связан исключительно с человеческим фактором, а именно, при ярко
выраженном тренде инвесторы начинают открывать позиции и закрывают их
через какое-то время. Поскольку данные действия никем не корректируется,
происходит спонтанная смена состояния рынка, обусловленная множеством
одновременно закрытых позиций. Предполагается, что применение скользящих
средних позволит сгладить такие участки, что приведет к увеличению качества
прогноза.
39
При использовании скользящих средних, основной проблемой является
выбор окна сглаживания. Для решения данной проблемы в сезонных временных
рядах используют окно сглаживания, равное размеру сезонной компоненты. Для
того чтобы проверить ряд на сезонность, используют автокорреляцию, а именно
частную (рис 2.14.А) и общую (рис.2.14.Б) функции автокорреляции исходной
ретроспективы (рис.2.3).
Рисунок 2.14A. Общая автокорреляционная функция.
Общая функция автокорреляции показывает совокупный эффект, который
оказывает k-е значение временного ряда на k+L значение. Наблюдаемый
«лестничный» эффект общей автокорреляционной функции, свидетельствует:
1. О высокой зашумленности временного ряда;
2. Об отсутствии совокупного влияния k-го элемента на k+L элемент
временного ряда.
Частная автокорреляционная функция позволяет оценить прямое влияние
k-го значение временного ряда на k+n-е значение, очищенное от совокупного
влияния
промежуточных
значений.
Исходя
из
графика
частной
автокорреляционной функции (рис.2.14Б) можно заключить:
1. Имеет место отсутствие частных автокорреляций между значениями
временного ряда;
2. Временной ряд воспринимается как белый шум.
40
Рисунок 2.14Б.Частная автокорреляционная функция.
Из всего вышеизложенного можно сделать вывод, что данный временной
ряд не обладает сезонностью, либо выявление сезонной компоненты осложненно
чрезмерной зашумленностью временного ряда.
Поскольку в данном временном ряде определить сезонную компоненту не
представляется
возможным,
окно
сглаживания
предлагается
выбрать
эмпирически таким образом, чтобы происходило сглаживание выбранных
контрольных коррекционных сдвигов (рис.2.15А, рис.2.15Б, рис.2.15В).
Для экспериментального поиска будем использовать простую скользящую
среднюю.
Данный
вид
усреднения
подразумевает
взятие
среднего
арифметического на заданном интервале сглаживания.
𝑆𝑀𝐴 =
∑𝑘
𝑖=1 𝑥𝑖
𝑘
(2.7)
На график (рис. 2.16) показан вариант сглаживания простой скользящей
средней (с окном сглаживания, равным одной неделе (5 дней)), исходного
графика котировок акции Google в период с 1 января 2014 г., по 23 марта 2018г.
Можно заметить, что степень усреднение при использовании окна равного
5 недостаточна. Для того что бы увеличить степень сглаживание на контрольных
участках, предлагается увеличить окно сглаживания на 5 на каждом
последующем шаге.
41
Рисунок 2.15. А,Б,В - Контрольные корректировочные сдвиги, для эмпирического поиска
окна сглаживания.
Рисунок 2.16. Сглаживание при помощи SMA (окно сглаживания -5). А, Б, В – контрольные
коррекционные сдвиги в масштабе.
На шаге 2, с окном сглаживания 10 дней, результат (рис. 2.15)
свидетельствует о лучшем усреднении на контрольных интервалах (рис.2.17А,
рис.2.17Б, рис.2.17В).
Простая скользящая средняя использует грубый вид сглаживания, при
котором может произойти усреднение не только коррекционных сдвигов, но и
необходимых (неизвестных) зависимостей, что приведет в дальнейшем к потери
качестве прогноза. Поэтому дальнейшее увеличение окна может привести к
чрезмерному усреднению значений временного ряда.
42
Рисунок 2.17. Сглаживание при помощи SMA (окно сглаживания -10). А, Б, В – контрольные
коррекционные сдвиги в масштабе
Для уточнения процесса усреднения коррекционных сдвигов предлагается
рассмотреть уложенную модель простой скользящей средней – взвешенная
скользящая средняя (Weight Moving Average)
𝑊𝑀𝐴 =
𝑣1 ∆𝐶0 +𝑣2 ∆𝐶1 +⋯+𝑣𝑛 ∆𝐶𝑛−1
∑𝑛
𝑖=1 𝑣𝑖
(2.8)
Где:
1.
𝑣𝑖 – вес i-го значения
2. Ci – i-е значение временного ряда
Предполагается, что применение данной модели позволит увеличить окно
сглаживания без чрезмерного усреднения исходного ряда. Поскольку ряд
одномерный, предлагается использовать линейно взвешенную скользящую
среднюю (2.8), где веса каждого члена временного ряда есть значения
арифметической прогрессии (их порядковые номера внутри временного ряда).
На графике (рис.2.18) приведен результат усреднения исходного ряда линейно
взвешенной скользящей средней с окном сглаживания, равным 20 дней. 20дневный интервал сглаживания был выбран исходя из предположения о более
гладком процессе усреднения, используемом в данной модели, ввиду чего было
предпринято решение увеличить шаг в 2 раза т.е 10 дней, так как увеличение
более чем в 2-раза, в процессе эксперимента приводило к чрезмерному
усреднению исходных данных.
Исходя из данного результата (рис.2.18), сглаживание на выбранных
коррекционных сдвигах (рис.2.18А, рис.2.18Б, рис 2.18В) можно считать, что при
данном окне сглаживания, усредненные данные лежат в рамках тренда,
43
коррекционные сдвиги, являющиеся шумовыми, усреднены, и можно проводить
обучение искусственной нейронной сети, для того что бы оценить качество
прогноза.
Рисунок 2.18. Сглаживание при помощи WMA (окно сглаживания – 20). А, Б, В –
контрольные коррекционные сдвиги в масштабе.
2.2.1 Прогнозирование на сглаженных данных
Проверка влияния усредненных входных данных на качество конечного
прогноза нейронной сети. Для экспериментальной проверки была выбрана
нейронная сеть со следующими параметрами:
Архитектура –Многослойный персептрон;
Топология – сети прямого распространения сигнала;
44
Тип обучения – обучения с учителем;
Метод обучение – обратного распространения ошибки (градиентный
спуск);
Параметры архитектуры нейронной сети:
Входные нейроны – 20 (Соразмерно окну сглаживания);
Скрытые нейроны – 50;
Выходные нейроны – 1;
Функция ошибки – Квадрат невязки (1.4);
Функция скрытого слоя – гиперболический тангенс (2.6);
Функция выходного слоя – линейная.
Параметры обучения нейронной сети:
Скорость обучения – 0.001;
Генерация весов – случайная;
Алгоритм обучения – градиентный спуск.
Регуляризация – LeN = {1,25,0,5}
На общем графике (рис.2.19А) можно заметить, что коррекционные
сдвиги, как мелкие, так и крупные, в процессе аппроксимации усреднялись
(точечная линия). Ввиду размера выбранного окна сглаживания, пришлось
прибегнуть к увеличению «окна смещения» в процессе обучения. Принимая во
внимание данный факт, нельзя считать полученные данные как данные
регрессии достоверными, так как выбранное «окно смещения», приводит
быстрому накоплению ошибки.
Использование сглаженных данных, в качестве входов нейронной сети не
позволяет качественно решить задачу регрессии, однако позволяет с высокой
степенью достоверности оценить тренд.
Таким образом, предполагается, что сонаправленность полученного
тренда на прогнозируемом интервале и тренда реальным данных, является
следствием улавливания зависимостей между значениями сглаженного ряда.
45
Рисунок 2.19. Результат прогнозирования на сглаженных данных. А- общий график
аппроксимации, Б- прогнозируемый интервал в масштабе
Обучение на сглаженных данных будет полезно в случае оценки поведения
рынков средней волатильности. Применение данного вида перекодирования, так
же применимо в ситуациях, когда точная оценка рынка не является критическим
параметром для торговой стратегии.
Для того, чтобы проверить применимость искусственных нейронных
сетей, для формирования точной оценки рынка, предлагается взять процентные
приращения исходного ряда (рис.2.3). Предполагается, что ряд процентных
46
приращений несет больше данных о зависимостях между значениями
временного ряда, чем необработанные исходный ряд.
2.2.2 Прогнозирование на процентных приращениях
Процентное приращение – это отношение (изменение) значений
временного ряда на всем интервале, выраженное в процентах [8].
𝐶𝑝𝑒𝑟 =
𝐶𝑖
𝐶𝑖−1
(2.9)
Где: Сper – процентное приращение; Сi – i-е значение временного ряда; Сi-1 – i-1е значение временного ряда.
Таким образом, использование процентных приращений, конкретизирует
одну из ключевых зависимостей финансового временного ряда – изменение
цены. Предполагается, что использование данного вида перекодирования
входных данных позволит искусственной нейронной сети сконцентрироваться
на выделенной зависимости, обобщить ее и выдать качественных прогноз.
Рисунок 2.20. Процентные приращения акции котировок Google за период с 2014-01-01 по
2018-03-06
Для того что бы понять, насколько сильно повлияло перекодирование на
качество прогноза, необходимо провести обучение ИНС. Для этого была
выбрана классическая модель, описанная в п.2.3.1, с некоторыми изменениями в
топологии:
47
1. Входные нейроны – 5;
2. Скрытые нейроны – (501,102);
3. Выходные нейроны – 1;
Такое количество нейронов обусловлено тем, что изначальная, разница
между значениями процентных приращений (рис.2.20) крайне мала и
впоследствии во время тестов происходило усреднение ряда (изменение
значений было незначительно, фактически ряд принимал одно значения). Для
того что бы этого избежать, было решено заведомо усложнить модель с целью
переобучения, а затем, используя эмпирический подход (уменьшая либо
скорость обучения, либо коэффициенты регуляризатора) добиться возвращения
обобщающей способности без чрезмерного усреднения.
Рисунок 2.21. Результат обучения на процентных приращениях акции котировок Google. А –
L1 = 1
Таким образом, эмпирически было установлено, что при L1 = 1;0.5;0.25
происходит усреднение ряда. (Причина: малая разница между значениями ряда
воспринимается как погрешность и L1 обнуляет большую часть весов).
Предполагается, что существует бесконечное множество оптимальных решений
L1 << 1. Без детерминированного алгоритма поиска, нахождение коэффициента
для L1 – регуляризатора эмпирически, нецелесообразно.
48
В качестве решения проблемы недетерминированного поиска значения
регуляризаторов L1 и L2 (эмпирическим путем было установлено, что его
оптимальное значение L2 <<1) предлагается заменить существующую функцию
ошибки (4) на функцию потерь Хьюбера.
Функция потерь Хьюбера:
1
𝐿𝛿 (𝑦, 𝑓(𝑥)) = {
2
(𝑦 − 𝑓(𝑥))2 , для |𝑦 − 𝑓(𝑥)| ≤ 𝛿
1
𝛿|𝑦 − 𝑓(𝑥)| − 𝛿 2 , иначе.
(2.10)
2
Где δ –коэффициент оценки ошибки.
Считается, что основным преимущество данной функции активации по
сравнению с квадратом невязки является большая устойчивость к выбросам.
Данная функция является линейной для больших значений ошибки и
квадратичной для малых значений.
Рисунок 2.22. Результат применение функции потерь Хьюьера с δ = 0.2, в процессе обучения
ИНС на процентных приращениях.
На графике (рис.2.22) отображен результат прогнозирования ИНС с
изменённой функцией ошибки на функцию потерь Хьюбера (2.10). По
результатам, полученным в процессе обучения ИНС с функцией потерь Хьюбера
(2.10) (табл.2.2) можно судить о возможности прогнозирования приближенных
49
значений финансового временного ряда. Исходя из полученных данных, также
можно судить, что качество прогноза падает с увеличением горизонта
прогнозирования, в следствии накопления ошибки.
Таблица 2.2 Результат обучения с функцией потерь Хьюбера
.
Результат прогноза ИНС
Реальные данные
Отклонение
1.0029220
0.9990415
1.0006456
1.0018393
0.9806320
1.0065897
-0,0010827
-0,0184095
0,0059441
Было решено провести 15 независимых между собой процессов обучения,
чтобы оценить приспособленность полученной ИНС для работы в режиме
реального времени при необходимости постоянно обучаться заново, при
получении нового значения временного ряда.
Таблица 2.3 Результаты эксперимента с процентными приращениями
Номер опыта
Спрогнозированное значение с шагом
прогнозирования 1 день
1
1.0031118
2
1.0021837
3
1.0118213
4
1.0060363
5
0.9992133
6
1.0090335
7
1.0088115
8
1.0025661
9
1.0010714
10
1.0034957
11
0.9982085
12
1.0058745
13
0.9992198
14
1.0070070
15
1.0039928
В качестве оценки прогноза будем использовать спрогнозированное
значение с шагом в 1, так как, предполагается, что накопленная ошибка, в нем,
имеет наименьшее значение.В качестве контрольного значения для анализа
результатов эксперимента, было взято процентное приращение между
последним значением аппроксимируемого множества и первым ,реальным,
значением прогнозируемого интервала Vконтрольное = 1,0018393. Таким образом
максимальное
значение
за
15
экспериментов:
Vмакс
=
1,0118213,
соответствующее максимальное отклонение: Δмакс = 0,009982. Минимальное
значение равно:Vмин = 0,9982085, соответствующие минимальное отклонение:
50
Δмин = 0,0036308. Среднее отклонение по результатам 15-ти экспериментов
составило: Δсред. = 0,003556.
Считая обучение, отклонение в процессе, которого от контрольного
значения меньше, либо равно среднему отклонению, успешным, вероятность
успешного обучения равна:
𝑃𝑎 =
8
15
∗ 100 = 53%,
соответственно вероятность неуспешного обучения равна:
𝑃𝑏 =
7
15
∗ 100 = 47%
Учитывая, что одно из значений, попавших в допустимый диапазон может
быть случайно угаданным было решено скорректировать вероятности: Pa = 50%,
Pb=50%.
На основании, полученных в результате эксперимента, данных, можно
сделать вывод, что применение процентных приращений позволяет получить
приближенное значение в процессе прогнозирования, в отличии от сглаживания,
которое позволяет лишь уловить тренд. В процессе функционирования такая
ИНС должна выдавать прогноз с допустимой погрешностью от 3% до 10%
постоянно обучаясь заново каждый раз, когда будет получать новое значение
(результаты торгов за день), такой режим работы осложнён проблемой
локальных минимумов, при попадании в который ИНС будет прогнозировать
значение вне допустимых рамок отклонения. Для решения данной проблемы,
предлагается использовать нейросетевой комитет.
2.4 Использование нейросетевого комитета
Нейросетевой комитет – это набор искусственных нейронных сетей с
общим выходом, называемым «руководителем комитета». Нейросетевой
комитет или нейросетевой ансамбль, применяют для увеличения надежности
прогноза [9].
Предлагается использовать нейросетевой комитет для увеличения качества
прогноза нейронной сети, обученной на процентных приращениях. В
предыдущем пункте было установлено, что данный вид входных данных
51
позволяет спрогнозировать значения с шагом в 1 день, с приближенной
точностью, однако предполагается, что применение нейросетевого ансамбля
позволит улучшить качество прогноза, снизив влияние проблемы локальных
минимумов на получение прогноза.
Сеть 1
Вход
«Руководитель
комитета»
.
Выход
Сеть N
Рисунок 2.23. Обобщённая модель нейросетевого комитет с руководителем
Проведем ряд экспериментов с нейросетевом комитетом, состоящим из
искусственных нейронных сетей, топология которых описана в п.2.3.2, с
функцией ошибки (2.10). В качестве руководителя комитета используем среднее
значение выходов все ИНС, входящих в комитет. Цель экспериментов: оценить
влияние применения нейросетевого комитета на качество прогнозируемого
значения.
Первый эксперимент. Был построен нейросетевой комитет из 5 нейронных
сетей. Значение коэффициента оценки ошибки δ для каждой нейронной сети,
приведены в таблице 2.4.
Таблица 2.4 Значение коэффициентов для функции потерь Хьюбера
Значение δ
0.2
0.18
0.16
0.14
0.12
№ ИНС
1
2
3
4
5
Цель: экспериментально проверить влияние снижения коэффициента
оценки ошибки на качество получаемого прогноза.
Для
того
что
бы
оценить
качество
прогнозируемого
значения,
воспользуемся контрольным значением из п.2.3.2 (1,0018393). Результаты
обучения нейросетевого комитета представлены в таблице 2.5.
52
Рисунок 2.24. Результат работы нейросетевого комитета. Б- спрогнозированный интервал в
масштабе.
Выход комитета (1,0064601) лежит в рамках допустимого интервала, это
свидетельствует о потенциальной применимости нейросетевого комитета с
выбранными параметрами.
Для оценки приспособленности нейросетевого комитет работать в режиме
реального времени, были проведены 10 итераций обучения одного и того же
нейросетевого комитета, результаты, которых представлены в таблице 2.6.
№ ИНС
1
2
3
4
5
Таблица 2.5 Числовая оценка качества прогноза нейросетевого комитета
Значение δ
Выход
Отклонение
0.2
0.9998918
0,0019475
0.18
1.009513
0,0076737
0.16
1.007255
0,0054157
0.14
1.003548
0,0017087
0.12
1.003583
0,0017437
Выход комитета
1.0064601
0,0046208
Таблица 2.6 Результат эксперимента №1 c комитетом ИНС
Номер опыта
Спрогнозированное комитетом значение с
шагом прогнозирования 1 день
1
1.0045786
2
1.0065792
3
1.0103125
4
1.0083592
5
1.0022544
6
1.0031249
7
1.0073973
8
1.0054115
9
1.0035456
10
1.0068100
Таким образом максимальное значение за 10 экспериментов: Vмакс =
1,0103125, соответствующее максимальное отклонение: Δмакс = 0,008473.
53
Минимальное значение равно:Vмин = 1,0022544, соответствующие минимальное
отклонение: Δмин = 0,0004151. Среднее отклонение по результатам 15-ти
экспериментов составило: Δсред. = 0,003998.
Считая обучение, отклонение в процессе, которого от контрольного
значения меньше, либо равно среднему отклонению, успешным, вероятность
успешного обучения равна:
𝑃𝑎1 =
5
10
∗ 100 = 50%,
соответственно вероятность неуспешного обучения равна:
𝑃𝑏1 =
5
10
∗ 100 = 50%.
На основе полученных результатов можно сделать вывод, что подобное
применение нейросетевого комитета, позволяет снизить влияние проблемы
локальных минимумов в процессе и уменьшить погрешность с 3…10% до
4…8%.
Второй эксперимент. Поскольку получилось повысить качество прогноза
путем изменения параметров ИНС входящих в комитет, предлагается
рассмотреть изменения параметров скрытого слоя.
1. Нейронная сеть №1 – (501,102);
2. Нейронная сеть №2 – (501,102,103);
3. Нейронная сеть №3 – (501,102,103,104)
4. Нейронная сеть №4 – (501, 102,103,104,105)
5. Нейронная сеть №5 – (501,102,103,104,105,106)
Предполагается что подобное, грубое, увеличение количества синапсов
неизбежно приведет к переобучению, поэтому установим для сетей с большим
количеством скрытых слоев, большие значение коэффициента оценки ошибки δ.
Выход нейросетевого комитета (1.0070218) лежит в скорректированном
допустимом интервале, что свидетельствует о потенциальной применимости
нейросетевого комитета с выбранными параметрами.
Для того что бы оценить применимость данного нейросетевого комитета
для работы в режиме реального времени и его влияния на качества
54
спрогнозированного значения было решено провести 10 итераций обучения
результаты, которых представлены в таблице 2.8.
№ ИНС
1
2
3
4
5
Таблица 2.7 Результаты комитета ИНС с модифицированным скрытым слоем
Значение δ
Выход
Отклонение
0.2
1.007432
0,0019475
0.5
1.010238
-0,0076737
1
1.004993
-0,0054157
1,5
1.001967
-0,0017087
2
1.01048
-0,0017437
Выход комитета
1.0070218
-0,0046208
Таблица 2.8 Результаты второго эксперимента с нейросетевым комитетом
Номер опыта
Спрогнозированное комитетом значение с
шагом прогнозирования 1 день
1
1.0070218
2
1.0008217
3
1.0006028
4
1.0028963
5
1.0109045
6
1.0073580
7
1.0047072
8
1.0088523
9
1.0035456
10
1.0038775
Таким образом максимальное значение за 10 экспериментов: Vмакс =
1,0109045, соответствующее максимальное отклонение: Δмакс = 0,0090652.
Минимальное значение равно:Vмин = 1,0006028, соответствующие минимальное
отклонение: Δмин = 0,0012365. Среднее отклонение по результатам 15-ти
экспериментов составило: Δсред. = 0,004211.
Считая обучение, отклонение в процессе, которого от контрольного
значения меньше, либо равно среднему отклонению, успешным, вероятность
успешного обучения равна:
5
∗ 100 = 50%
10
соответственно вероятность неуспешного обучения равна:
𝑃𝑎2 =
𝑃𝑏3 =
5
10
∗ 100 = 50%
В результате эксперимента было решено отказаться от каскадного
увеличения скрытого слоя, так как видимого результата это не дало, но при этому
увеличилось время обучения всего комитета. Было решено считать первый
55
эксперимент успешным и на его основе реализовать нейросетевой комитет со
следующими параметрами:
1. Скрытые слои у всех нейронных сетей одинаковые – (501,102);
2. δ для каждой нейронной сети по порядку (0.2;0,18;0,16;0,14;0,12);
3. Шаг обучения – 0,001;
4. Процент валидационного множества - 20%;
5. Количество эпох обучения для каждой нейронной сети по порядку
(1800;1600;1400;1200;1000);
Рисунок 2.25. Аппроксимация и прогноз нейросетевого комитетом акций Google. А –
основной график, Б – спрогнозированный интервал в масштабе.
Были проведены 10 итеративных попыток обучить нейросетевой комитет,
описанный выше, методом обратного распространения ошибки (градиентный
спуск). Получившиеся данные, являются независимыми друг от друга и
представлены в таблице 2.9
Таким образом максимальное значение за 10 экспериментов: Vмакс =
1,0072045, соответствующее максимальное отклонение: Δмакс = 0,0053652.
Минимальное значение равно:Vмин = 1,0034636, соответствующие минимальное
отклонение: Δмин = 0,0016243. Среднее отклонение по результатам 15-ти
экспериментов составило: Δсред. = 0,003006.
Считая обучение, отклонение в процессе, которого от контрольного
значения меньше, либо равно среднему отклонению, успешным, вероятность
успешного обучения равна:
𝑃𝑎3 =
6
∗ 100 = 60%
10
56
соответственно вероятность неуспешного обучения равна:
𝑃𝑏3 =
Номер опыта
1
2
3
4
5
6
7
8
9
10
4
10
∗ 100 = 40%
Таблица 2.9 Результат финальной проверки точности комитета
Спрогнозированное комитетом значение с
шагом прогнозирования 1 день
1,00422
1,0038926
1,0072045
1,0055698
1,0044679
1,0054803
1,0042436
1,0062445
1,0034636
1,0036636
Предполагается, что достижение более точного прогноза, при условии
использования классических нейронных сетей, обученных методом обратного
распространения сигнала в режиме реального времени, не представляется
возможным.
Применение
нейросетевого
комитета
в
процессе
всего
экспериментов позволило сократить интервал для погрешности с 3…10% до
2…5%.
В процессе экспериментов было выяснено следующее:
1. Финансовые временные ряды, представленные ценами котировок акций,
являются нестационарными:
1.1
Ввиду того что финансовый временной ряд нестационарный
невозможно применить заранее обученные нейронные сети, потому что значения
математического ожидания и дисперсий для такого ряда, будут изменяться при
добавление каждого нового значения (например, результаты торгов за дневную
сессию);
1.2
Ряды являются не сезонными (рис.2.14), либо определение сезонной
компоненты чрезмерно осложненно шумами;
1.3
Ряд без первичной обработки («чистые» значения финансового
временного ряда) представляет из себя «белый шум».
57
2. Искусственные нейронные сети способны решать задачу прогнозирования
временных рядов и теоретически применимы для решения задачи регрессии в
финансовых временных рядах.
3. Применение ИНС для прогнозирования необработанных значений
финансового временного ряда привете к переобучению и «угадыванию» на
прогнозируемом интервале
4. Механизмы регуляризации при работе с не перекодированными данными
не позволяют решить проблему переобучения. В процессе прогнозирования
происходит «угадывание», об этом свидетельствует результат эксперимента
п.2.2 (табл. 2.1)
5. Сглаживание обучающей выборки посредством скользящих средних,
позволило сформировать тренд на прогнозируемом интервале, сонаправленный
с трендом на реальных значениях;
5.1
Исходный интервал прогноза, при использовании перекодированных
исходных данных в индикатор «линейно-взвешенной скользящей средней»
может быть расширен с 5 дней до 20 дней без потери качества прогноза.
Правильный выбор направление тренда с помощью ИНС сохраняется на
протяжении всего прогнозируемого интервала (рис.2.19)
5.2
Получение тренда на прогнозируемом интервале возможно в режиме
реального времени;
6. Взятие процентных приращений в качестве вида исходного ряда для
формирования обучающей выборки для нейронных сетей, обучаемых методом
обратного распространения сигнала, является целесообразным:
6.1
Применение L1, L2 и LeN регуляризации приводит к выпрямлению
ряда и нецелесообразно. Значение L1 и L2 много меньше единицы, поиск
значений в реальном времени осложнен отсутствием детерминированного
алгоритма поиска.
6.2
Использование квадрата невязки в качестве целевой функции при
обучении на процентных приращениях приводит к переобучению.
58
6.3
Для использования процентных приращений в качестве входов
нейронной сети, для дальнейшего обучения, необходимо изменить функцию
активации с квадрата невязки на функцию потерь Хьюбера.
6.4
Совокупное использование процентных приращений и функции
потерь Хьюбера позволило прогнозировать значение с горизонтом прогноза
равным 1 шагу (день, месяц, год).
6.5
При работе такой сети в режиме реального времени, при котором она
будет обучаться каждый раз, когда будет поступать новое значение временного
ряда (результаты торгов за день, за месяц, за год), разница между
прогнозируемом и реальным значением лежит в интервале от 3 до 10%
6.6
С учетом погрешности, вероятность успешного обучения такой сети,
при котором, ее выход будет меньше, либо равен среднему значению
отклонения, полученному в результате эксперимента равна 50%
7. Применение нейросетевого комитета с целью увеличения качества
прогноза путем уменьшения интервала погрешности целесообразно:
7.1
В результате работы нейросетевого комитета, нейронные сети,
входящие в состав, которого, были обучены на одной и той же обучающей
выборке, с уменьшающимся значением коэффициента оценки ошибки δ , удалось
добиться уменьшения интервала погрешности с 3…10% до 4…8%, при этом
сохранить частоту успешных обучений на уровне 50%;
7.2
Каскадное
увеличение
скрытых
слоев,
с
одновременным
увеличением коэффициента оценки ошибки δ, является не целесообразным.
Такой подход приводит к увеличению времени обучения всего комитета и не
оказывает существенного влияния на качество прогноза;
7.3
Увеличение количества эпох обучения для сетей с большим
значением коэффициента оценки ошибки δ позволило добиться увеличения
качества прогноза, путем уменьшения интервала погрешности при прогнозе с
4…8% до 2…5%, при этом удалось добиться увеличения вероятности успешного
обучения на 10%, P3a=60%
59
3 Информационная безопасность и защита информации
3.1 Краткая характеристика выполняемой работы
Цель
работы:
экспериментально
проверить
целесообразность
использования многослойного персептрона, обученного методом градиентного
спуска, для прогнозирования финансового временного ряда. Экспериментально
проверить целесообразность применения нейросетевого комитета, состоящего из
многослойных персептронов, обученных методом градиентного спуска.
Экспериментально
проверить
возможность
прогнозирования
на
перекодированных исходных данных в один из индикаторов технического
анализа. Реализовать в виде web-приложения наиболее успешную, по
результатам эксперимента, конфигурацию.
3.2 Характеристика защиты информации
Было принято решение, реализовать Web-приложение, в качестве
демонстрационного варианта, целью которого было бы показать работу
наиболее успешного варианта прогнозирования с использованием аппарата
искусственных нейронных сетей. Поскольку, результатом данной работы,
является некая бизнес-логика, которая может служить основой для различных
приложений, было принято решение рассмотреть две возможные ситуации её
применения:
1. Реализация клиентского приложения в виде Web-приложения, с
локальным сервером приложений;
2. Реализация в виде Web-приложения с удаленным сервером приложений.
3.3 Характеристика защиты информации для клиентского приложения с
локальным сервером приложений
Поскольку данный вид приложения является вариантом для частного
пользования, было принято решение реализовать его на схожем по синтаксису, с
бизнес-логикой, языке программирования -Shiny R.
Shiny-R – это Case-средство высокоуровневого языка программирования
R. Представляет из себя набор API для работы с Web-интерфейсом и Shiny-R-
60
сервером. Поскольку бизнес-логика реализована на языке R, надобность в
интеграции модулей, при использовании Shiny-R, отсутствует
3.3.1 Разграничение прав доступа и парольная политика
Разграничение
прав
внутри
приложения
данной
реализации
не
предусматривается. Ограничение доступа к данным происходит средствами
операционной
системы
и
сторонними
утилитами.
В
зависимости
от
использованной ОС это может быть:
1. Средства контроля доступа ОС:
1.1 «Средство управления профилями Windows»;
1.2 «Механизмы контроля доступа Linux».
2. Утилиты защиты файлов на жестком диске:
2.1 «HDD Password Protector для Windows»;
2.2 «Linux Unified Key Setup»
В обоих случаях существует норма требований к паролям для защиты
информации, в случае если жесткий диск или терминал был скомпрометирован,
к таким нормам относятся:
1. Длинна пароля;
1.1 Минимальное число символов- 8;
1.2 Максимальное число символов – 15.
2. Используемые символы;
2.1 Символы латинского алфавита (A-z);
2.2 Цифры 1-9(0);
2.3 Некоторые специальные символы (@,#,%,&,$).
3. Семантическая (смысловая) нагрузка пароля;
3.1 Не рекомендуется использовать личные данные в качестве пароля
(даты рождения, клички домашних животных, фамилии и т.д);
3.2 Не рекомендуется использовать открытые публичные данные в
качестве паролей;
3.3 Пароль должен быть обезличен, т.е, его вид никак не должен указывать
на пользователя.
61
3.3.2 Хранение и защита информации. Резервное копирование.
В качестве основного источника хранения информации внутри бизнеслогики были выбраны XML-файлы. В web-приложении в XML-файлах хранятся
параметры для инициализации ИНС, а также результаты прогнозов ИНС
предыдущих периодов. Так же имеется возможность сохранять нейронные сети
для их экспорта в другие системы (если понадобиться).
Защита XML-файлов на уровне файловой системы осуществляется
средствами операционной системы, описанными в п. 3.3.1.
Обеспечение
резервного
копирования
осуществляется
утилитой
«FWBACKUPS». Данная утилита позволяет гибко настраивать процесс
резервного копирования и работает под операционными системами Windows и
Lunix.
3.3.3 Защита от сетевых угроз и вредоносного по
В случае размещения приложения на терминале внутри сети, обеспечение
сетевой
безопасности
приложения
становиться
частью
обеспечения
безопасности сети. Первый уровень безопасности терминала с приложением
внутри сети обеспечивается средствами Firewall, в зависимости от используемой
операционной системы это может быть:
1. Брэндмауэр Windows;
2. Uncomplicated Firewall для Linux.
Обеспечение безопасности приложения в случае получения прямого
доступа к операционной или файловой системе описаны в п.3.3.1 и п.3.3.2. На
рисунке 27 изображена схема обеспечения безопасности приложения с
локальным Web-сервером.
Защита приложения
от вредоносного программного обеспечения,
осуществляется средствами антивирусного ПО конечного пользователя. По
мимо использования антивирусного ПО, существуют нормы безопасности в
сети,
соблюдение
которых
позволит
снизить
вероятность
персонального компьютера и как следствие кражу данных.
заражения
62
Интернет
Система контроля авторизации ОС
Firewall
Потенциальная
сетевая
угроза
Облако с резервными копиями
Резервное копирование
Персональный компьютер
Несанкционированный доступ к ПК
Резервное копирование
XML - Файлы конфигураций приложения
XML - Файлы логов прогноза
Несанкционированный доступ к ФС
Файловая система
Утилита шифрования
жестких дисков
Злоумышленник
Shiny R -сервер
Рисунок 3.1. Схема обеспечения безопасности приложения, размещенного на персональном
компьютере
К таким нормам относятся:
1. Внимательный серфинг в сети;
1.1
Нежелателен переход на web-сайты, сертификат хостинга которых
либо истек, либо отсутствует.
Переходы по различным баннерам и ссылкам, указанным в
1.2
публичных чатах или на не безопасных web-сайтах;
1.3
Нежелательно игнорировать предупреждения о безопасности внутри
используемого Web-браузера.
2. Менеджмент скачиваемого материала;
2.1
Не рекомендуется открывать файлы, скаченные из недостоверных
источников;
2.2
Запрещается предоставлять таким файлам права администратора или
суперпользователя;
63
2.3
Не рекомендуется запускать на персональном компьютере файлы
расширения .exe(Windows), или файлы расширения .tar;.tgz; .DEB; .RPM (Linux)
полученные из недостоверных источников;
2.4
Запрещается
предоставлять
таким
файлам
доступ
к
реестру(Windows) или системным папкам(Windows/Linux);
3.4 Характеристики защиты информации для web-приложения с удаленным
сервером приложений
Вторым вариантом реализации приложения является web-приложение с
удаленным web-сервером. Принципиальное отличие от реализации с локальным
web-сервером, состоит в том, что Shiny R – сервер размещается на удаленном
сервере. При такой реализации нецелесообразно использовать стандартный
Shiny Server, так как он не обеспечивает разграничение доступа, и ряд функций
необходимых
многопользовательской
работы,
а
также
поддержании
бесперебойной работы системы. В случае реализации удаленного web-сервера,
предлагается использовать Shiny Server PRO.Преимущества Shiny Server – PRO:
1. Оптимизированная работа любых приложений, написанных под Shiny R;
2. Возможность интегрированной системы авторизации (не требуется
вручную создавать блок авторизации);
3. Интегрированный модуль MySQL для работы с базами данных;
4. Возможность сбора динамической статистики посещений.
Недостатки Shiny-Server-PRO:
1. Отсутствие русскоязычной технической поддержки;
2. Стоимость аренды Shiny-Server-PRO-сервера (от 500$);
3. Возможность аренды только в коммерческих целях.
3.4.1 Разграничение прав и парольная политика
В случае аренды Shiny Server Pro, становиться возможным использовать
API для работы с внутренней базой данных, содержащей информацию о
пользователях и предоставляющих методы идентификации и аутентификации. В
следствии чего становиться актуальной проблема разграничения прав, для ее
решения предлагается использовать следующие типы учетных записей.
64
Таблица 3.1 Примеры основных групп пользователей приложения
Тип учетной записи
Права
Пользователь
Использование Web-приложения;
Взаимодействие с интерактивными
отчетами;
Воспользоваться обратной связью.
Администратор
Настройка скриптов приложения;
Настройка интерфейса;
Настройка сервера приложений (Webсервер);
Обеспечение безопасности приложения
и бизнес-логики;
Обеспечение
работоспособности
аппаратной серверной части.
Для того что бы обеспечить разграниченный доступ к приложению и его
настройкам, необходимо придерживаться предложенных (табл.6) типов учетных
записей, однако нормирование типов является не строгим и подразумевает
возможность более тонкой настройки прав доступа в случае необходимости.
Защита от средств взлома полным перебором (brutеforce) обеспечивается
минимальными требованиями к паролям:
Длинна пароля не меньше 8 символов;
Пароль содержит как минимум по одной букве разного регистра;
В пароле используются только буквы латинского алфавита;
В пароле не используются специальные символы и пробелы;
Для защиты паролей от атак семейства «фишинговых» в пароле не
допускается использование:
Персональной информации (даты рождения, фамилии родных, своя
фамилия и так далее);
Пароль должен быть уникальным для каждой учетной записи;
Не допускается хранить пароли в виде рукописной и цифровой записи;
Хранящиеся на цифровые носители пароли должны быть зашифрованы;
65
3.4.2 Резервное копирование. Защита и хранение данных. Бесперебойная
работа
Резервное копирование файлов осуществляется средствами Shiny Server
PRO. Сервер предоставляет внутренние API, служащие для копирования любых
файлов находящийся в своем поле доступа. Данные API имеют логический блок,
позволяющий настраивать время копирования, а также место и частоту.
Предполагается, что при переходе от реализации приложения с локальным
сервером-приложений к реализации приложения на Shiny Server Pro, большая
часть XML-файлов, отвечающих за хранения списочной информации будет
перенесена в привязанную к серверу базу данных MySQL.
Таким образом, средства для резервного копирования, в зависимости от вида
хранения данных представлены:
1. Средствами FileBackupAPI Shiny Server PRO;
2. Средствами утилиты MySQLDump.
Использование утилиты MySQLdump позволяет сохранять копии базы
данных в виде файлов SQL-скрипта. Такие файлы состоят из инструкций T-SQL
и позволяют в случае повреждения или утери БД восстановить ее путем полного
пересоздания. По сравнению с другими средствами создания резервных копии,
основанных на физическом копировании файлов БД, данный метод имеет ряд
плюсов:
1. Резервные копии занимают значительно меньший объём памяти, в случае
с большими БД, чем физический перенос;
2. Исключают утрату данных в следствии битового повреждения файла БД;
3. Не требуют полной остановки БД при копировании;
Обеспечение защиты локального доступа к базе данных осуществляется
средствами авторизации хостинг-сервера.
Защита от SQL-инъекций. Данный вид атаки, нацеленный на уязвимости в
параметрах транзакций SQL. Цель атаки, спровоцировать ошибку в SQL-запросе
и получить данные из уязвимой таблицы. Защита от подобных угроз
осуществляется в несколько шагов:
66
1. На стадии проектирования БД осуществляется полная настройка всех
полей всех таблиц (Значение по умолчанию, возможность пустых
значений и т.д);
2. В процессе формирования запросов текстовые параметры экранируются в
соответствии со стандартом T-SQL (Одинарные, либо двойные кавычки);
3. Настраиваются целые числа с плавающей точкой (верхняя и нижняя
граница знаков после нуля, используемый разделитель);
4. Форматы даты экранируются согласно стандарту T-SQL (Решетка, либо
одинарные кавычки);
5. В строковых параметрах указывается обязательно максимальная длинна,
причем длинна не должна указывать максимально возможная, без крайней
необходимости.
3.4.3 Способ защиты от сетевых угроз
В зависимости от размещения, защита от сетевых атак, обеспечивается
силами хостинг-сервиса, на котором будет размещен Shiny Server Pro, либо
тонкой настройкой сетевых протоколов безопасности, и межсетевых экранов. В
случае использования хостинг-сервиса, предполагается, что все нормы защиты
от сетевых угроз выполнены, и дополнительная настройка не требуется.
В случае использования персонального Web-сервера, предлагается
использовать Unix-подобные системы, ввиду свободного распространения
дистрибутивов, защита от сетевых угроз обеспечивается настройкой межсетевых
экранов, например, UFW. Данный Firewall является стандартным в системах
семейства linux и позволяет настраивать iptables для протоколов IPv4 и IPv6. В
основе данного межсетевого экрана лежит система пакетной фильтрации
Netfilter.
Защита входящего трафика осуществляется в несколько этапов:
1. Первичная
защита
на
роутерах
компании
поставщика
соединения;
2. Защита на личном маршрутизаторе;
3. Программная защита, реализуемая в операционные системы.
интернет
67
Защита на личном маршрутизаторе обеспечивается настройкой в
маршрутизаторе VLAN с сервером. Создание правил в протоколах безопасности.
XSS-Атака
Потенциальная угроза
Файловый сервер
Экранирование
входных
параметров
Web-Сервер:
Apache 2.4.33
Проверка доступности соединения
Глобальная сеть Internet
Запрос
Запрос на аутентификацию
Сервер-БД:
MySQL
Сервер приложений:
Shiny Server PRO
Прокси-сервер:
3proxy 0.8.10
Межсетевой экран:
UFW
Пользователь
DDos
Резервный сервер-БД
MySQL
Несанкционированный доступ
Процедура
Сервер-авторизации: аутентификации
MySQL
Потенциальная угроза
Рисунок 3.2. Схема защиты информации для реализации приложения с удаленным webсервером.
68
4 Обоснование экономической эффективности проекта
4.1 Расчёт затрат с учетом разработанной ИС
Результатом работы является готовая бизнес-логика, в виде набора файловскриптов готовых к продаже. Основным источником дохода является продажа,
полученных в результате эксперимента, реализаций ИНС в виде файловскриптов для дальнейшей разработки, на их основе, пользовательских
приложений.
Расходы на проделанную работу отражены в таблице 4.1
Таблица 4.1. Расходы, связанные с разработкой приложения
Сумма расходов за один календарный месяц
Статья расходов
Работа программиста
25000
Поскольку, результатом являются файлы-скрипты, написанные на
языке R, то одним из основных способов реализации приложения, будет
использование Web-приложения c удаленным web-сервером, основанным на
Shiny Server PRO. Учет расходов на подобную реализацию приведен в таблице
4.2
Таблица 4.2. Расходы, связанные с внедрением и эксплуатацией
Сумма расходов
Статья расходов
Оплата лицензии Shiny Server PRO
5200 руб./ месяц
Поддержка системы
2500 руб./месяц
Затраты на обучение персонала
1500 руб.
Таким
образом,
суммарные
расходы
на
момент
первого
года
использования составят:
Р = 50000 +5200*12+2500*12+1500 = 143900
Расходы в последующие года:
Рt =5200*12+1500*12 = 80400
4.2 Расчёт доходов с учетом разработанной ИС
Беря во внимание тот факт, что конечным пользователем может быть, как
финансовая компания, использующая полученные данные для инвестирования,
так и физическое лицо, использующее данные приложения для построения
69
прибыльной стратегии торгов рассчитаем полученную прибыль используя
модель распространения «Shareware»:
Тип лицензии
Таблица 4.3. Доходы с учетом разработанного приложения
Количество, шт.
Цена, руб.
Частная
200
500
Коммерческая
15
2000
Совокупный доход за 1 год равен:
Д = 200*500 + 2000*15 = 140000
4.3 Определение экономического эффекта и срока окупаемости проекта
Для
расчета
экономической
эффективности
дипломного
проекта
необходимо произвести расчеты, используя следующие показатели:
1. Чистый дисконтированный доход (ЧДД);
2. Индекс доходности;
3. Срок окупаемости.
ЧДД рассчитывается, как разность накопленного дисконтированного
дохода от реализации проекта и потока денежных средств проекта создания ИС:
T
ЧДД ( Д t Р t )
t 1
1
(1 ) t
(4.1)
Для расчета индекса доходности необходимо воспользоваться следующей
формулой:
T
1
(1 ) t
t 1
ИД T
1
t
Р
(1 ) t
t 1
Д
t
где:
1. Дt — доходы t-го периода,
2. Рt — расходы t-го периода,
3. Т — срок эксплуатации системы,
4. α — коэффициент дисконтирования.
5. Ставка дисконтирования = 8,25%, т. е. α = 0,0825;
(4.2)
70
6. Годовой доход = Дt – Рt
Расчет ЧДД представлен в таблице 4.4.
Таблица 4.4. Расчет ЧДД
Показатели
Доходы
Расходы
1
(1 ) t
Дисконтированные
Доходы
Расходы
1
2
3
4
5
Год.
эконом.
эффект
6
0
0
14390
1
130000
143900
0,926
130000
2
130000
80400
0,857
120092,4
3
130000
80400
0,794
110939,8
4
130000
80400
0,735
102484,9
5
130000
80400
0,681
94674,19
Итого:
650000
465500
143900
74272,555
2
68611,993
2
63382,938
58552,345
2
408719,83
2
-13900
45819,884
8
42327,796
8
39101,912
36121,844
8
149471,43
8
Года
558191,3
ЧДД
7
-11918,9164
36428,6704
31269,6256
26795,16
23002,5456
Рассчитаем индекс доходности:
ИД =
558191,3
= 1,36
408719,832
На основе полученных данных можно рассчитать срок окупаемости
проекта. График окупаемости представлен на рисунке 29
ГРАФИК ОКУПАЕМОСТИ
ЧДД
50000
ЧДД, РУБЛИ
0
0
1
2
3
4
5
6
-50000
-100000
-150000
-200000
ГОДА
Рисунок 4.1. График окупаемости
Исходя из графика, можно судить, что срок окупаемости составляет
примерно 1 год и 1 месяца.
71
Заключение
Целью
дипломной
работы
была
экспериментальная
проверка
применимости отдельных практик использования ИНС в раках прогнозирования
финансовых рядов, с целью поиска логики получения сигнала отличной от
существующей в настоящий момент на рынке, для которой не требовалось бы
привлечение эксперта на стадии проектирования для формирования базы знаний
В экспериментальной части были проведены ряд экспериментов с
обучением ИНС согласно поставленной цели. Были получены графики
аппроксимации и прогноза которые использовались для анализа результатов
эксперимента.
В
экспериментальной
части
2.2
было
рассмотрено
применение
необработанных данных финансового временного ряда для обучения ИНС с
регуляризацией.
В экспериментальной части 2.2.1 и 2.2.2 были рассмотрены варианты
перекодирования исходных данных с целью борьбы с шумом.
В
экспериментальной
части
2.3
было
рассмотрено
применение
нейросетевого комитета с целью проверить его влияние на качество прогноза
В следующей части было предложено два варианта реализации
результатов экспериментов в качестве web-приложения, представляющего собой
сигнальную системы, а также рассмотрены методы защиты информации для
каждого предложенного варианта
Последняя глава посвящена экономической эффективности сигнальной
системы. В результате расчетов ЧДД и других экономических показателей,
разработка ИС была оправдана с экономической точки зрения.
Конечным
продуктом
данной
работы,
является
web-приложение,
позволяющее пользователю инициализировать, обучать и использовать ИНС для
прогнозирования финансовых временных рядов.
72
Список источников информации
1. Э. Лефевр. Воспоминание биржевого спекулянта / Э.Лефевр – 3-е изд.,
перевод – П. Самсонов. :Поппури, 2018 г.
2. Фундаментальный анализ // Большая российская энциклопедия: [в 35 т.] /
гл. ред. Ю. С. Осипов. — М.: Большая российская энциклопедия, 2004—
2017.
3. Ефремова
Е.А,
Дунаев
Е.В
Применение
нейронных
сетей
для
прогнозирования финансовых временных рядов. // Доклад ТУРСУРа, 2004,
- с. 192 - 196
4. Эконометрика. Учебник / Под ред. Елисеевой И.И. — 2-е изд. — М.:
Финансы и статистика, 2006. — 576 с
5. Ежов А.А, Шумский С.А. Нейрокомпьютинг и его применение в
экономике и бизнесе. / А.А Ежов, С.А Шумский – М.: МИФИ, 1998. – с.224
6. Bernhard Schölkopf, Alexander J. Smola Learning with Kernels. Support
Vector Machines, Regularization, Optimization, and Beyond. — MIT Press,
Cambridge, MA, 2002
7. Подвальный Е.С, Маслобойщиков Е.В Особенности использования
нейросетевого прогнозирования финансовых временных рядов. // Вестник
Воронежского государственного технического университета, 2011, -с. 26 –
27
8. Гилл Ф., Мюррей У., Райт М. Практическая оптимизация // Пер. с англ.
Мир, 1985. –с.509
9. Каширина И.Л О методах формирования нейросетевых ансамблей в
задачах прогнозирования финансовых временных рядов. // Вестник
Воронежского государственного технического университета, 2009, -с. 116
– 117
73
Приложение 1
NeuralNersource.R
#
# Получить данные котировки
#
getDate <- function(name,from,to,src = "Finam")
{
value <- getSymbols(Symbol = name,src = src, from = from, to = to, auto.assign =
F)
Close.Value <- Cl(value)
return(Close.Value)
}
#
# Готовим обучающую выборку #
#
getTrain <- function(Data,predictionWindow)
{
Count <- length(Data)
rowCount <- Count - predictionWindow
Train <matrix(rep(0,rowCount*predictionWindow+1),rowCount,predictionWindow+1)
for(i in 1:rowCount)
{
Train[i, ] <- Data[i:(predictionWindow+i)]
}
return(Train)
}
Simulation <- function(Data.Entered)
{
74
choceMA <- switch(input$SelectType,"WMA" = 1, "SMA" = 2,"EMA"=3)
if(choceMA == 1) Data.Entered.MA <getWMA(Data.Entered(),input$IntervalInput)
if(choceMA == 2) Data.Entered.MA <-getSMA(Data.Entered(),input$IntervalInput)
if(choceMA == 3) Data.Entered.MA <-getEMA(Data.Entered(),input$IntervalInput)
browser()
Data.Entered.Train <- getTrain(Data = Data.Entered.MA,predictionWindow = 5)
Data.NN <- neuralnetwork(Data1.Train[,1:5],Data1.Train[,6],hiddenLayers =
c(50),sigmoidLayers = NA,lossFunction = "quadratic",validLoss = T,validProp =
0.2,standardize = T,regression = T)
Data.Pred <- predict(Data.NN,Data.Train[,1:5])
Data.Pred <- Data.Pred$prediction
x1 <- length(Data.Entered.MA)-5
Data.NP <- t(matrix(Data.Entered.MA[x1:length(Data.Entered.MA)],5))
for(i in 1:5)
{
Data.NP.Predict <- predict(Data.NN,Data.NP)
}
Data.NP.Predict.Fitted <- as.matrix(Data.NP.Predict$prediction)
for(i in 1:length(Data.NP.Predict.Fitted)) cap
{
Data.NP <- t(matrix(c(Data.NP[-1],Data.NP.Predict.Fitted[i])))
}
Data.NP <- matrix(Data.NP,1,5)
}
x<-sort(1:length(c(matrix(rep(NA),26),Data.Pred,Data.NP)))
k <- length(c(Data.Pred,Data.NP))-length(Data.Entered.MA)
h <- data.frame("x"= x,"PredictionValue" =
c(matrix(rep(NA),26),Data.Pred,Data.NP),"RealValue" =
c(as.numeric(Data.Entered),matrix(rep(NA))))
75
ggplot(h,aes(x=x,y=h$RealValue)) + geom_line(linetype = 1) + geom_line(aes(x =
x, y = h$PredictionValue),linetype = 2, col = "Red") + labs(x = "Day",y = "Value",
title = "Smooth Date Forecast") + theme(panel.background = element_rect(fill =
"gray90"))+geom_vline(aes(xintercept=length(Data.Entered)),linetype = 3)
}
### Функций нормализации ###
getNormalizeDate <- function(Data,type,a=0.5)
{
dataMin <- min(Data)
dataMax <- max(Data)
N <- length(Data)
normalizeData <- matrix(rep(0),N,1)
if(type == "L")
{
for(i in 1:N)
{
normalizeData[i] <- ((Data[i]-dataMin)/(dataMax - dataMin))
}
return(normalizeData)
}
else if(type == "nL")
{
xC <- (dataMin+dataMax)/2
for(i in 1:N)
{
normalizeData[i] <- (1/(exp(-a*(Data[i]-xC))))
}
return(normalizeData)
76
}
}
#
# Создаем нейронку и обучаем
#
getNeuroNet <- function(Train,predictionWindow = 5, NNCom = F, varNNCom = 0,
hiddenLayers = c(50))
{
if(NNCom == F)
{
NeuralNet <- neuralnetwork(X = Train[,1:predictionWindow],y =
Train[,predictionWindow+1],hiddenLayers = hiddenLayers, learnRate =
0.001,verbose = T,sigmoidLayers = c(1),lossFunction = "quadratic",regression =
T,L2 = 1,standardize = T)
return(NeuralNet)
}
}
getPersentAddition <- function(data)
{
data.num <- as.numeric(data)
k<-length(data.num)
data.pADD <- matrix(rep(NA),k)
for(i in 2:k)
{
data.pADD[i] <- data.num[i]/data.num[i-1]
}
data.pADD[1] <- 1
return(data.pADD)
}
getWMA <-function(Data,Window)
77
{
Data.WMA <- TTR::WMA(Data,Window)
cut<-length(Data.WMA) - Window
Data.Result <- matrix(rep(0),cut,1)
for(i in 1:length(Data.Result))
{
Data.Result[i] <- Data.WMA[i+Window]
}
return(Data.Result)
}
getSMA <-function(Data,Window)
{
Data.SMA <- TTR::SMA(Data,Window)
cut<-length(Data.SMA) - Window
Data.Result <- matrix(rep(0),cut,1)
for(i in 1:length(Data.Result))
{
Data.Result[i] <- Data.SMA[i+Window]
}
return(Data.Result)
}
getEMA <-function(Data,Window)
{
Data.EMA <- TTR::EMA(Data,Window)
cut<-length(Data.EMA) - Window
Data.Result <- matrix(rep(0),cut,1)
for(i in 1:length(Data.Result))
{
78
Data.Result[i] <- Data.EMA[i+Window]
}
return(Data.Result)
}
XMLSave.R
doc = newXMLDoc()
document = newXMLNode("Document", doc = doc)
set = newXMLNode("Settings", parent = document)
elements = newXMLNode("Elements", parent = set)
newXMLNode("Neuralnet", parent = elements, attrs = c(NeuralNetArtibb =
Data1.NN$y_val))
objcol = newXMLNode("ObjectCollection", parent = document)
timeSeries1 = newXMLNode("Timeseries", parent = objcol)
timeSeries2 = newXMLNode("Timeseries", parent = objcol)
cat(saveXML(doc,
indent = TRUE,
prefix = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n"),
file="test.xml")
result <- xmlParse(file = "test.xml")
result
rootnode <-xmlRoot(result)
rootsize <-xmlSize(rootnode)
Neuralnet <- xmlToList(rootnode[[1]])
NeuralAssambly.R
Data1.Persents <- getPersentAddition(Data1)
79
Data1.Pers.Train <- getTrain(Data1.Persents,5)
#Комитет (5)
Data1.NN.1 <neuralnetwork(Data1.Pers.Train[,1:5],Data1.Pers.Train[,6],hiddenLayers =
c(50,10,10),sigmoidLayers = NA,maxEpochs = 1800,lossFunction =
"quadratic",validLoss = T,learnRate = 0.001,earlyStop = T,momentum =
0,standardize = T,validProp = 0.20,regression = T,L2 = 0.2)
Data1.NN.2 <neuralnetwork(Data1.Pers.Train[,1:5],Data1.Pers.Train[,6],hiddenLayers =
c(50,10,10),sigmoidLayers = NA,maxEpochs = 1600,lossFunction =
"quadratic",validLoss = T,learnRate = 0.001,earlyStop = T,momentum =
0,standardize = T,validProp = 0.20,regression = T,L2 = 0.21)
Data1.NN.3 <neuralnetwork(Data1.Pers.Train[,1:5],Data1.Pers.Train[,6],hiddenLayers =
c(50,10,10),sigmoidLayers = NA,maxEpochs = 1400,lossFunction =
"quadratic",validLoss = T,learnRate = 0.001,earlyStop = T,momentum =
0,standardize = T,validProp = 0.20,regression = T,L2 = 0.22)
Data1.NN.4 <neuralnetwork(Data1.Pers.Train[,1:5],Data1.Pers.Train[,6],hiddenLayers =
c(50,10,10),sigmoidLayers = NA,maxEpochs = 1200,lossFunction =
"quadratic",validLoss = T,learnRate = 0.001,earlyStop = T,momentum =
0,standardize = T,validProp = 0.20,regression = T,L2 = 0.23)
Data1.NN.5 <neuralnetwork(Data1.Pers.Train[,1:5],Data1.Pers.Train[,6],hiddenLayers =
c(50,10,10),sigmoidLayers = NA,maxEpochs = 1000,lossFunction =
"quadratic",validLoss = T,learnRate = 0.001,earlyStop = T,momentum =
0,standardize = T,validProp = 0.20,regression = T,L2 = 0.24)
#Предикт для комитета
Data1.Pred.1 <- predict(Data1.NN.1,Data1.Pers.Train[,1:5])
Data1.Pred.2 <- predict(Data1.NN.2,Data1.Pers.Train[,1:5])
Data1.Pred.3 <- predict(Data1.NN.3,Data1.Pers.Train[,1:5])
Data1.Pred.4 <- predict(Data1.NN.4,Data1.Pers.Train[,1:5])
Data1.Pred.5 <- predict(Data1.NN.5,Data1.Pers.Train[,1:5])
80
Data1.Pred.1 <- Data1.Pred.1$prediction
Data1.Pred.2 <- Data1.Pred.2$prediction
Data1.Pred.3 <- Data1.Pred.3$prediction
Data1.Pred.4 <- Data1.Pred.4$prediction
Data1.Pred.5 <- Data1.Pred.5$prediction
#Оценка предикта руководителем
Data1.General.Pred <- matrix(rep(NA,1,length(Data1.Pred.1)))
for(i in 1:length(Data1.General.Pred))
{
Data1.General.Pred[i] <sum(Data1.Pred.1[i],Data1.Pred.2[i],Data1.Pred.3[i],Data1.Pred.4[i],Data1.Pred.5[i])
/5
}
Data1.NP.1 <- t(matrix(Data1.Persents[1040:1044],5))
Data1.NP.2 <- t(matrix(Data1.Persents[1040:1044],5))
Data1.NP.3 <- t(matrix(Data1.Persents[1040:1044],5))
Data1.NP.4 <- t(matrix(Data1.Persents[1040:1044],5))
Data1.NP.5 <- t(matrix(Data1.Persents[1040:1044],5))
for(i in 1:5)
{
Data1.NP.1.Predict <- predict(Data1.NN.1,Data1.NP.1)
Data1.NP.1.Predict.Fitted <- as.matrix(Data1.NP.1.Predict$prediction)
81
for(i in 1:length(Data1.NP.1.Predict.Fitted))
{
Data1.NP.1 <- t(matrix(c(Data1.NP.1[-1],Data1.NP.1.Predict.Fitted[i])))
}
Data1.NP.1 <- matrix(Data1.NP.1,,5)
}
for(i in 1:5)
{
Data1.NP.2.Predict <- predict(Data1.NN.2,Data1.NP.2)
Data1.NP.2.Predict.Fitted <- as.matrix(Data1.NP.2.Predict$prediction)
for(i in 1:length(Data1.NP.2.Predict.Fitted))
{
Data1.NP.2 <- t(matrix(c(Data1.NP.2[-1],Data1.NP.2.Predict.Fitted[i])))
}
Data1.NP.2 <- matrix(Data1.NP.2,,5)
}
for(i in 1:5)
{
Data1.NP.3.Predict <- predict(Data1.NN.3,Data1.NP.3)
Data1.NP.3.Predict.Fitted <- as.matrix(Data1.NP.3.Predict$prediction)
for(i in 1:length(Data1.NP.3.Predict.Fitted))
{
Data1.NP.3 <- t(matrix(c(Data1.NP.3[-1],Data1.NP.3.Predict.Fitted[i])))
}
Data1.NP.3 <- matrix(Data1.NP.3,,5)
}
for(i in 1:5)
{
82
Data1.NP.4.Predict <- predict(Data1.NN.4,Data1.NP.4)
Data1.NP.4.Predict.Fitted <- as.matrix(Data1.NP.4.Predict$prediction)
for(i in 1:length(Data1.NP.4.Predict.Fitted))
{
Data1.NP.4 <- t(matrix(c(Data1.NP.4[-1],Data1.NP.4.Predict.Fitted[i])))
}
Data1.NP.4 <- matrix(Data1.NP.4,,5)
}
for(i in 1:5)
{
Data1.NP.5.Predict <- predict(Data1.NN.5,Data1.NP.5)
Data1.NP.5.Predict.Fitted <- as.matrix(Data1.NP.5.Predict$prediction)
for(i in 1:length(Data1.NP.5.Predict.Fitted))
{
Data1.NP.5 <- t(matrix(c(Data1.NP.5[-1],Data1.NP.5.Predict.Fitted[i])))
}
Data1.NP.5 <- matrix(Data1.NP.5,,5)
}
#Оценка нового значения руководителем
Data1.General.NP <- matrix(rep(NA,1,length(Data1.NP.1)))
for(i in 1:length(Data1.General.NP))
{
Data1.General.NP[i] <sum(Data1.NP.1[i],Data1.NP.2[i],Data1.NP.3[i],Data1.NP.4[i],Data1.NP.5[i])/5
}
x<-sort(1:length(c(matrix(rep(NA),5),Data1.General.Pred,Data1.General.NP)))
k <- length(c(Data1.General.Pred,Data1.General.NP))-length(Data1.Persents)
83
h <- data.frame("x"= x,"PredictionValue" =
c(matrix(rep(NA),5),Data1.General.Pred,Data1.General.NP),"RealValue" =
c(as.numeric(Data1.Persents),matrix(rep(NA),5)))
ggplot(h,aes(x=x,y=h$RealValue)) + geom_line(linetype = 1) + geom_line(aes(x = x,
y = h$PredictionValue),linetype = 2, col = "Red") + labs(x = "День",y = "Значение",
title = "Результат работы нейросетевого комитета") + theme(panel.background =
element_rect(fill = "gray90"))+geom_vline(aes(xintercept=length(Data1)),linetype =
3)
PersentAddition.R
dataTestPurr.NN <neuralnetwork(dataTestPurr.Train[,1:5],dataTestPurr.Train[,6],hiddenLayers =
c(50,10),sigmoidLayers = NA,lossFunction = "huber",dHuber = 0.2,validLoss =
T,learnRate = 0.001,earlyStop = T,momentum = 0,standardize = T,validProp =
0.20,regression = T)
plot(dataTestPurr.NN,main = "Функция ошибки на обучающем и валидационном
множествах")
Data1.Pred <- predict(dataTestPurr.NN,dataTestPurr.Train[,1:5])
Data1.Pred <- Data1.Pred$prediction
Data1.NP <- t(matrix(dataTestOurr.PA[1084:1088],5))
for(i in 1:5)
{
Data1.NP.Predict <- predict(dataTestPurr.NN,Data1.NP)
Data1.NP.Predict.Fitted <- as.matrix(Data1.NP.Predict$prediction)
for(i in 1:length(Data1.NP.Predict.Fitted))
{
Data1.NP <- t(matrix(c(Data1.NP[-1],Data1.NP.Predict.Fitted[i])))
}
Data1.NP <- matrix(Data1.NP,,5)
}
x<-sort(1:length(c(matrix(rep(NA),5),Data1.Pred,Data1.NP)))
k <- length(c(Data1.Pred,Data1.NP))
84
h <- data.frame("x"= x,"PredictionValue" =
c(matrix(rep(NA),5),Data1.Pred,Data1.NP),"RealValue" =
c(as.numeric(dataTestOurr.TestPA),matrix(rep(NA),2)))
ggplot(h,aes(x=x,y=h$RealValue)) + geom_line(linetype = 1) + geom_line(aes(x = x,
y = h$PredictionValue),linetype = 1, col = "Red") + labs(x = "День",y = "Значение",
title = "Результат обучения ИНС с функцией потерь Хьюбера") +
theme(panel.background = element_rect(fill =
"gray90"))+geom_vline(aes(xintercept=length(Data1)),linetype = 3)
SignalWebSystem.R
library(shiny)
library(shinydashboard)
source("NeuralNetSource.R")
# Define UI for application that draws a histogram
ui <- dashboardPage(
dashboardHeader(title = "Simple Trend-signal System"),
dashboardSidebar(
sidebarMenu(
menuItem("Trend forecast", tabName = "Ts", icon = icon("bar-chart-o")),
sliderInput("IntervalInput",label = "Enter the forecast interval",min = 5,max =
20,step = 1,value = 5),
textInput("TextInput",label = "Specify a financial instrument",placeholder =
"GOOG - Google, APPL - Apple, EURUSD - Euro-Dollar"),
radioButtons("SelectType",label = "Select type of traning date",choices =
c("SMA","WMA","EMA"),selected = "WMA"),
actionButton("Search",label = "Loading porfolios")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "Ts",
85
fluidRow(
box(title = "Trend Prediction",status = "info",solidHeader = TRUE,background
= "black",height = 900,width = 7,plotOutput("plot1",height = 900))),
verbatimTextOutput("console"),
hr())
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
values <- reactiveValues()
Data.Entered <- eventReactive(input$Search, {
getDate(name = input$TextInput,from = "2014-01-01",to = Sys.Date())
})
observeEvent(input$Search, {
choceMA <- switch(input$SelectType,"WMA" = 1, "SMA" = 2,"EMA"=3)
if(choceMA == 1) Data.Entered.MA <getWMA(Data.Entered(),input$IntervalInput)
if(choceMA == 2) Data.Entered.MA <getSMA(Data.Entered(),input$IntervalInput)
if(choceMA == 3) Data.Entered.MA <getEMA(Data.Entered(),input$IntervalInput)
Data.Entered.Train <- getTrain(Data = Data.Entered.MA,predictionWindow =
input$IntervalInput)
86
Data.NN <neuralnetwork(Data.Entered.Train[,1:input$IntervalInput],Data.Entered.Train[,input$
IntervalInput+1],hiddenLayers = c(50),sigmoidLayers = NA,lossFunction =
"quadratic",L1 = 2,L2 = 3,validLoss = T,validProp = 0.2,standardize = T,regression =
T)
logText <- reactive({
values[["log"]] <- capture.output(data <- Data.NN)})
output$console <- renderPrint({
logText()
return(print(values[["log"]]))})
Data.Pred <- predict(Data.NN,Data.Entered.Train[,1:input$IntervalInput])
Data.Pred <- Data.Pred$prediction
x1 <- length(Data.Entered.MA)-(input$IntervalInput-1)
Data.NP <t(matrix(Data.Entered.MA[x1:length(Data.Entered.MA)],input$IntervalInput))
for(i in 1:input$IntervalInput)
{
Data.NP.Predict <- predict(Data.NN,Data.NP)
Data.NP.Predict.Fitted <- as.matrix(Data.NP.Predict$prediction)
for(i in 1:length(Data.NP.Predict.Fitted))
{
Data.NP <- t(matrix(c(Data.NP[-1],Data.NP.Predict.Fitted[i])))
}
Data.NP <- matrix(Data.NP,1,input$IntervalInput)
}
x<-sort(1:length(c(matrix(rep(NA),input$IntervalInput*2),Data.Pred,Data.NP)))
k <- length(c(Data.Pred,Data.NP))-length(Data.Entered.MA)
h <- data.frame("x"= x,"PredictionValue" =
c(matrix(rep(NA),input$IntervalInput*2),Data.Pred,Data.NP),"RealValue" =
c(as.numeric(Data.Entered()),matrix(rep(NA),input$IntervalInput)))
87
output$plot1 <- renderPlot({ ggplot(h,aes(x=x,y=h$RealValue)) +
geom_line(linetype = 1) + geom_line(aes(x = x, y = h$PredictionValue),linetype = 2,
col = "Red") + labs(x = "Day",y = "Value", title = "Smooth Date Forecast") +
theme(panel.background = element_rect(fill =
"gray90"))+geom_vline(aes(xintercept=length(Data.Entered())),linetype = 3)})
})
}
# Run the application
shinyApp(ui = ui, server = server)
Отзывы:
Авторизуйтесь, чтобы оставить отзыви хорошего настроения
удачи
успехов в конкурсе
Наверное было затрачено много времени и труда на работу
Продолжай свое исследование
Админам респект
И продвижения статьи в топы?
Как на счет взаимных комментариев под работами?)
Красиво написанная работа
Так держать
Молодец
Интересная работа!