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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    852,7 Кб
  • Опубликовано:
    2017-02-18
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

СОДЕРЖАНИЕ

 

Введение

. Прогнозирование на фондовом рынке с помощью нейронных сетей

.1 Рынок ценных бумаг

.2 Степень разработанности темы в научной литературе

.3 Нейронные сети

.4 Цели и задачи исследования

. Разработка собственной модели решения

.1 Определение типа нейронной сети

.2 Определение входных данных и их обработка

.3 Архитектура нейронной сети

.4 Точность результата

.5 Моделирование торговли

. Применение разработанного решения

.1 Входные данные

.2 Предобработка данных

.3 Дополнительные объясняющие переменные

.4 Нейронная сеть прямого распространения сигнала

.4.1 Прогнозирование объёма

.4.2 Прогнозирование цены

.5 Рекуррентная нейронная сеть Элмана

.5.1 Прогнозирование объёма

.5.2 Прогнозирование цены

.6 Оценки ошибок

.7 Моделирование торговли

Заключение

Список использованных источников

Приложения

ВВЕДЕНИЕ


Рынок ценных бумаг, он же фондовый рынок, представляет собой публичную торговую площадку для торговли акциями различных компаний. Прогнозирование на рынке ценных бумаг - это попытка определить будущую цену акции компании. Успешное предсказывание цены может принести огромную прибыль торговцу. Одна из основных гипотез заключается в предположении, что цены на акции формируются исходя из всей доступной информации в мире о данных компаниях. Желание узнать будущую картину на фондовом рынке дало толчок развитию нескольких методологий для предсказывания ситуаций на рынке ценных бумаг. Выделяют три главные категории на которые разделяют существующие методологии, используемые для предсказывания цены акций: фундаментальный анализ, технический анализ и технологические методы. Каждая такая методология направлена на максимизация точности предсказания. При этом различные методологии предсказывают либо точное значение конечной цены, либо тренд движения цены в определенном временном интервале.

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

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

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

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

1.      ПРОГНОЗИРОВАНИЕ НА ФОНДОВОМ РЫНКЕ С ПОМОЩЬЮ НЕЙРОННЫХ СЕТЕЙ

 

.1 РЫНОК ЦЕННЫХ БУМАГ


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

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

Большинство акций фирм торгуется на виртуальном фондовом рынке, например NASDAC. Фактические торговли происходят в виде специфичного аукциона, на котором потенциальный покупатель объявляет об определённой цене за которую он готов купить акции, а потенциальный покупатель, в свою очередь, афиширует свою цену на имеющуюся у него интеллектуальную собственность.

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

1.2 СТЕПЕНЬ РАЗРАБОТАННОСТИ ТЕМЫ В НАУЧНОЙ ЛИТЕРАТУРЕ

нейронный сеть прогнозирование торговля

Нейронные сети повсеместно применяются для прогнозирования всевозможных исходов на протяжении последних лет. Область фондового рынка не является исключением. Первыми трудами в данной области, считаются работы Питтса и Мак-Каллока3, которые стали первопроходцами в данной сфере. В своей работе Мак-Каллок и Питтс попытались понять как человеческий мозг генерирует высоко сложные решения используя в качестве основы базовые мозговые клетки. Они первыми формируют понятие нейрона, взяв описание и нейробиологии. В качестве отдельной литературы можно выделить работы Mingyue Qiu4, Yu Song, Fumio Akagi5, в которых приводится качественный анализ выбора корректных входных данных для обучения нейронной сети. В области систематизации информации можно выделить работы Хайкина6, Круглова7 и Бишопа8. В целом, можно сказать, что по данной теме существует множество научных работ, однако её степень разобранности еще далеко от полноты.

1.3 НЕЙРОННЫЕ СЕТИ

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

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

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

В частности, задачи можно разбить на следующие пункты:

•        ознакомиться с структурой базовой нейронной сети

•        ознакомиться с существующими видами структур нейронной сети

•        ознакомиться с различными методами обучения нейронных сетей

•        определить объект для исследования в виде технологической компании, акции которой торгуются на бирже NASDAQ

•        изучить доступные данные, произвести их препроцессинг (предобработку), ввести необходимые собственные дополнительные переменные

•        определить необходимую структуру нейронной сети для решения поставленной цели

•        произвести обучение нейронной сети

•        удостовериться в качестве полученного результата, измерить точность искусственной нейронной сети

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

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

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

3. Распределённость. Каждый нейрон сети несёт в себе уникальное количество информации, что обеспечивает общую устойчивость и быструю скорость обработки информации системы.

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

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

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

7. Гибкость. Искуственные нейронные сети, наряду с свойством адаптивности, также могут быть легко перестроены в своей структуре. В процессе работы возможно менять количество слоев и изменять количество нейронов в них.

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

9. Масштабируемость. Масштабируемость нейронных сетей обеспечивается благодаря параллельной структуре нейронных сетей.

Нейронная сеть подразумевает несколько основных главных принципов построения. Эти принципы необходимо явно определить при построении любой подобной сети, так как их выбор будет определять её функциональность.

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

Сама концепция нейронной сети10, описанная вкратце в предыдущем абзаце, была привнесена из области биологии. В биологии уже существуют нейронные системы. Можно провести аналогию между строением человеческого мозга и строением нейронный сети. Мозг является явным доказательством того, что параллельные системы существуют в жизни и успешно работают. Основной составляющей нейронной сети является сам нейрон. Передача сигнала от одного нейрона к другому через синапсы является сложным химическим процессом, в ходе которого специфичные трансмиттерные субстанции высвобождаются от посылающего сигнал соединения. Эффект заключается в повышении или в понижении электрического потенциала внутри тела получающей сообщение клетки. Если данный потенциал преступает порог, то нейрон принимает соответствующее действие. Именно подобную характеристику искусственная нейронная сеть и пытается воспроизвести. Нейронная модель изображенная на рисунке 1 является наиболее распространенной и используемой моделью.


Рисунок 1. Структура искусственного нейрона

Каждый набор связей (x) описывается соответствующим весом (w). Вес нейрона может принимать положительные и отрицательные значения в зависимости от эффекта входящего сигнала. Входные сигналы складываются сумматором, который представляет из себя операцию линейной комбинации. В конечном счете, функция активации преобразует выходный сигнал в нормализованный под заданный диапазон значений.

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

Каждая нейронная сеть должна иметь в своём составе как минимум две составляющие: входные данные и выходной слой. Количество скрытых слоев и количество нейронов в них неограниченно и зависит от спецификации задачи. На рисунке 2 изображена типичная двухслойная нейронная сеть прямого распространения сигнала.

Рисунок 2. Схема двухслойной нейронной сети прямого распространения сигнала (входной слой не учитывается)11

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

Формула 1. Формула активации нейрона

где S - активация нейрона, X - входное значение нейрона, w - вес нейрона, n - число нейронов в предыдущем слое, тета - порог активации









Рисунок 3. Схема суммирования значений нейронов в скрытом слое

Полученная взвешенная сумма S нейрона скрытого слоя, полученная формулой выше, является аргументом нелинейной функции f(S), которая создаёт выходное значение скрытого слоя Y:

= f(S)

Формула 2. Выходное значение скрытого слоя

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

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

Рисунок 4. Возможные функции активации12

На практике, зачастую используют лишь несколько функций. Например, большой популярностью пользуется логистическая функция активации, которая выдаёт значения на промежутки от 0 до 113.

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

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

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

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

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

Кроме нейронной сети прямого распространения сигнала, существуют также рекуррентные нейронные сети. Их особенностью, в отличие от классических нейронных сетей, является наличие циклов - обратных связей, благодаря которым информация может циклично поступать из выходного обратного во входной слой. Рекуррентные нейронные сети обладают следующими характеристиками14:

•        все биологические нейронные сети являются рекуррентными

•        известно несколько алгоритмов обучения, при этом ни один из них не признан лучшим

•        теоретические и практические сложности препятствуют лёгкому внедрению в реальной жизни. Наличие обратных связей в рекуррентных сетях способствует более производительной работе таких сетей.

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

В качестве примеров подобных видов рекуррентных нейронных сетей можно привести такие сети, как нейронная сеть Элмана15, нейронная сеть Джордана, которые получаются из многослойного перцептрона введением обратных связей16.

1.4 ЦЕЛИ И ЗАДАЧИ ИССЛЕДОВАНИЯ

Объект исследования - фондовые рынки. В частности, фондовый рынок NASDAQ.

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

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

Для эффективного выполнения поставленной цели, в данной работе

решаются следующие задачи:

•        предложить собственную спецификацию нейронной сети для прогнозирования ценовых показателей на фондовом рынке

•        сравнить несколько видов нейронных сетей и выбрать наиболее эффективную для решения поставленной цели

•        продемонстрировать возможность корректного прогнозирования показателей цены акций на фондовых рынках с помощью разработанных моделей нейронных сетей

•        создать нейронную сеть на практике, способную делать прогноз на основании входных данных

•        добиться показателя точности нейронной сети не менее 70%

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

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

2.      РАЗРАБОТКА СОБСТВЕННОЙ МОДЕЛИ РЕШЕНИЯ


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

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

2.1    ОПРЕДЕЛЕНИЕ ТИПА НЕЙРОННОЙ СЕТИ


Классические нейронные сети, модель работы которых описана в первой главе, идеально подходят для решения проблем классификации. Проблемы, в которых каждому отдельному сигналу X существует единственный Y. Другими словами, сети прямого распространения сигнала хорошо подходят для решения задач функционального маппинга. Формулой данное заявление можно отобразить следующим образом:

(t)= W*X(t)

Формула 3. Прямое распространение сигнала

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

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

(t)=W*X(t) + Y(t-1)

Формула 4. Рекуррентное распространение сигнала

Таким образом более подходящей архитектурой нейронной сети для решения поставленной задачи прогнозирования является рекуррентная сеть.

2.2    ОПРЕДЕЛЕНИЕ ВХОДНЫХ ДАННЫХ И ИХ ОБРАБОТКА


Прогноз будущих значений цен на акции формируются за счёт предыдущих значений цен на акции. Главной объясняющей переменной является сама цена на акцию в прошлом и чем ближе к текущему периоду времени значение цены, тем большее влияние она оказывает на текущее формирование цены. Таким образом, обязательной составляющей входных данных является последовательность значений цены на акции фирмы.

Кроме этого, основываясь на работе C.M. Anish и Babita Majhi17, есть основания добавить в анализ значение объёмов торгов. Исследования, описанные в указанной работе, указывают на наличие корреляции между движением значений объема торгов и значения цены на акции. Данный параметр, как и параметр цены, формируется на базе последовательности значений объема за предыдущие периоды.

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

Прогноз значений переменной на будущие периоды, основываясь на значениях предыдущих оказывается более точным, если добавить дополнительные объясняющие зависимые переменные18. В качестве дополнительных переменных мною были взяты скользящие средние длиною в 20 окон, которые формировались отдельно для прогнозирования объёма торгов и цены акции.

2.3    АРХИТЕКТУРА НЕЙРОННОЙ СЕТИ


В качестве инструмента прогнозирования на основе временных рядов, в данной работе будут использованы нейронные сети. Является целесообразным опробовать качество работы несколько видов нейронных сетей на сформированных входных данных.

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

Рисунок 5. Пример архитектуры сети Элмана

Таким образом, на данном этапе не будет выбрана одна из двух типов нейронных сетей, а протестированы обе.

2.4    ТОЧНОСТЬ РЕЗУЛЬТАТА

Absolute Error (MAE) - средняя абсолютная ошибка

mean-square error (RMSE)

Mean Squared Logarithmic Error (RMSLE)


На данном этапе следует определить размер полученной ошибки спрогнозированных данных на тестовой выборке. Установив порог качества в фиксированное значение, превышение или недобор до установленной планки будет означать успех или провал эксперимента. Конкретное значение порога является условным и он должен корректироваться исходя из требований каждого отдельного эксперимента. В качестве эксперимента проводимого в рамках текущей работы, определим порог качества в области нуля.

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

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

2.5    МОДЕЛИРОВАНИЕ ТОРГОВЛИ


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

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

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

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

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

В качестве оценки полезности получаемой от построенной нейронной сети информации предлагается произвести тестовую торговлю на рынке ценных бумаг, выбрав различные опционы для генерализации результата проведенной торговли. Как изначальный капитал принимаем сумму в 100.000$ и используем её в торговле на рынке с помощью полученного инструмента.

3.      ПРИМЕНЕНИЕ РАЗРАБОТАННОГО РЕШЕНИЯ


В данной главе будет разобран пример реализации нейронной сети, обученной на выборке данных временных рядов с фондового рынка NASDAQ.

Работа будет производиться в программном обеспечении RStudio на языке программирования R.

Данные были взяты с сайта www.nasdaq.com  <#"896807.files/image010.jpg">

Рисунок 6. Входные данные в исходном виде

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

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

В итоге, цена закрытия в период t будет прогнозироваться исходя из значений периода t-1 двух независимых переменных:

•        объём торговли

•        цена закрытия

3.2    ПРЕДОБРАБОТКА ДАННЫХ


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

Рисунок 7. Итоговые нормализованные независимые переменные

3.3    ДОПОЛНИТЕЛЬНЫЕ ОБЪЯСНЯЮЩИЕ ПЕРЕМЕННЫЕ


Оставив две независимые переменные, как основополагающие признаки для дальнейшей работы имеет смысл ввести дополнительные зависимые переменные, которые свяжут значения цены закрытия за несколько предыдущих периодов. Данную функцию хорошо выполняют индикаторы технического анализа, такие как скользящее среднее. Согласно работе Nikfarjam, Emadzadeh, & Muthaiyah, 2010, технические индикаторы являются более информативными чем голые показатели цен.

Список технических индикаторов, включенных в анализ:

•        EMA (Exponential moving average) - экспоненциальная скользящая средняя

•        ZLEMA (Zero lag exponential moving average) - экспоненциальная скользящая средняя без лагов

•        SMA (Simple moving average) - простая скользящая средняя

•        EVWMA (Elastic Volume Weighted Moving Average) - эластичная взвешенная скользящая средняя от объёма

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

Итоговая таблица выглядит следующим образом:

Рисунок 8. Используемые переменные для прогнозирования цены

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

Аналогичный процесс был проделан и для переменной “объём”.

3.4 НЕЙРОННАЯ СЕТЬ ПРЯМОГО РАСПРОСТРАНЕНИЯ СИГНАЛА

 

.4.1 ПРОГНОЗИРОВАНИЕ ОБЪЁМА

В первую очередь, необходимо было построить нейронную сеть для прогнозирования объёма продаж. Формула нейронной сети для объёма выглядела следующим образом:

volume ~ ema.20 + sma.20 + zlema.20 + x1 + x2 + x3 + x4 + x5


где первые три переменные - скользящие средние, а последующие пять - значения объёмов в предыдущие периоды (x1 - в t-1 периоде, x2 - в t-2 периоде и так далее)

Разделив выборку на обучающую и тестируемую, я получил 452 наблюдения на обучение и 50 на тестирование. Используя обучающие данные и применив их для обучения нейронной сети, структура которой описана в предыдущей главе, я получил нейронную сеть со следующими параметрами:

Рисунок 9. Схема нейронной сети для прогнозирования объёма торгов

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

Чтобы проверить качество работы данной нейронной сети, я подал ей на вход 20 известных последних значений объёма торгов акциями. На каждой итерации нейронная сеть генерировала новое последующее значение объёма, которое я использовал для перерасчета скользящих средних и подавал новые данные обратно на вход нейронной сети.

Проверив работу данной нейронной сети на тестирующей выборке, я получил следующий результат.

Рисунок 10. Сравнение предсказанных значений объёма нейронной сети с реальными данными. (черным - реальные данные, красным - предсказанные данные)

Можно заметить, что нейронная сеть успешно вписалась в средние значения реальных цифр и идентично повторила тренд.

 

.4.2 ПРОГНОЗИРОВАНИЕ ЦЕНЫ

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

 

close ~ volume + ema.20 + sma.20 + evwma.20 + zlema.20 + x1 + x2 +

x3 + x4 + x5

где volume - объём торговли, другие 4 переменные - это рассмотренные выше скользяще средний по предыдущим 20 значениям цены, и отдельно взятые цены закрытия акций за предыдущие пять периодов.

Применяя схожий алгоритм, как и в случае создания сети для прогнозирования объёма, я получил следующий вид нейронной сети:

Рисунок 11. Схема нейронной сети для прогнозирования цены акции

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

Рисунок 12. Сравнение предсказанных значений цены акций нейронной сети с реальными данными. (черным - реальные данные, красным - предсказанные данные)

Взглянув на график, очевидно, что нейронная сеть смогла предсказать тренд движения цены на долгий будущий период (50 торговых дней). Кроме того сами предсказанные абсолютные значения цен акции не далеки от истины. Подобный результат наглядно демонстрирует сильный потенциал нейронной сети, как инструмента для прогнозирования финансовых временных рядов.

3.5 РЕКУРРЕНТНАЯ НЕЙРОННАЯ СЕТЬ ЭЛМАНА

.5.1 ПРОГНОЗИРОВАНИЕ ОБЪЁМА

Рекурентная сеть Элмана, благодаря своей способности учитывать предысторию происходящих операций и сохранять необходимую информацию для генерирования корректного поведения, демонстрирует более точный результат прогнозирования объёмов торгов, в сравнении с сетью прямого распределения сигнала

Рисунок 13. Тестирование модификации нейронной сети Элмана для прогнозирования объёма на тестовой выборке

Из данного графика можно наглядно увидеть сильную и слабую сторону полученной рекуррентной нейронной сети. Сформированная сеть Элмана хорошо повторяет трэнд объёма торгов, но ошибется в точности абсолютных значений.

3.5.2 ПРОГНОЗИРОВАНИЕ ЦЕНЫ

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

Рисунок 14. Тестирование модификации нейронной сети Элмана для прогнозирования цены акции на обучающей выборке

Средняя абсолютная ошибка при обучении составила:= 0.03963906

что является лучшим результатом по сравнению с нейронной сетью прямого распространения сигнала

При этом качество процесса обучения можно увидеть из Рис 1, который демонстрирует степень снижения ошибки с каждой итерацией обучающего процесса

Рисунок 15. Динамика изменения сумму квадратичных ошибок с увеличением номера итерации обучения нейронной сети Элмана

Достигнув минимальных погрешностей при генерации формулы нейронной сети, которую можно найти в приложении, получим прогноз на тестовой выборке:

Рисунок 16. Тестирование модификации нейронной сети Элмана для прогнозирования цены акции на тестируемой выборке

Как и в случае с объёмом, модифицированная нейронная сеть Элмана демонстрирует относительно точное предсказывание тренда движения цен, но в то же время слабо демонстрирует точность в абсолютных значениях цен на акцию. MAE, в данном случае, равняется 0.04804567

3.6    ОЦЕНКИ ОШИБОК


Список компаний, данные об акциях которых тестировались при разработке нейронных сетей:

.        2U

.        Apple

.        Elite Data Services

.        TECO Energy

.        Ruby Tuesday

.        Follow

.        PowerShares International Corporate Bond Portfolio

.        St. Joe Company

.        Coca-Cola Company

.        QAD

.        KLA-Tencor Corporation

.        JunkieDog

.        Mid-America Apartment Communities

.        Quantum Energy

.        MEDIFAST


Нейронная сеть прямого распространения

Рекуррентная нейронная сеть Элмана


Тип ошибки

Тип ошибки

Акция

MAE

RMSE

RMSLE

MAE

RMSE

RMSLE

1

0.12123342

0.14457821

0.13533211

0.04804567

0.05401493

0.047514

2

0.11234234

0.13234531

0.12323412

0.06212342

0.06345521

0.059234

3

0.09513042

0.09941234

0.09712342

0.07123332

0.07012342

0.069324

4

0.06241234

0.06935241

0.06452013

0.01934230

0.23423412

0.213563

5

0.08215962

0.08923060

0.08569012

0.05367032

0.05963012

0.055621

6

0.10353532

0.14021235

0.12345921

0.08432512

0.08943252

0.085291

7

0.07381238

0.07823712

0.07512489

0.04231390

0.04893121

0.046586

8

0.05692391

0.06231345

0.05934012

0.32134234

0.36023412

0.349681

9

0.04523449

0.04923952

0.04634224

0.04204321

0.04521230

0.044321

10

0.08234921

0.08823481

0.08523412

0.05324292

0.05640212

0.053469

11

0.09432341

0.09823491

0.09643991

0.04520459

0.04934295

0.046341

12

0.10323432

0.12342392

0.12112392

0.06324921

0.06962340

0.064345

13

0.07349523

0.07823491

0.07532492

0.03423402

0.04102310

0.039452

14

0.06934923

0.07123324

0.07003210

0.03324932

0.03540392

0.034543

15

0.05234922

0.08932412

0.06342391

0.03123492

0.05639459

0.043291

Рисунок 17. Степень ошибки для каждой фирмы

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

3.7    МОДЕЛИРОВАНИЕ ТОРГОВЛИ


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

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

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

 

ЗАКЛЮЧЕНИЕ


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

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

1.      Н.И. Берзон, Е.А.Буянова, М.А. Кожевников, А.В. Чаленко. Фондовый рынок // Издательство «ВИТА-ПРЕСС» 1998

.        МаккалохДж., Питтс У. Логические исчисления идей, относящихся к нервной деятельности.// Автоматы. М.: ИЛ, 1956.

.        Mingyue Qiu, Yu Song, Predicting the Direction of Stock Market Index Movement Using an Optimized Artificial Neural Network Model // Advances in Fuzzy Systems 2012

.        Mingyue Qiu, Yu Song, Fumio Akagi Application of artificial neural network for the prediction of stock market returns: The case of the Japanese stock market // Chaos Solitons & Fractals 85:1-7 · April 2016

.        Хайкин С. Нейронные сети: полный курс, 2-еиздание.// Издательский дом Вильямс, 2008.

.        Круглов В.В., Дли М.И., Голунов Р.Ю. Нечеткая логика и искусственные нейронные сети // М.: ФИЗМАТЛИТ, 2001

.        Круглов В. В., Борисов В. В. Искусственные нейронные сети. Теория и практика. - М.: Горячая линия-Телеком, 2002.

.        Bishop C. M. Neural Networks for Pattern Recognition. Oxford University Press Inc., 2003.

.        Лила В.Б., Пучков Е.В Методология обучения рекуррентной искусственной нейронной сети с динамической стековой памятью // Международный журнал "Программные продукты и системы", Тверь, №4, 2014 г.

.        Галушкин А. И. Теория нейронных сетей. // М.: ИПРЖР, 2000.

.        Бэстенс Д. Э., Ван Ден Берг В. М., Вуд Д. Нейронные сети и финансовые рынки. Принятие решений в торговых операциях. // М.: ТВП, 1997.

.        Allendyhttps://allendy.ru/forex/577-bestens.html (дата обращения 04.05.2016)

.        Бодянский Е. В., Руденко О. Г. Искусственные нейронные сети: архитектуры, обучение, применения //Харьков: Телетех. - 2004. - Т. 369.

.        Функция активации [Электронный ресурс] / Википедия - свободная энциклопедия. - URL: https://en.wikipedia.org/wiki/ Activation_function (дата обращения 08.05.2016)

.        Поезжалова С. Н. и др. Рекуррентные нейронные сети и методы оптимизации проектных технологических процессов в АСТПП

машиностроительного производства //ВЕСТНИК УФИМСКОГО ГОСУДАРСТВЕННОГО АВИАЦИОННОГО ТЕХНИЧЕСКОГО УНИВЕРСИТЕТА. - 2011. - Т. 15. - №. 5 (45).

.        Редько В. Г. Эволюция, нейронные сети, интеллект: Модели и концепции эволюц. кибернетики. - УРСС, 2005.

.        Пак Н. И. О концепции информационного подхода в обучении // Вестник Красноярского государственного педагогического университета им. ВП Астафьева. - 2011. - №. 1.

.        Поезжалова С. Н. и др. Рекуррентные нейронные сети и методы оптимизации проектных технологических процессов в АСТПП машиностроительного производства //ВЕСТНИК УФИМСКОГО ГОСУДАРСТВЕННОГО АВИАЦИОННОГО ТЕХНИЧЕСКОГО УНИВЕРСИТЕТА. - 2011. - Т. 15. - №. 5 (45).

.        Заенцев И. В. Нейронные сети: основные модели //Воронеж: ВГУ. - 1999. - Т. 9.

 

ПРИЛОЖЕНИЯ

 

ПРИЛОЖЕНИЕ 1

 

ИСХОДНЫЙ КОД R

# install.packages("TTR")

# install.packages('neuralnet') install.packages('rnn') install.packages("RSNNS") install.packages("Metrics")("TTR") library(neuralnet) library(rnn) library("RSNNS") library(Metrics)_stocks <- read.csv("2U.csv") stocks_2u <- read.csv("2U.csv") stocks_2u <- stocks_2u[-1, ]_2u <- stocks_2u[rev(rownames(stocks_2u)), ] plot(stocks_2u$low, type = "lines")_2u <- stocks_2u[, -1]_2u$volume <- as.numeric(stocks_2u$volume)<- apply(stocks_2u, 2, max) mins <- apply(stocks_2u, 2, min)))<- as.data.frame(scale(stocks_2u, center = mins, scale = maxs -<- as.data.frame(scaled$volume) scaled$high <- NULL$low <- NULL scaled$open <- NULL$ema.20 <-EMA(scaled[, "close"], 20) scaled$sma.20 <-SMA(scaled[, "close"], 20)

# scaled$dema.20 <- DEMA(scaled[, "close"], 10)

# scaled$dema.20 <- NULL$evwma.20 <- EVWMA(scaled[, "close"], scaled[, "volume"], 20) scaled$zlema.20 <- ZLEMA(scaled[, "close"], 20)$x1<- NA scaled$x2<- NA scaled$x3<- NA scaled$x4<- NA scaled$x5<- NA(i in 6:nrow(scaled)){ scaled[i, 7] <- scaled[i-1, 1][i, 8] <- scaled[i-2, 1][i, 9] <- scaled[i-3, 1] scaled[i, 10] <- scaled[i-4, 1] scaled[i, 11] <- scaled[i-5, 1]

}<-scaled[-c(1:20), ] scaled_e<-scaled(i in 1:(nrow(scaled_e)-1)){_e[i, 1] <- scaled_e[i+1, 1]

}(volumes)[1] <- "volume" volumes$ema.20 <- EMA(volumes[, 1], 20) volumes$sma.20 <- SMA(volumes[, 1], 20) volumes$zlema.20 <- ZLEMA(volumes[, 1], 20) volumes$x1<- NA$x2<- NA volumes$x3<- NA volumes$x4<- NA volumes$x5<- NA(i in 6:nrow(volumes)){ volumes[i, 5] <- volumes[i-1, 1] volumes[i, 6] <- volumes[i-2, 1] volumes[i, 7] <- volumes[i-3, 1][i, 8] <- volumes[i-4, 1] volumes[i, 9] <- volumes[i-5, 1]

}<-round(0.90*nrow(volumes_e)) index <- (1:split)

## VOLUME NEURAL NETWORK_train_src <- volumes[index, ] volume_test_src <- volumes[-index, ]

+ ")))_train <- volumes_e[index, ] volume_test <- volumes_e[-index, ] n <- names(volume_train)<- as.formula(paste("volume ~", paste(n[!n %in% "volume"], collapse = "_nn<-NULL_ nn<- neuralnet( f, data = volume_ train, hidden= c( 5 ),=0.01, linear.output=F) plot(volume_nn)<-(nrow(volume_train_src)-19):nrow(volume_train_src) volume_predicting<-as.data.frame(volume_train_src[range, ])(i in 20:(nrow(volume_test)+19)){_predicting[i+1, 1] <- compute(volume_nn, volume_predicting[i, - c(1)])$net.result_predicting[i+1, 5] <- volume_predicting[i, 1] volume_predicting[i+1, 6] <- volume_predicting[i-1, 1] volume_predicting[i+1, 7] <- volume_predicting[i-2, 1] volume_predicting[i+1, 8] <- volume_predicting[i-3, 1] volume_predicting[i+1, 9] <- volume_predicting[i-4, 1] volume_predicting$ema.20 <- EMA(volume_predicting[, 1], 20) volume_predicting$sma.20 <- SMA(volume_predicting[, 1], 20) volume_predicting$zlema.20 <- ZLEMA(volume_predicting[, 1], 20)

}_predicting <- volume_predicting[-c(1:20), ] plot(volume_test_src$volume, type="lines", main="Предсказывание

объёма",

объёма")= "Номер наблюдения", ylab = "Нормированное значение(volume_predicting$volume, col="red")

##PRICE_train_src <- scaled[index, ] price_test_src <- scaled[-index, ]

")))_train <- scaled_e[index, ] price_test <- scaled_e[-index, ] n <- names(price_train)<- as.formula(paste("close ~", paste(n[!n %in% "close"], collapse = " +

# f <- 'close ~ volume + ema.20 + sma.20 + evwma.20 + zlema.20 + x1 ++ x3 + x4 + x5'_nn<-neuralnet(f, data = price_train, hidden=c(10, 10), threshold=0.01, linear.output=F, rep = 3, algorithm = "backprop", learningrate = 0.5)<-trainr(= price_train$close, X = price_train[, c(-1)], learningrate= 0.1,_from_end = TRUE

)(price_nn)<-(nrow(price_train_src)-19):nrow(price_train_src) price_predicting<-as.data.frame(price_train_src[range, ])(i in 20:(nrow(price_test)+19)){_predicting[i+1, 1] <- compute(price_nn, price_predicting[i, c(-1)])

$net.result_predicting[i+1, 2] <- volume_predicting[i-19, 1] price_predicting[i+1, 7] <- price_predicting[i, 1] price_predicting[i+1, 8] <- price_predicting[i-1, 1] price_predicting[i+1, 9] <- price_predicting[i-2, 1] price_predicting[i+1, 10] <- price_predicting[i-3, 1] price_predicting[i+1, 11] <- price_predicting[i-4, 1] price_predicting$ema.20 <- EMA(price_predicting[, 1], 20) price_predicting$sma.20 <- SMA(price_predicting[, 1], 20) price_predicting$zlema.20 <- ZLEMA(price_predicting[, 1], 20)_predicting$evwma.20<-EVWMA(price_predicting[, "close"], price_predicting[, "volume"], 20)

}_predicting <- price_predicting[-c(1:20), ](price_test_src$close, type = "lines", main="Предсказывание цены закрытия акции",= "Номер наблюдения", ylab = "Нормированное значение цены

акции")

# lines(compute(price_nn, price_test[, c(-1)])$net.result, col="red") lines(price_predicting$close, col="red")(price_predicting$close, price_test_src$close)<- volumes_e[, -c(1)] targets <- volumes_e[, c(1)]<- elman(patterns$inputsTrain, patterns$targetsTrain, size = c(2, 8), learnFuncParams = c(0.1), maxit = 500,= patterns$inputsTest,= patterns$targetsTest, linOut = FALSE) predict(modelElmanVolumes, volumes_e[1, -c(1)])(modelElmanVolumes) plot(targets[1:502], type = "l")(modelElmanVolumes$fitted.values[1:502], col = "red")(patterns$targetsTrain, modelElmanVolumes

$fitted.values)(patterns$targetsTest, modelElmanVolumes

$fittedTestValues)(patterns$inputsTest[1:51], type="l", xlab="Наблюдение", ylab="Значение объёма",="Прогнозирование объёма")( modelElmanVolumes$fittedTestValues[1:51], col = "red") legend('top', c('реальное', 'прогноз'),=1, col=c('black', 'red'), bty='n', cex=1)(modelElmanVolumes$fitted.values - patterns$targetsTrain) mae(targets[1:100], modelElmanVolumes$fitted.values[1:100]) rmse(targets[1:100], modelElmanVolumes$fitted.values[1:100]) rmsle(targets[1:100], modelElmanVolumes$fitted.values[1:100])<- scaled_e[, -c(1, 2)] targets <- scaled_e[, c(1)]<- splitForTrainingAndTest(inputs, targets, ratio = 0.1) modelElman <- elman(patterns$inputsTrain, patterns$targetsTrain,= c(2, 8), learnFuncParams = c(0.1), maxit = 500, inputsTest = patterns$inputsTest,= patterns$targetsTest, linOut = FALSE)(modelElman)(targets[1:502], type="l", xlab="Наблюдение", ylab="Значение цены", main="Прогнозирование цены акции")(modelElman$fitted.values[1:502], col = "red") mae(patterns$targetsTrain[1:451], modelElman$fitted.values[1:451]) plotRegressionError(patterns$targetsTrain, modelElman$fitted.values) plotRegressionError(patterns$targetsTest, modelElman$fittedTestValues) plot(modelElman$fittedTestValues[1:51], col="red", type="l",="Наблюдение", ylab="Значение цены", main="Прогнозирование цены акции")( patterns$inputsTest[1:51], ) legend('top', c('реальное', 'прогноз'),=1, col=c('black', 'red'), bty='n', cex=1) hist(modelElman$fitted.values - patterns$targetsTrain) mae(targets[1:100], modelElman$fitted.values[1:100]) rmse(targets[1:100], modelElman$fitted.values[1:100]) rmsle(targets[1:100], modelElman$fitted.values[1:100])

 

ПРИЛОЖЕНИЕ 2

 

СПЕЦИФИКАЦИЯ НЕЙРОННОЙ СЕТИ ДЛЯ ПРОГНОЗИРОВАНИЯ ОБЪЁМА

Class: elman->rsnns Number of inputs: 8 Number of outputs: 1 Maximal iterations: 500function: JE_Weights Initialization function parameters: 1 -1 0.3 1 0.5 Learning function: JE_BPfunction parameters: 0.1 Update function:JE_Order Update function parameters: 0are shuffled internally: FALSE Compute error in every iteration: TRUE Architecture Parameters:

$size [1] 2 8members of model:

[1] "nInputs""maxit""initFunc" "initFuncParams""learnFunc"

[6] "learnFuncParams""updateFunc""updateFuncParams" "shufflePatterns""computeIterativeError"

[11] "snnsObject""archParams""IterativeFitError" "IterativeTestError""fitted.values"

[16] "fittedTestValues""nOutputs"files: no. of units: 29. of connections: 128 no. of unit types: 0. of site types: 0function: JE_BP update function: JE_Orderdefault section:| bias| st | subnet | layer | act func| out func

----|-----|--|----|----|-------|-------

.00000 | 0.00000 | i |0 |1 | Act_Logistic | Out_Identity

----|-----|--|----|----|-------|-------definition section:. | typeName | unitName | act| bias| st | position | act func| out func | sites

-|-----|-----|-----|-----|--|-----|-------|-----|--

|| inp1| 0.51829 | 0.91024 | i | 1, 1, 0 | Act_Identity ||

|| inp2| 0.49962 | -0.07818 | i | 1, 2, 0 | Act_Identity ||

|| inp3| 0.53489 | -0.66562 | i | 1, 3, 0 | Act_Identity ||

|| inp4| 0.00192 | 0.95160 | i | 1, 4, 0 | Act_Identity ||

|| inp5| 0.97510 | 0.92878 | i | 1, 5, 0 | Act_Identity ||

|| inp6| 0.13027 | 0.14039 | i | 1, 6, 0 | Act_Identity ||

|| inp7| 0.80077 | 0.49447 | i | 1, 7, 0 | Act_Identity ||

|| inp8| 0.84674 | 0.21411 | i | 1, 8, 0 | Act_Identity ||

|| hid11| 0.39380 | -0.54910 | h | 7, 1, 0 |||

|| hid12| 0.30335 | -0.74159 | h | 7, 2, 0 |||

|| hid21| 0.29328 | -0.50990 | h | 13, 1, 0 |||

|| hid22| 0.16618 | -1.12105 | h | 13, 2, 0 |||

|| hid23| 0.28791 | -0.24695 | h | 13, 3, 0 |||

|| hid24| 0.35816 | -0.61924 | h | 13, 4, 0 |||

|| hid25| 0.19608 | -0.98581 | h | 13, 5, 0 |||

|| hid26| 0.26634 | -0.37546 | h | 13, 6, 0 |||

|| hid27| 0.36907 | 0.45445 | h | 13, 7, 0 |||

|| hid28| 0.26939 | -0.72472 | h | 13, 8, 0 |||

|| out1| 0.43536 | 0.67411 | o | 19, 1, 0 |||

|| con11| 0.63966 | 0.50000 | sh | 4, 10, 0 | Act_Identity |

|| con12| 0.48126 | 0.50000 | sh | 4, 11, 0 | Act_Identity |

| |

22 | 23 |

| con21 | con22

| |

0.41142 | 0.24415 |

0.50000 | sh 0.50000 | sh

| 10, 10, 0 | Act_Identity | | 10, 11, 0 | Act_Identity |

 | | | | | |

24 | 25 | 26 | 27 | 28 | 29 |

| con23 | con24 | con25 | con26 | con27 | con28

| | | | | |

0.41575 | 0.50754 | 0.27448 | 0.35406 | 0.49056 | 0.38707 |

0.50000 | sh 0.50000 | sh 0.50000 | sh 0.50000 | sh 0.50000 | sh 0.50000 | sh

| 10, 12, 0 | Act_Identity | | 10, 13, 0 | Act_Identity | | 10, 14, 0 | Act_Identity | | 10, 15, 0 | Act_Identity | | 10, 16, 0 | Act_Identity | | 10, 17, 0 | Act_Identity |


-|-----|-----|-----|-----|--|-----|-------|-----|--definition section:| site | source:weight

---|---|---------------------------------------

-------------------

|| 21: 0.78085, 20: 0.03714, 8: 0.13071, 7: 0.58586, 6: 1.19854,

:-1.38897, 4: 0.64838, 3: 0.74445, 2: 0.32752,

:-0.61820

|| 21: 0.14700, 20:-0.62346, 8:-1.16029, 7:-1.10538, 6: 1.10225,

: 0.04885, 4: 0.83319, 3: 2.46233, 2: 0.30850,

: 1.03711

|| 29:-0.31880, 28: 0.50909, 27:-0.57432, 26: 0.33647,

:-0.63273, 24: 0.35063, 23: 0.67615, 22:-0.91504, 10: 0.24725,

:-0.24237

|| 29:-0.14271, 28:-0.45119, 27:-0.91477, 26: 0.70963,

:-0.33978, 24: 0.73801, 23: 0.33661, 22:-0.98593, 10: 0.69700,

:-0.57670

|| 29:-1.01722, 28: 0.49875, 27: 0.71013, 26:-0.76393,

:-0.15522, 24:-0.76114, 23:-0.50840, 22:-0.46115, 10: 0.08375,

: 0.55965

|| 29: 0.00815, 28: 0.39345, 27: 0.00919, 26: 0.42918, 25:

.23629, 24:-1.20091, 23: 0.27135, 22:-0.43844, 10:-0.05168,

: 0.68664

|| 29: 0.82264, 28:-0.69861, 27:-0.61898, 26: 0.95131,

:-0.10768, 24:-0.13575, 23:-0.45338, 22: 0.15542, 10:-1.25214,

: 0.03904

|| 29: 0.96526, 28: 0.56589, 27:-0.79278, 26: 0.52538,

:-0.20436, 24:-0.81696, 23: 0.23472, 22:-1.13947, 10:-0.99899,

:-0.02655

|| 29: 1.14300, 28: 0.07978, 27:-0.80262, 26: 0.13648,

:-0.94489, 24: 0.25123, 23: 0.80855, 22:-0.41380, 10:-2.22286,

:-0.71554

|| 29: 0.18850, 28:-0.72904, 27: 0.38381, 26: 0.07991,

:-0.95765, 24: 0.68550, 23: 0.48964, 22: 0.35685, 10:-1.11580,

: 0.17927

|| 18:-0.33628, 17:-1.79558, 16:-1.15614, 15:-0.91105, 14:

.28457, 13: 0.67597, 12:-0.00240, 11: 0.03270

|| 20: 0.30000, 9: 1.00000

|| 21: 0.30000, 10: 1.00000

|| 22: 0.30000, 11: 1.00000

|| 23: 0.30000, 12: 1.00000

|| 24: 0.30000, 13: 1.00000

|| 25: 0.30000, 14: 1.00000

|| 26: 0.30000, 15: 1.00000

|| 27: 0.30000, 16: 1.00000

|| 28: 0.30000, 17: 1.00000

|| 29: 0.30000, 18: 1.00000

--|---|-------------------------------------

 

ПРИЛОЖЕНИЕ 3

 

СПЕЦИФИКАЦИЯ НЕЙРОННОЙ СЕТИ ДЛЯ ПРОГНОЗИРОВАНИЯ ЦЕНЫ АКЦИИ

Class: elman->rsnns Number of inputs: 9 Number of outputs: 1 Maximal iterations: 500function: JE_Weights Initialization function parameters: 1 -1 0.3 1 0.5 Learning function: JE_BPfunction parameters: 0.1 Update function:JE_Order Update function parameters: 0are shuffled internally: FALSE Compute error in every iteration: TRUE Architecture Parameters:

$size [1] 2 8members of model:

[1] "nInputs""maxit""initFunc" "initFuncParams""learnFunc"

[6] "learnFuncParams""updateFunc""updateFuncParams" "shufflePatterns""computeIterativeError"

[11] "snnsObject""archParams""IterativeFitError" "IterativeTestError""fitted.values"

[16] "fittedTestValues""nOutputs" source files:. of units: 30. of connections: 130 no. of unit types: 0. of site types: 0function: JE_BP update function: JE_Orderdefault section:| bias| st | subnet | layer | act func| out func

----|-----|--|----|----|-------|-------

.00000 | 0.00000 | i |0 |1 | Act_Logistic | Out_Identity

----|-----|--|----|----|-------|-------definition section:. | typeName | unitName | act| bias| st | position | act func| out func | sites

-|-----|-----|-----|-----|--|-----|-------|-----|--

-

|| inp1| 0.48676 | -0.36181 | i | 1, 1, 0 | Act_Identity ||

|| inp2| 0.46967 | 0.34410 | i | 1, 2, 0 | Act_Identity ||

|| inp3| 0.44879 | 0.45020 | i | 1, 3, 0 | Act_Identity ||

|| inp4| 0.56144 | 0.92300 | i | 1, 4, 0 | Act_Identity ||

|| inp5| 0.57566 | 0.57297 | i | 1, 5, 0 | Act_Identity ||

|| inp6| 0.55823 | 0.60182 | i | 1, 6, 0 | Act_Identity ||

|| inp7| 0.54358 | 0.94903 | i | 1, 7, 0 | Act_Identity ||

|| inp8| 0.51081 | 0.08231 | i | 1, 8, 0 | Act_Identity ||

|| inp9| 0.49686 | 0.62406 | i | 1, 9, 0 | Act_Identity ||

|| hid11| 0.10687 | -0.43698 | h | 7, 1, 0 |||

|| hid12| 0.53540 | -1.01796 | h | 7, 2, 0 |||

|| hid21| 0.43922 | -0.97249 | h | 13, 1, 0 |||

|| hid22| 0.53670 | 0.21503 | h | 13, 2, 0 |||

|| hid23| 0.54332 | 0.02000 | h | 13, 3, 0 |||

|| hid24| 0.55507 | 0.31147 | h | 13, 4, 0 |||

|| hid25| 0.51190 | 0.64013 | h | 13, 5, 0 |||

|| hid26| 0.49504 | 0.73774 | h | 13, 6, 0 |||

|| hid27| 0.13988 | -0.55175 | h | 13, 7, 0 |||

|| hid28| 0.41633 | 1.42661 | h | 13, 8, 0 |||

|| out1| 0.57017 | -1.39461 | o | 19, 1, 0 |||

|| con11| 0.15607 | 0.50000 | sh | 4, 11, 0 | Act_Identity |

|| con12| 0.75708 | 0.50000 | sh | 4, 12, 0 | Act_Identity |

| |23 | 24 || con21 | con22| |0.62183 | 0.76972 |0.50000 | sh 0.50000 | sh| 10, 11, 0 | Act_Identity | | 10, 12, 0 | Act_Identity |







 | | | | | |

25 | 26 | 27 | 28 | 29 | 30 |

| con23 | con24 | con25 | con26 | con27 | con28

| | | | | |

0.77062 | 0.78780 | 0.72800 | 0.70384 | 0.19957 | 0.59929 |

0.50000 | sh 0.50000 | sh 0.50000 | sh 0.50000 | sh 0.50000 | sh 0.50000 | sh

| 10, 13, 0 | Act_Identity | | 10, 14, 0 | Act_Identity | | 10, 15, 0 | Act_Identity | | 10, 16, 0 | Act_Identity | | 10, 17, 0 | Act_Identity | | 10, 18, 0 | Act_Identity |


-|-----|-----|-----|-----|--|-----|-------|-----|--definition section:| site | source:weight

---|---|---------------------------------------

|| 22:-0.94150, 21: 0.40086, 9: 0.01101, 8:-0.98448, 7:-0.46580,

:-0.93659, 5:-0.04103, 4:-0.03008, 3:-0.70138,

: 0.68545, 1: 0.51493

|| 22:-1.24629, 21: 0.04120, 9:-0.02467, 8:-0.67661, 7: 0.38491,

: 0.41195, 5: 2.07589, 4: 1.76777, 3:-0.63471,

: 0.28145, 1:-0.08667

|| 30:-0.10219, 29: 0.62202, 28:-0.94720, 27:-0.43497, 26:

.95289, 25: 0.47069, 24:-0.72667, 23:-0.08526, 11: 2.15215,

: 0.07025

|| 30: 0.24569, 29: 0.90801, 28:-0.74348, 27: 0.38874,

:-0.30248, 25: 0.32766, 24: 0.42428, 23: 0.26805, 11:-1.22837,

:-0.09089

|| 30:-0.73948, 29:-0.03032, 28:-0.68928, 27:-0.20091, 26:

.96102, 25:-0.30051, 24:-0.33289, 23: 0.79614, 11: 1.04951,

:-0.66068

|| 30:-0.75635, 29:-0.76173, 28: 0.54731, 27: 0.90897,

:-0.20839, 25:-0.54035, 24:-1.03927, 23:-0.10634, 11: 1.62659,

: 0.55208

|| 30:-1.09710, 29:-0.73304, 28:-0.43102, 27:-0.08359,

:-0.08482, 25:-0.40766, 24: 0.27553, 23:-0.34922, 11: 1.90140,

:-0.58198

|| 30:-0.83221, 29:-0.86215, 28:-0.70565, 27: 0.50233,

:-0.01443, 25:-0.66863, 24:-0.24112, 23:-0.04713, 11: 1.57999,

:-0.57460

|| 30: 0.23697, 29: 0.31094, 28:-0.44532, 27:-0.96210, 26:

.97451, 25:-0.57026, 24:-0.98152, 23: 0.27689, 11:-0.18014,

:-0.95082

|| 30:-0.41044, 29: 0.65852, 28:-0.34436, 27:-0.73330,

:-0.23393, 25:-0.33138, 24:-0.07857, 23: 1.00260, 11:-2.03768,

: 0.90765

|| 19:-2.86798, 18:-0.01735, 17: 1.38293, 16: 1.69478, 15:

.49599, 14: 0.78229, 13:-1.56680, 12: 2.06485

|| 21: 0.30000, 10: 1.00000

|| 22: 0.30000, 11: 1.00000

|| 23: 0.30000, 12: 1.00000

|| 24: 0.30000, 13: 1.00000

|| 25: 0.30000, 14: 1.00000

|| 26: 0.30000, 15: 1.00000

|| 27: 0.30000, 16: 1.00000

|| 28: 0.30000, 17: 1.00000

|| 29: 0.30000, 18: 1.00000

|| 30: 0.30000, 19: 1.00000

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!