Разделы



Модель на обращенном во времени медленном %

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

Для получения набора фактов под данную модель сперва следует про­ извести расчеты целевого показателя — обращенного во времени Мед­ленного %К. Каждый факт затем записывается в файл при проходе через все точки данных для всех рынков в составе портфеля. Для каждого тор­ гового дня процесс создания факта начинается с расчета входных пере­менных. Это делается путем расчета разности между парой цен и делени­ ем результата на квадратный корень количества дней, лежащих между этими двумя ценами. Квадратичная поправка используется, поскольку в случайном рынке стандартное отклонение между двумя днями примерно пропорционально квадратному корню от количества дней между ними. Эта поправка сделает вклад каждой разницы цен в факт примерно рав­ным. В этом эксперименте в каждом факте содержится 18 изменений цены, рассчитанных с квадратичной поправкой. Эти 18 значений будут служить как 18 входов нейронной сети после дополнительной обработки.

Пары цен (использованные при расчете изменений) выбираются с возрастающим расстоянием между ценами, т.е. чем дальше во времени, тем расстояние между точками данных больше. Первые несколько пар перед текущим днем берутся с расстоянием в один день, т.е. цена преды­ дущего дня вычитается из цены текущего и т.д. После нескольких таких пар шаг изменяется до 2 дней, затем до 4,8 и т.д. Точная расстановка вклю­ чена в код программы в виде таблицы. Смысл этого состоит в получении максимально точной информации о новейших процессах. Чем дальше во времени от текущего дня находятся данные, тем больше вероятность того, что только долговременные процессы будут иметь значение, следователь­ но, можно обойтись меньшим разрешением. Такая выборка дней должна обеспечивать достаточное разрешение для регистрации циклов и других явлений с периодом от 1 — 2 до 50 дней и более. Такой подход принят в соответствии с рекомендацией Марка Джурика ( jurikres . com ).

Уроки Forex - это хорошая возможность для вас подготовиться к успешной работе на международном валютном рынке Форекс!

Собрав для будущего факта 18 скорректированных квадратным кор­нем разностей для входов, мы используем процедуру нормализации. Це­лью нормализации является удаление информации, заложенной в ампли­туде, при сохранении формы волны. При обращении с 18 переменными входа как с вектором, нормализация состоит в масштабировании вектора в единицы длины. Расчеты включают возведение каждого элемента век­тора в квадрат, сложение квадратов, вычисление квадратного корня и за­тем деление каждого элемента на полученное число. Так получаются пе­ременные входа для нейронной сети — фактически, программа нейрон­ной сети в дальнейшем еще раз будет масштабировать эти входы, приво­дя их значения к уровням, допустимым для входных нейронов.

п»ї

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

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

Следующий шаг разработки нейронного прогностического устрой­ства — реальная тренировка нескольких сетей на полученном наборе фактов. Обучают серию нейронных сетей различного размера, причем метод отбора наиболее хорошо обученной и устроенной сети не состоит, как можно было бы подумать, в проверке ее эффективности на данных вне пределов выборки. Вместо этого проводится коррекция коэффици­ентов корреляции (показателей прогностических способностей каждой сети), причем коэффициент коррекции зависит от размера выборки дан­ных и количества параметров (связей между нейронами) в исследуемой сети. При этом используется то же уравнение, что и при коррекции мно­жественных корреляций, получаемых при многовариантной регрессии (см. главу о статистике и оптимизации). Чем больше и сложнее сеть, тем сильнее будут скорректированы (в меньшую сторону) коэффициенты корреляции. Этот подход помогает оценить степень излишней подгонки системы под исходные данные. Чтобы большая сеть превзошла малень­кую, она должна давать значительно больший коэффициент корреляции. Этот метод позволяет выбирать лучшие сети без обычного обращения к данным вне пределов выборки. Все сети проходят полное обучение, т.е. не делается попыток скомпенсировать снижение степеней свободы мень­шим обучением сети.

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


Как было сказано выше, излишне подогнанные сети должны иметь очень низкие значения корреляции после проведения ее коррекции. Большое количество фактов в наборе (88 092) должно помочь избежать вредного влияния подгонки для сетей умеренного размера.


п»ї

 



 


Код включает две функции — обычную функцию Model , реализую­щая торговую модель, и процедуру подготовки входов нейронной сети PrepareNeurallnputs . Процедура, которая подготавливает входы, требует для работы индекса текущего дня (cb ) и серии цен закрытия (cls ).

Функция PrepareNeurallnputs при наличии индекса текущего дня и серии цен закрытия рассчитывает для данного факта все входы, необхо­димые нейронной сети. В списке параметр pbars указывает на относитель­ный по сравнению с текущим (приравненным к нулю) номер дня из про­шлых данных, используемый для вычисления вышеописанных разностей цен. Первый блок кода после объявления переменных запускает таблицу факторов подстройки цен. Таблица запускается на первом проходе фун­кции и содержит квадратные корни количества дней между каждой из пар цен, используемых для расчета разностей. Следующий блок кода рас­считывает скорректированные разности, а также суммы их квадратов, т.е. квадрат амплитуды или длину результирующего вектора.

Код, реализующий торговую модель, основан на наших обычных прин­ципах. После объявления переменных ряд параметров копируется в ло­кальные переменные для простоты ссылок. Затем рассчитываются сред­ний истинный интервал, используемый для стандартного выхода, и обра­щенный во времени Медленный %К с периодом 10 дней.

Один из параметров (mode ) выбирает режим работы кода. Mode = 1 запускает код для подготовки факта; файл открывается, заголовок (состо­ящий из числа входов — 18 и числа целей — 1) записывается, и счет фак­тов начинается с нуля. Это производится только при открытии первого из рынков в составе портфеля. Файл остается открытым все время дальней­шей обработки, вплоть до конца обработки последнего символа в порт­феле. После заголовка в файл записываются факты. Все данные до нача­ла периода выборки и после окончания периода вне выборки игнориру­ются. Используются только данные в пределах выборки. Каждый факт, записанный в файл, состоит из номера факта, 18 переменных входов, рас­считанных процедурой PrepareNeurallnputs , и цели (значения обращен­ного во времени Медленного %К). Пользователю сообщается информа­ция о продвижении работы.

Если mode выбирается равным 2, то нейронная сеть, обученная на вы­шеописанном файле с фактами, используется для генерации торговых вхо­дов. Первый блок кода открывает и загружает нужную сеть до начала рас­четов по первому рынку. После выполнения стандартных функций обнов­ления симулятора, расчета количества контрактов, избежания дней с ос­тановленной торговлей и т.п. запускается блок, генерирующий сигналы входа и выхода. Функция PrepareNeurallnputs вызывается для получения входных данных, соответствующих текущему дню. Сеть обрабатывает эти данные, и на основании ее выхода генерируются сигналы на вход в рынок.

Правила генерации сигналов таковы: если на выходе нейронной сети значение превышает порог thresh , то подается сигнал на продажу — сеть предсказывает высокое значение обращенного во времени Медленно­го %К, т.е. текущая цена закрытия, возможно, близка к максимуму на бли­жайшее будущее. Если на выходе сети значение составляет менее 100 — thresh , то подается сигнал на покупку. Например, если thresh установлен на уровне 80, то любой предсказанный Медленный %К более 80 будет вы­зывать сигнал на продажу, а любой Медленный %К менее 20 — сигнал на покупку.

Кроме того, встроены еще два блока, обеспечивающие отдачу соб­ственно приказа на вход в рынок и работу стандартизированного выхода. Эти блоки подобны использованным в предыдущих главах.

Читать далее: Методология тестирования модели на основе обращенного Медленного %К