Прогнозирование цен с помощью нейронных сетей
Подготовка данных, входы и выходы нейросети, изменения котировок. Выбор программного обеспечения: Matlab, Statistica, BrainMaker, NeuroShell Day Trader. Подготовка данных средствами MetaTrader. Знакомство с Matlab и обучения нейросетей в пакете AnfisEdit.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 02.12.2011 |
Размер файла | 605,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Прогнозирование цен с помощью нейронных сетей
Введение
В последние несколько лет мы наблюдаем взрыв интереса к нейронным сетям, которые успешно применяются в самых различных областях - бизнесе, медицине, технике, геологии, физике. Нейронные сети вошли в практику везде, где нужно решать задачи прогнозирования, классификации или управления. Такой впечатляющий успех определяется несколькими причинами:
Богатые возможности. Нейронные сети - исключительно мощный метод моделирования, позволяющий воспроизводить чрезвычайно сложные зависимости. В частности, нейронные сети нелинейны по свой природе. На протяжении многих лет линейное моделирование было основным методом моделирования в большинстве областей, поскольку для него хорошо разработаны процедуры оптимизации. В задачах, где линейная аппроксимация неудовлетворительна , линейные модели работают плохо. Кроме того, нейронные сети справляются с "проклятием размерности", которое не позволяет моделировать линейные зависимости в случае большого числа переменных
Простота в использовании. Нейронные сети учатся на примерах. Пользователь нейронной сети подбирает представительные данные, а затем запускает алгоритм обучения, который автоматически воспринимает структуру данных. При этом от пользователя, конечно, требуется какой-то набор эвристических знаний о том, как следует отбирать и подготавливать данные, выбирать нужную архитектуру сети и интерпретировать результаты, однако уровень знаний, необходимый для успешного применения нейронных сетей, гораздо скромнее, чем, например, при использовании традиционных методов статистики.
Нейронные сети привлекательны с интуитивной точки зрения, ибо они основаны на примитивной биологической модели нервных систем. В будущем развитие таких нейро-биологических моделей может привести к созданию действительно мыслящих компьютеров.[1]
Предсказание финансовых временных рядов - необходимый элемент любой инвестиционной деятельности. Сама идея инвестиций - вложения денег сейчас с целью получения дохода в будущем - основывается на идее прогнозирования будущего. Соответственно, предсказание финансовых временных рядов лежит в основе деятельности всей индустрии инвестиций - всех бирж и небиржевых систем торговли ценными бумагами.
Известно, что 99% всех сделок - спекулятивные, т.е. направлены не на обслуживание реального товарооборота, а заключены с целью извлечения прибыли по схеме "купил дешевле - продал дороже". Все они основаны на предсказаниях изменения курса участниками сделки. Причем, что немаловажно, предсказания участников каждой сделки противоположны друг другу. Так что объем спекулятивных операций характеризует степень различий в предсказаниях участников рынка, т.е. реально - степень непредсказуемости финансовых временных рядов.
Это важнейшее свойство рыночных временных рядов легло в основу теории "эффективного" рынка, изложенной в диссертации Луи де Башелье (L.Bachelier) в 1900 г. Согласно этой доктрине, инвестор может надеяться лишь на среднюю доходность рынка, оцениваемую с помощью индексов, таких как Dow Jones или S&P500 для Нью-Йоркской биржи. Всякий же спекулятивный доход носит случайный характер и подобен азартной игре на деньги (а что то в этом есть, не находите?). В основе непредсказуемости рыночных кривых лежит та же причина, по которой деньги редко валяются на земле в людных местах: слишком много желающих их поднять.
Теория эффективного рынка не разделяется, вполне естественно, самими участниками рынка (которые как раз и заняты поиском "упавших" денег). Большинство из них уверено, что рыночные временные ряды, несмотря на кажущуюся стохастичность, полны скрытых закономерностей, т.е. в принципе хотя бы частично предсказуемы. Такие скрытые эмпирические закономерности пытался выявить в 30-х годах в серии своих статей основатель волнового анализа Эллиот (R.Elliott).
В 80-х годах неожиданную поддержку эта точка зрения нашла в незадолго до этого появившейся теории динамического хаоса. Эта теория построена на противопоставлении хаотичности и стохастичности (случайности). Хаотические ряды только выглядят случайными, но, как детерминированный динамический процесс, вполне допускают краткосрочное прогнозирование. Область возможных предсказаний ограничена по времени горизонтом прогнозирования, но этого может оказаться достаточно для получения реального дохода от предсказаний (Chorafas, 1994). И тот, кто обладает лучшими математическими методами извлечения закономерностей из зашумленных хаотических рядов, может надеяться на большую норму прибыли - за счет своих менее оснащенных собратьев.
В последнее десятилетие наблюдается устойчивый рост популярности технического анализа - набора эмпирических правил, основанных на различного рода индикаторах поведения рынка. Технический анализ сосредотачивается на индивидуальном поведении данного финансового инструмента, вне его связи с остальными ценными бумагами. Но технический анализ очень субъективен и плохо работает на правом краю графика - именно там, где нужно прогнозировать направление цены. Поэтому все большую популярность приобретает нейросетевой анализ, поскольку в отличие от технического, не предполагает никаких ограничений на характер входной информации. Это могут быть как индикаторы данного временного ряда, так и сведения о поведении других рыночных инструментов. Недаром нейросети активно используют именно институциональные инвесторы (например, крупные пенсионные фонды), работающие с большими портфелями, для которых особенно важны корреляции между различными рынками.
Нейросетевое моделирование в чистом виде базируется лишь на данных, не привлекая никаких априорных соображений. В этом его сила и одновременно - его ахиллесова пята. Имеющихся данных может не хватить для обучения, размерность потенциальных входов может оказаться слишком велика.
Поэтому для хорошего прогноза нужно пользоваться во-первых, очень качественно подготовленными данными, а во-вторых, нейропакетами с большой функциональностью.
1. Подготовка данных
Для начала работы нужно подготовить данные, от правильности этой работы зависит 80% успеха.
Гуру говорят, что в качестве входов и выходов нейросети не следует выбирать сами значения котировок Ct. Действительно значимыми для предсказаний являются изменения котировок. Поскольку эти изменения, как правило, гораздо меньше по амплитуде, чем сами котировки, между последовательными значениями курсов имеется большая корреляция - наиболее вероятное значение курса в следующий момент равно его предыдущему значению
C(t+1)=C(t)+delta(C)=C(t)
Между тем, для повышения качества обучения следует стремиться к статистической независимости входов, то есть к отсутствию подобных корреляций. Поэтому в качестве входных переменных логично выбирать наиболее статистически независимые величины, например, изменения котировок delta(С) или логарифм относительного приращения
log(C(t)/C(t+1))
Последний выбор хорош для длительных временных рядов, когда уже заметно влияние инфляции. В этом случае простые разности в разных частях ряда будут иметь различную амплитуду, т.к. фактически измеряются в различных единицах. Напротив, отношения последовательных котировок не зависят от единиц измерения, и будут одного масштаба несмотря на инфляционное изменение единиц измерения. В итоге, большая стационарность ряда позволит использовать для обучения большую историю и обеспечит лучшее обучение.
Отрицательной чертой погружения в лаговое пространство является ограниченный "кругозор" сети. Технический анализ же, напротив, не фиксирует окно в прошлом, и пользуется подчас весьма далекими значениями ряда. Например, утверждается, что максимальные и минимальные значения ряда даже в относительно далеком прошлом оказывают достаточно сильное воздействие на психологию игроков, и, следовательно, должны быть значимы для предсказания. Недостаточно широкое окно погружения в лаговое пространство не способно предоставить такую информацию, что, естественно, снижает эффективность предсказания. С другой стороны, расширение окна до таких значений, когда захватываются далекие экстремальные значения ряда, повышает размерность сети, что в свою очередь приводит к понижению точности нейросетевого предсказания - уже из-за разрастания размера сети.
Выходом из этой, казалось бы, тупиковой ситуации являются альтернативные способы кодирования прошлого поведения ряда. Интуитивно понятно, что чем дальше в прошлое уходит история ряда, тем меньше деталей его поведения влияет на результат предсказаний. Это обосновано психологией субъективного восприятия прошлого участниками торгов, которые, собственно, и формируют будущее. Следовательно, надо найти такое представление динамики ряда, которое имело бы избирательную точность: чем дальше в прошлое - тем меньше деталей, при сохранении общего вида кривой.
Весьма перспективным инструментом здесь может оказаться вейвлетное разложение (wavelet decomposition). Оно эквивалентно по информативности лаговому погружению, но легче допускает такое сжатие информации, которое описывает прошлое с избирательной точностью.
2. Выбор программного обеспечения
Для работы с нейросетями предназначено множество специализированных программ, одни из которых являются более-менее универсальными, а другие - узкоспециализированными. Проведем краткий обзор некоторых программ: 1. Matlab - настольная лаборатория для математических вычислений, проектирования электрических схем и моделирования сложных систем. Имеет встроенный язык программирования и весьма богатый инструментарий для нейронных сетей - Anfis Editor (обучение, создание, тренировка и графический интерфейс), командный интерфейс для программного задания сетей, nnTool - для более тонкой конфигурации сети. 2. Statistica - мощнейшее обеспечение для анализа данных и поиска статистических закономерностей. В данном пакете работа с нейросетями представлена в модуле STATISTICA Neural Networks (сокращенно, ST Neural Networks, нейронно-сетевой пакет фирмы StatSoft), представляющий собой реализацию всего набора нейросетевых методов анализа данных. 3. BrainMaker - предназначен для решения задач, для которых пока не найдены формальные методы и алгоритмы, а входные данные неполны, зашумлены и противоречивы. К таким задачам относятся биржевые и финансовые предсказания, моделирование кризисных ситуаций, распознавание образов и многие другие. 4. NeuroShell Day Trader - нейросетевая система, которая учитывает специфические нужды трейдеров и достаточно легка в использовании. Программа является узкоспециализированной и как раз подходит для торговли, но по своей сути слишком близка к черному ящику. 5. Остальные программы являются менее распространенными. Для первичной работы вполне подойдет Matlab, в нем и будем пытаться определить степень пригодности нейросетей для прогнозирования рынка Forex.
3. Эксперимент
3.1 Подготовка данных
Данные очень удобно можно получить стандартными средствами MetaTrader:
Сервис -> Архив котировок -> Экспорт
В результате получаем файл в формате *.csv, который является первичным сырьем для подготовки данных. Для преобразования полученного файла в удобный для работы файл *.xls нужно произветси импорт данных из файла *.csv. Для этого в excel нужно произвести следующие махинации:
Данные -> Импорт внешних данных -> Импортировать данные и указать подготовленный первичный файл
В мастере импорта все необходимые действия выполняются в 3 шага:
На 3 шаге необходимо поменять разделитель целой и дробной части на точку, делается это при нажатии кнопки Подробнее…
Для того чтобы данные были восприняты как цифры, а не как строки, нужно поменять разделитель целой и дробной части на точку:
Сервис -> Параметры -> Международные -> Разделитель целой и дробной части
На скриншотах показан пример сохранения цен открытия и закрытия, остальные данные пока не нужны.
Теперь данные надо преобразовать в соответствии с тем, что и как мы хотим прогнозировать. Составим прогноз цены закрытия будущего дня по четырем предыдущим (данные идут в пяти столбцах, цены в хронологическом порядке).
1.2605 |
1.263 |
1.2641 |
1.2574 |
1.2584 |
1.2666 |
|
1.263 |
1.2641 |
1.2574 |
1.2584 |
1.2666 |
1.2569 |
|
1.2641 |
1.2574 |
1.2584 |
1.2666 |
1.2569 |
1.2506 |
|
1.2574 |
1.2584 |
1.2666 |
1.2569 |
1.2506 |
1.2586 |
|
1.2584 |
1.2666 |
1.2569 |
1.2506 |
1.2586 |
1.2574 |
Благодаря нехитрым манипуляциям в excel данные подготавливаются за пару минут. Пример подготовленного файла с данными можно взять в прикрепленых файлах.
Для того, чтобы Matlab распознал файлы, необходимо, чтобы подготовленные данные были сохранены в файлах с расширением *.txt или *.dat. Сохраним их в файлах *.txt. Далее каждый файл разбиваем на два множества - для обучения сети (выборка) и для ее тестирования (вне выборки). Подготовленные таким образом euro.zip данные пригодны для дальнейшей работы
3.2 Знакомство с Matlab
Из командной строки по команде anfisedit запускаем пакет ANFIS. Редактор состоит из четырех панелек - для данных (Load data), для генерации сети (Generate FIS), для тренировки (Train FIS)и для ее тестирования (Test FIS). Верхняя панель предназначена для просмотра структуры полученной нейросети (ANFIS Info).
Более подробно с работой пакета можно ознакомиться по приведенным ниже ссылкам.
Для начала работы загружаем данные, подготовленные на предыдущих этапах. Для этого нажимаем кнопку Load Data и указываем файл с данными выборки. После этого создаем нейросеть нажатием кнопки Generate FIS.
Для каждой из входных переменных зададим по 3 лингвистические переменные с треугольной функцией принадлежности. В качестве функции принадлежности выходной функции зададим линейную функцию.
Для обучения нейросетей в пакете AnfisEdit предусмотрено 2 алгоритма обучения - обратного распространения и гибридный. При гибридном способе обучения сеть обучается буквально за пару-тройку проходов. На тренировочной выборке (60 значений) после обучения прогноз сети отличается от реального на несколько пунктов.
Но вот предсказывать то надо будущее! В качестве данных вне выборки были взяты следующие 9 дней после данных внутри выборки. На данных вне выборки среднеквадратичная ошибка составила 32 пункта, что конечно неприемлемо для реальной торговли, но говорит о том, что в направлении нейросетей можно работать дальше - игра должна стоить свеч.
Результатом нашей работы является многослойная гибридная нейронная сеть, которая способна прогнозировать абсолютные значения цен на небольшой будущее. Она кардинально отличается своей архитектурой и целями от однослойной нейронной сети, представленной господином Решетовым в своей статье.
Нам удалось получить более-менее сносный прогноз по самим котировкам, хотя специалисты в области нейронных сетей настоятельно не рекомендуют делать это. Полученной нейросетью можно полюбоваться при нажатии кнопки Structure. Обученную нейросеть можно взять в прикрепленых файлах neuro.zip .
Большим плюсом пакета MatLab является его интегрируемость с другими программами, причем существует множество вариантов его интреграции DDE, com-объекты, dll. Таким образом, можно не создавать инструмент с нуля, а воспользоваться готовым програмным решением для работы с нейронными сетями и генетическими алгоритмами. Затем, после получения стабильных результатов прогнозирования, можно будет интегрировать полученную нейросеть в программу MetaTrader через dll.
Заключение
прогнозирование цена нейронная сеть нейросеть
Нейронные сети являются очень мощным инструментом для работы на финансовых рынках, но для освоения этого этой технологии нужно потратить времени уж точно не меньше, чем на освоение технического анализа.
Плюсом нейросетей является объективность при принятии решения, а минусом - то, что решение принимает фактически черный ящик.
Основные проблемы, возникающие при работе с этой технологией - правильная предобработка данных, этот этап играет решающую роль для прогнозирования данных и очень многие безуспешные попытки работы с нейросетями связаны именно с этим этапом.
Для того, чтобы хорошо освоить нейросети нужно очень много экспериментировать - но игра стоит свеч. Если институциональные инвесторы используют этот инструмент, то и рядовые трейдеры тоже могут попытаться добиться успеха именно с помощью обученных нейросетей, ведь на вход сети можно подавать все - от индикаторов и цен до сигналов фундаментального анализа.
Литература
1. Нейрокомпьютинг и его применение в науке и бизнесе. А. Ежов, С. Шумский. 1998 г
Размещено на Allbest.ru
Подобные документы
Сущность и понятие кластеризации, ее цель, задачи, алгоритмы; использование искусственных нейронных сетей для кластеризации данных. Сеть Кохонена, самоорганизующиеся нейронные сети: структура, архитектура; моделирование кластеризации данных в MATLAB NNT.
дипломная работа [3,1 M], добавлен 21.03.2011Основные отличия нейросетей от других методов. Неформализуемые и трудно формализуемые задачи. Моделирование интеллектуальной деятельности человека. Оценка стоимости квартир в Перми с использованием нейронных сетей. Проектирование и обучение нейросети.
презентация [139,4 K], добавлен 14.08.2013Возможности Matlab, выполнении математических и логических операций, интерактивные инструменты построения графиков. Конструкции для обработки и анализа больших наборов данных, программные и отладочные инструменты, оптимизация данных, операций и функций.
статья [170,5 K], добавлен 01.05.2010Использование программного обеспечения MatLab для выполнения математических расчетов в области линейной алгебры, теории информации и обработки сигналов, автоматического и автоматизированного управления. Возможности стандартного интерфейса программы.
курсовая работа [178,7 K], добавлен 08.08.2011Анализ применения нейронных сетей для прогнозирования ситуации и принятия решений на фондовом рынке с помощью программного пакета моделирования нейронных сетей Trajan 3.0. Преобразование первичных данных, таблиц. Эргономическая оценка программы.
дипломная работа [3,8 M], добавлен 27.06.2011Исследование линейных динамических моделей в программном пакете Matlab и ознакомление с временными и частотными характеристиками систем автоматического управления. Поиск полюса и нуля передаточной функции с использованием команд pole, zero в Matlab.
лабораторная работа [53,1 K], добавлен 11.03.2012Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.
лабораторная работа [1,1 M], добавлен 05.10.2010Процесс создания канального вокодера. Программа на языке Matlab, модель, созданная с помощью системы Matlab Simulink. Осуществление сжатия и восстановления речевого сигнала в реальном времени до уровня не более 4800 бит/с с удовлетворительным качеством.
курсовая работа [393,7 K], добавлен 12.03.2009Общее описание программы Statistica. Архитектура и интерфейс системы. Регрессионный анализ в Statistica. Решение задачи регрессионного анализа с помощью пакета анализа данных табличного процессора MS Excel. Многомерный дисперсионный анализ в SPSS.
курсовая работа [2,4 M], добавлен 22.01.2013Схема речеобразования у человека. Запись и считывание данных из речевого сигнала в MATLAB. Синтаксис вызова функции. Операции над звуковыми файлами. Исследование мужского и женского голосов. Спектрограммы голосов. Обработка речи в Simulink, Wavelet.
контрольная работа [2,2 M], добавлен 18.04.2013