СОДЕРЖАНИЕ
. Прогнозирование на фондовом рынке с помощью нейронных сетей
.2 Степень разработанности темы в научной литературе
. Разработка собственной модели решения
.1 Определение типа нейронной сети
.2 Определение входных данных и их обработка
. Применение разработанного решения
.3 Дополнительные объясняющие переменные
.4 Нейронная сеть прямого распространения сигнала
.5 Рекуррентная нейронная сеть Элмана
Список использованных источников
1. ПРОГНОЗИРОВАНИЕ НА ФОНДОВОМ РЫНКЕ С ПОМОЩЬЮ НЕЙРОННЫХ СЕТЕЙ
2. РАЗРАБОТКА СОБСТВЕННОЙ МОДЕЛИ РЕШЕНИЯ
2.1 ОПРЕДЕЛЕНИЕ ТИПА НЕЙРОННОЙ СЕТИ
2.2 ОПРЕДЕЛЕНИЕ ВХОДНЫХ ДАННЫХ И ИХ ОБРАБОТКА
2.3 АРХИТЕКТУРА НЕЙРОННОЙ СЕТИ
3. ПРИМЕНЕНИЕ РАЗРАБОТАННОГО РЕШЕНИЯ
3.3 ДОПОЛНИТЕЛЬНЫЕ ОБЪЯСНЯЮЩИЕ ПЕРЕМЕННЫЕ
volume ~ ema.20 + sma.20 + zlema.20 + x1 + x2 + x3 + x4 + x5
close ~ volume + ema.20 + sma.20 + evwma.20 + zlema.20 + x1 + x2 +
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
СПЕЦИФИКАЦИЯ НЕЙРОННОЙ СЕТИ ДЛЯ ПРОГНОЗИРОВАНИЯ ОБЪЁМА
Сеть
Элмана так же, как и сеть Джордана получается из многослойного персептрона
введением обратных связей. Только сигналы на входной слой идут не от выходов
сети, а от выходов нейронов скрытого слоя19.
Рисунок 5. Пример архитектуры сети Элмана
Таким образом, на данном этапе не будет выбрана одна из двух типов
нейронных сетей, а протестированы обе.
Absolute Error (MAE) - средняя абсолютная ошибка
mean-square error (RMSE)
Mean Squared Logarithmic Error (RMSLE)
На данном этапе следует определить размер полученной ошибки спрогнозированных данных на тестовой выборке. Установив порог качества в фиксированное значение, превышение или недобор до установленной планки будет означать успех или провал эксперимента. Конкретное значение порога является условным и он должен корректироваться исходя из требований каждого отдельного эксперимента. В качестве эксперимента проводимого в рамках текущей работы, определим порог качества в области нуля.
В случае, если значение ошибки прогноза будет превышать установленный порог, что будет обозначать непозволительную точность нейронной сети, то необходимо вернуться к предыдущим стадиям построения архитектуры нейронной сети для пересмотра упущенных альтернатив.
Напротив, если значение ошибки минимально, не превышает установленный
порог, то появляются основания для реализации непосредственно самой торговли на
фондовом рынке.
Заключительным этапом данной работы является использование созданной нейронной сети на практике. Точность прогноза полученная в предыдущем параграфе, несмотря на своё высокое значение, может оказаться недостаточной при плохо составленной модели торговли на реальной бирже. Существует несколько возможностей применения полученного результата на практике, которые могут варьироваться в зависимости от степени участия человека в ней. В качестве крайних примеров можно привести случаи принятия действия вручную на основе прогноза на один следующий период и полностью автоматизированной системы торговли на фондовом рынке, где скрипты торгуют самостоятельно без человеческого вмешательства.
Как правило, на практике рабочие нейронные сети используются как один из факторов среди многочисленных других для принятия решения о предстоящем действии или бездействии20.
В рамках данной работы, будет предложена полностью автоматизированная система торговли, исключая человеческий фактор, в виду сложности измерения эффекта последнего на качество торговли.
Получив на выходе работы нейронные сети спрогнозированные значения цен на акции фирмы на несколько периодов вперед, необходимо проанализировать результаты и создать такие сигналы, которые обеспечат наиболее прибыльную торговлю при малых рисках.
На практике спекулянты используют множество технических индикаторов, как средство для формирования правильных сигналов на рынке. Предлагается создать подобный алгоритм, который укажет на оптимальный сигнал в точках пересечения использованных индикаторов. Самые базовые сигналы на действие на рынке создаются с помощью индикаторов скользящих средних.
В
качестве оценки полезности получаемой от построенной нейронной сети информации
предлагается произвести тестовую торговлю на рынке ценных бумаг, выбрав
различные опционы для генерализации результата проведенной торговли. Как
изначальный капитал принимаем сумму в 100.000$ и используем её в торговле на
рынке с помощью полученного инструмента.
В данной главе будет разобран пример реализации нейронной сети, обученной на выборке данных временных рядов с фондового рынка NASDAQ.
Работа будет производиться в программном обеспечении RStudio на языке программирования R.
Данные были взяты с сайта www.nasdaq.com <#"896807.files/image010.jpg">
Рисунок 6. Входные данные в исходном виде
Алгоритм прогнозирования будет выглядеть следующим образом: для периода t цена закрытия акции будет спрогнозирована на основании данных периода t-1. Таким образом, каждое спрогнозированное значение будет являться входом для прогнозирования последующего значения.
Исходя из этой логики, имеет смысл уменьшить количество независимых переменных до минимума, в виду того, что каждая независимая переменна должна генерироваться отдельно. Из представленных входных данных в нашем случае, очевидно, что цены открытия, минимальные и максимальные значения являются слабо-релевантными для прогнозирования цены закрытия.
В итоге, цена закрытия в период t будет прогнозироваться исходя из значений периода t-1 двух независимых переменных:
• объём торговли
• цена закрытия
Перед тем как подать исходные данные на обучение нейронной сети, их
следует предварительно преобразовать. Для более корректной работы искусственной
нейронной сети рекомендуется предварительно нормализовать данные методом
главных компонент, в результате которого, все исходные данные будут принимать
значение от 0 до 1.
Рисунок 7. Итоговые нормализованные независимые переменные
Оставив две независимые переменные, как основополагающие признаки для дальнейшей работы имеет смысл ввести дополнительные зависимые переменные, которые свяжут значения цены закрытия за несколько предыдущих периодов. Данную функцию хорошо выполняют индикаторы технического анализа, такие как скользящее среднее. Согласно работе 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 НЕЙРОННАЯ СЕТЬ ПРЯМОГО РАСПРОСТРАНЕНИЯ СИГНАЛА
В первую очередь, необходимо было построить нейронную сеть для
прогнозирования объёма продаж. Формула нейронной сети для объёма выглядела
следующим образом:
где первые три переменные - скользящие средние, а последующие пять - значения объёмов в предыдущие периоды (x1 - в t-1 периоде, x2 - в t-2 периоде и так далее)
Разделив выборку на обучающую и тестируемую, я получил 452 наблюдения на
обучение и 50 на тестирование. Используя обучающие данные и применив их для
обучения нейронной сети, структура которой описана в предыдущей главе, я
получил нейронную сеть со следующими параметрами:
Рисунок 9. Схема нейронной сети для прогнозирования объёма торгов
На данном рисунке можно увидеть, что итоговая нейронная сеть имеет три слоя, причем самый важный из них, спрятанный второй слой, имеет в своем составе 5 нейронов, которые и классифируют входящий поток данных.
Чтобы проверить качество работы данной нейронной сети, я подал ей на вход 20 известных последних значений объёма торгов акциями. На каждой итерации нейронная сеть генерировала новое последующее значение объёма, которое я использовал для перерасчета скользящих средних и подавал новые данные обратно на вход нейронной сети.
Проверив работу данной нейронной сети на тестирующей выборке, я получил
следующий результат.
Рисунок 10. Сравнение предсказанных значений объёма нейронной сети с
реальными данными. (черным - реальные данные, красным - предсказанные данные)
Можно заметить, что нейронная сеть успешно вписалась в средние значения реальных цифр и идентично повторила тренд.
Спрогнозировав объём торговли на предыдущем этапе, у нас теперь есть все данные для формирования аналогичной нейронной сети для прогнозирования цены закрытия акции. Напомню, что формула для прогнозирования акции, в нашем случае, выглядит следующим образом:
x3 + x4 + x5
где volume - объём торговли, другие 4 переменные - это рассмотренные выше скользяще средний по предыдущим 20 значениям цены, и отдельно взятые цены закрытия акций за предыдущие пять периодов.
Применяя схожий алгоритм, как и в случае создания сети для
прогнозирования объёма, я получил следующий вид нейронной сети:
Рисунок 11. Схема нейронной сети для прогнозирования цены акции
В данном случае, для достижения более точных результатов, потребовалось
большее количество слоев и большее количество нейронов в каждом их них. Картина
с тестирующей выборкой выглядела же следующим образом:
Рисунок 12. Сравнение предсказанных значений цены акций нейронной сети с
реальными данными. (черным - реальные данные, красным - предсказанные данные)
Взглянув на график, очевидно, что нейронная сеть смогла предсказать тренд
движения цены на долгий будущий период (50 торговых дней). Кроме того сами
предсказанные абсолютные значения цен акции не далеки от истины. Подобный
результат наглядно демонстрирует сильный потенциал нейронной сети, как
инструмента для прогнозирования финансовых временных рядов.
3.5 РЕКУРРЕНТНАЯ НЕЙРОННАЯ СЕТЬ ЭЛМАНА
.5.1 ПРОГНОЗИРОВАНИЕ ОБЪЁМА
Рекурентная сеть Элмана, благодаря своей способности учитывать
предысторию происходящих операций и сохранять необходимую информацию для
генерирования корректного поведения, демонстрирует более точный результат
прогнозирования объёмов торгов, в сравнении с сетью прямого распределения
сигнала
Рисунок 13. Тестирование модификации нейронной сети Элмана для
прогнозирования объёма на тестовой выборке
Из данного графика можно наглядно увидеть сильную и слабую сторону
полученной рекуррентной нейронной сети. Сформированная сеть Элмана хорошо
повторяет трэнд объёма торгов, но ошибется в точности абсолютных значений.
3.5.2 ПРОГНОЗИРОВАНИЕ ЦЕНЫ
Полученные значения спрогнозированного объёма торгов передаются как
входные данные во вторую нейронную сеть Элмана, задача которой - генерация цен
акций фирмы на будущие периоды. Качество обучения конечной нейронной сети можно
представить в виде следующего графика:
Рисунок 14. Тестирование модификации нейронной сети Элмана для прогнозирования
цены акции на обучающей выборке
Средняя абсолютная ошибка при обучении составила:= 0.03963906
что является лучшим результатом по сравнению с нейронной сетью прямого распространения сигнала
При этом качество процесса обучения можно увидеть из Рис 1, который
демонстрирует степень снижения ошибки с каждой итерацией обучающего процесса
Рисунок 15. Динамика изменения сумму квадратичных ошибок с увеличением
номера итерации обучения нейронной сети Элмана
Достигнув минимальных погрешностей при генерации формулы нейронной сети,
которую можно найти в приложении, получим прогноз на тестовой выборке: