Д.Катс.Д.Маккормик.Энциклопедия торговых стратегий. Донна л. Маккормик
Скачать 5.96 Mb.
|
ГЛАВА 11 НЕЙРОННЫЕ СЕТИ 265 При более консервативной оценке (с меньшей эффективной выбор- кой и, следовательно, с большей коррекцией коэффициентов корреляции) на основе данных табл. 11 -1 для работы в модели было выбрано две сети — сеть 18-6-1 (rm2.net) и сеть 18-14-4-1 (nn8.net). Они были признаны лучши- ми из сетей, способными потенциально эффективно работать вне преде- лов выборки. Для теста модели входа в рынок программа прогонялась со значением mode = 2; как обычно, тестировались все входы — по цене от- крытия, по лимитному приказу и по стоп-приказу. МОДЕЛИ НА ОСНОВЕ ТОЧКИ РАЗВОРОТА Для работы таких моделей требуются два дополнительных набора фак- тов, идентичных фактам для обращенного во времени Медленного %К во. всем, кроме целевого параметра. Цель первого набора равна 1, что обо- значает нижнюю точку разворота (минимум), когда завтрашняя цена от- крытия ниже цен трех предыдущих и десяти последующих дней. Если это условие не выполняется, то значение цели приравнивается к 0. Целью второго набора является 1, т.е. максимум, являющийся точкой разворота в случае, если завтрашняя цена открытия выше цен трех предыдущих и десяти последующих дней. Если это условие не выполняется, то значение цели приравнивается к 0. Если считать, что на рынке присутствуют ус- тойчивые модели, то нейронная сеть должна иметь способность усваи- вать их и предсказывать положение завтрашней цены открытия. В отличие от набора фактов для обращенного во времени Медленно- го %К в этих наборах факты генерируются только в тех случаях, когда зав- трашняя цена открытия имеет вероятность стать точкой разворота. На- пример, если завтрашняя цена открытия выше сегодняшней цены откры- тия, то, согласно предыдущим правилам, завтрашнее открытие уже не может считаться точкой разворота, что бы ни случилось в дальнейшем. Зачем заставлять сеть делать прогнозы, когда нет никакой неопределен- ности? Прогнозирование производится только в случаях, когда завтраш- няя цена открытия может составить точку разворота, и факты генериру- ются только для таких случаев. Обработка вводов, использование статистики и другие аспекты мето- дологии тестирования для моделей, основанных на точке разворота, иден- тичны используемым для модели на обращенном во времени Медлен- ном %К. Обе модели в принципе идентичны, различаются только цели предсказания и, следовательно, цели для обучения нейронных сетей. Кро- ме того, ввиду отличия прогнозов различаются правила получения сигна- лов входа на их основе. Выходы обученных сетей представляют вероятности (от 0 до 1) при- сутствия максимума или минимума. Два набора правил для двух моделей генерации сигналов входа таковы: для первой модели — если прогноз 266 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК минимума выше некоего порога, следует покупать; для второй модели — если прогноз максимума выше некоторого порога, следует продавать. Для обеих моделей порог представляет собой доверительный уровень для зак- лючения о будущем максимуме или минимуме рынка, которое делает ней- ронная сеть перед отдачей приказа. // запись фактов в файл for(cb = 1; cb <= nb; cb++) { if(dt[cb] < IS_DATE) continue; // период анализа if(dt [cb+10] > OOS_DATE) break; // игнорируем данные вне пределов // выборки if(opn[cb+l] >= Lowest (opn, 3, cb)} continue; // пропускаем эти факты fprintf(fil, "%6d", ++factcount); // номер факта PrepareNeurallnputs{var, els, cb) ; for(k = 1; k <= 18; k++) fprintf(fil, "%7.3f", var[k] ); // стандартные входные данные if(opn[cb+l] < Lowest {opn, 9, cb+10)) netout = 1.0; else netout =0.0; // считаем цель fprintf(fil, "%6.1f\n", netout); // цель if{(cb % 500) == 1) printf("CB = %d\n", cb); // информация о прогрессе } // генерируем входные сигналы, цены лимитных приказов и стоп-приказов signal=0; if(opn[cb+1] < Lowest (opn, 3, cb)) { // пускаем только эти PrepareNeurallnputs(var, cls, cb) ; // обрабатываем данные ntlset_inputv{nnet, &var[l]); // передаем в сеть входные данные ntlfire (nnet); // запускаем тест netout = ntlget_output(nnet, 0); // получаем выходные данные netout *= 100.О; // переводим в проценты if(netout > thresh) signal = 1; // сигнал на покупку } limprice = 0.5 * (hi[cb] + lo [cb]); stpprice = cls [cb] + 0 . 5 * signal * exitatr[cb] ; Поскольку код для модели, прогнозирующей минимумы, почти иден- тичен коду модели на основе обращенного во времени Медленного %К, выше приведены только два измененных блока. В первом блоке обращен- ный Медленный %К не используется, а вместо этого рассчитывается цель — серия нулей или единиц, указывающая на наличие (1) или отсут- ствие (0) минимумов. При записи фактов вместо значения Медленного %К записываются значения цели. Во втором блоке вводятся правила для срав- нения выхода нейронной сети с соответствующим порогом и генерации собственно сигналов входа в рынок. В обоих блоках включен код, препят- ствующий записи фактов и использованию прогнозирования в случае, когда завтрашняя цена открытия не может образовать минимум согласно правилам. В коде ниже приведены аналогичные правила прогнозирова- ния максимумов. ГЛАВА 11 НЕЙРОННЫЕ СЕТИ 267 if(dt[cb+10] > OOS_DATE) break; / / игнорируем данные вне пределов // выборки if(opn[cb+l] <= Highest(opn, 3, cb)) continue; // пропускаем эти факты fprintf{fil, "%6d", ++factcount); // номер факта PrepareNeurallnputs(var, cls, cb) ; for (k = 1; k <= 18; k++) fprintf(fil, "%7.3f", var[k]); // стандартные входные значения if{opn[cb+l] > Highest(opn, 9, cb+10)) netout = 1.0; else netout =0.0; // считаем цель fprintf(fil, "%6.1f\n", netout); // цель if({cb % 500) == 1) printf("CB = %d\n", cb); // информация о прогрессе } // генерируем входные сигналы, цены лимитных приказов и стоп- приказов signal=0; if(opn[cb+l] > Highest(opn, 3, cb)) { // запускаем только эти PrepareNeurallnputs{var, cls, cb) ; // обрабатываем данные ntlset_inputv(nnet, &var[l]); // передаем в сеть входные значения ntlfire (nnet); // запускаем сеть netout = ntlget_output(nnet, 0); // получаем выходные значения netout *= 100.О; // переводим в проценты if(netout > thresh) signal = -1; // сигнал на продажу } limprice = 0.5 * (hi[cb] + lo[cb]); stpprice = cls[cb] + 0.5 * signal * exitatr[cb]; Методология тестирования модели, основанной на точке разворота Методология идентична использованной для модели на обращенном во времени Медленном %К. Набор фактов генерируется, загружается в N-TRAIN, масштабируется и перетасовывается. Набор сетей по 3 — 4 слоя нейронов обучается до максимальной сходимости и «полируется». Рас- считываются статистические показатели, такие как скорректированная на избыточную подгонку корреляция. Результаты тестирования моделей, основанных на точке разворота Прогнозирование минимумов. Структура табл. 11-2 идентична табл. 11-1. Как и в случае с нейронной сетью, обучавшейся прогнозированию обра- щенного во времени Медленного %К, между числом связей в сети и мно- жественной корреляцией выхода с целью наблюдалось растущая связь; т.е. корреляция была выше для более крупных сетей. Сеть, в общем, обучалась на наборе из 23 900 фактов, что меньше, чем сеть для прогноза обращенно- го Медленного %К. Различие в количестве фактов объясняется тем, что ис- пользовались только случаи, где завтрашняя цена открытия могла представ- лять точку разворота. Поскольку факты для прогнозирования минимумов 268 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 11—2. Показатели обучения нейронных сетей для прогнозирования нижних точек разворота Название NN1.NET NN2.NET NN3.NET NN4.NET NN5.NET NN6.NET NN7.NET NN8.NET NN9.NET Реальное число Размер 18-4-1 18-6-1 18-8-1 18-10-1 18-12-1 18-16-1 18-20-1 18-14-4-1 18-20-6-1 23900 Число связей 76 114 152 190 228 304 380 312 486 Корреляция 0,109 0,121 0,146 0,166 0,167 0,185 0,225 0,219 0,294 Подразумевалось Корреляция после коррекции 0,094 0,100 0,122 0,141 0,137 0,148 0,188 0,188 0,260 23900 0,050 0,025 0,049 0,064 -0,019 -0,060 0,057 0,096 0,166 8000 Таблица 11—3. Показатели обучения нейронных сетей для прогнозирования верхних точек разворота Название NN1.NET NN2.NET NN3.NET NN4.NET NN5.NET NN6.NET NN7.NET NN8.NET NN9.NET Реальное число Размер 18-4-1 18-6-1 18-8-1 18-10-1 18-12-1 18-16-1 18-20-1 18-14-4-1 18-20-6-1 25919 Число связей 76 114 152 190 228 304 380 312 486 Корреляция 0,103 0,117 0,138 0,158 0,166 0,197 0,218 0,229 0,274 Подразумевалось Корреляция после коррекции 0,088 0,097 0,116 0,133 0,138 0,166 0,183 0,202 0,240 25919 0,035 -0,022 0,017 0,037 -0,029 0,033 0,015 0,119 0,124 8000 ГЛАВА 11 НЕЙРОННЫЕ СЕТИ 269 отстояли дальше друг от друга, резонно заключить, что избыточность в этой выборке будет ниже. При коррекции использовались следующие эффек- тивные размеры выборок: 23 919 фактов (исходная) и 8000 (эффективная выборка со сниженным количеством фактов). После коррекции наилуч- шие результаты были показаны самой большой из двух 4-слойных сетей, вторая 4-слойная сеть также была весьма результативной. Кроме этих двух сетей 3-слойная сеть с 10 нейронами среднего слоя также показала хоро- шие результаты. Для тестирования торговой эффективности была выбра- на большая сеть из 4 слоев (nn9.net) и маленькая сеть из трех слоев (nn4.net). Прогнозирование максимумов. В табл. 11-3 приводятся показатели раз- личных нейронных сетей, обученных на наборе из 25 919 фактов. Пока- затели и здесь были напрямую связаны с размером сети — большее ко- личество связей приводило к лучшему результату. После умеренной кор- рекции коэффициентов корреляции только малая 4-слойная сеть не под- чинилась этой закономерности, показав большую, чем ожидалось, кор- реляцию. При более сильной коррекции (в расчете на высокую степень излишней подгонки под исходные данные) выделялись только две 4-слой- ные сети, причем наибольшая сеть (nn9.net) показала самую высокую кор- реляцию. Одна из 3-слойных сетей (nn4.net) также показала достаточно высокий результат и была отобрана для проведения собственно теста. РЕЗУЛЬТАТЫ ТОРГОВЛИ ДЛЯ ВСЕХ МОДЕЛЕЙ В табл. 11-4 приведены лучшие показатели, полученные для данных, на- ходящихся в пределах выборки, а также эффективность портфеля на дан- ных в пределах и вне пределов выборки. Приведены показатели для всех комбинаций приказов, сетей и моделей. В таблице: ВЫБ — вид выборки данных (В — в пределах, ВНЕ — вне пределов выборки); ДОХ% — доход- ность в процентах годовых; Р/ПРИБ — соотношение риска/прибыли в годовом исчислении; ВЕР — ассоциированная вероятность статистичес- кой достоверности; СДЕЛ — число сделок на всех рынках в составе порт- феля; ПРИБ% — процент прибыльных сделок; $СДЕЛ — средняя прибыль/ убыток со сделки; ДНИ — средняя длительность сделки в днях; ПРИБДЛ — общая прибыль от длинных позиций в тысячах долларов; ПРИБКР— об- щая прибыль от коротких позиций в тысячах долларов. Столбцы PI, P2, РЗ представляют значения параметров: Р1 — пороговое значение, Р2 — но- мер нейронной сети (согласно табл. 11-1 — 11-3), РЗ— не использовался. Во всех случаях приведены те пороговые значения Р1, которые обеспечи- вали максимальную эффективность в пределах выборки. Вне пределов выборки были использованы те же значения. Порог для обращенного во времени Медленного %К оптимизировал- ся для каждого вида приказов с помощью прогонки параметра Р1 от 50 до 270 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 11—4. Эффективность портфеля с лучшими параметрами по данным выборки для каждого из тестов в пределах и вне пределов выборки ГЛАВА 11 НЕЙРОННЫЕ СЕТИ 271 Таблица 11—4. Эффективность портфеля с лучшими параметрами по данным выборки для каждого из тестов в пределах и вне пределов выборки (продолжение) 90 с шагом 1. Для моделей прогнозирования разворотных точек порого- вые значения прогонялись от 20 до 80 с шагом 2. В обоих случаях оптими- зация проводилась только в пределах выборки, и лучшие параметры за- тем использовались и в пределах, и вне пределов выборки во время тести- рования, как и в других главах этой книги. Результаты торговли для модели, основанной на обращенном Медленном %К Две выбранные нейронные сети с максимальной вероятностью устойчи- вой работы вне пределов выборки (согласно их скорректированным кор- реляциям) были исследованы в отношении их торговой эффективности. Первая сеть была 3-слойной (18-6-1 нейронов), вторая 4-слойной (18-14-4-1 нейронов). 272 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Результаты для сети 18-6-1. В пределах выборки, как и ожидалось, результаты были великолепными. Средняя сделка приносила более $6000 прибыли при всех видах входов, годовая прибыль составляла от 192,9% (вход по цене открытия, тест 1) до 134,6% (вход по стоп-приказу, тест 3). Такие результаты были получены на основе подгонки под данные слож- ной модели из 114 свободных параметров. Стоит ли за этим что-то, кроме излишней подгонки? Видимо, да. При использовании входа по стоп-при- казу вне пределов выборки удалось получить некоторую прибыль — сред- няя сделка принесла $362. Хотя вне пределов выборки другие виды вхо- дов были убыточными, эти убытки были меньше, чем наблюдавшиеся при тестировании других систем в предыдущих главах: при входе по цене от- крытия убытки составляли только $233 в сделке, а при входе по лимитно- му приказу (тест 2) — $331. Как это случалось и с другими моделями, вход по стоп-приказу работал лучше,чем вход по лимитному приказу. Вне пре- делов выборки система была прибыльна со всеми видами входов при тор- говле только длинными позициями. Короткие позиции были убыточны со всеми видами входов. Эффективность системы в пределах выборки была потрясающей для всех видов входов и на всех рынках с несколькими исключениями. Наи- худшей была эффективность на рынке евродоллара, видимо, ввиду свой- ственных этому рынку высоких транзакционных расходов. Слабо рабо- тала система на рынках серебра, соевого масла, казначейских облигаций и векселей, канадского доллара, британского фунта, золота и какао. Ви- димо, особенности этих рынков затрудняют нейросети, поскольку осталь- ные рынки были высокоприбыльными. Многие из этих рынков также работали плохо с другими моделями. Вне пределов выборки торговля была успешной для всех видов прика- зов на рынках казначейских облигаций (неприбыльных в пределах вы- борки), немецкой марки, швейцарского франка, иены, неэтилированно- го бензина, золота (также неприбыльного в пределах выборки), палладия и кофе. Многие другие рынки также были прибыльны с двумя или тремя видами входов. При использовании входа по стоп-приказу (наилучшего в целом) значительную прибыль приносили даже рынки S&P 500 и NYFE, а также живого скота, соевых бобов, соевой муки и овса. На рис. 11-1 изображен график изменения капитала для модели на основе прогнозирования обращенного во времени Медленного %К с вхо- дом по стоп-приказу. Как видно, капитал увеличивается в пределах вы- борки и в течение половины периода вне выборки, после чего начинается медленное снижение. Результаты для сети 18-14-4-1. Эта сеть в пределах выборки работала значительно лучше, чем вне ее пределов. В пределах выборки прибыль варьировалась от 328,9% в год (при входе по стоп-приказу, тест 6) до 534,7% (вход по цене открытия, тест 4). Во всех случаях средняя Прибыль в сделке Рисунок 11-1. График изменения капитала для модели, основанной на обращенном во времени Медлен- ном %К, нейронная сеть 18-6-1, вход по стоп-приказу. 274 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК превышала $6000. Как обычно, длинные позиции были прибыльнее ко- ротких. Вне пределов выборки все виды входов были убыточны, но, как и в предыдущем наборе тестов, эти убытки были меньше, чем характерные для торговых систем, описанных в других главах, т.е. ближе к $1000, чем к $2000. Эта сеть также проводила гораздо больше сделок, чем предыдущая, причем лучше всего работал вход по лимитному приказу (тест 5). Убытки длинных позиций были меньше, чем коротких, за исключением входа по стоп-приказу, где убыток коротких позиций был сравнительно неболь- шим. Повышенная эффективность в пределах выборки и резкое падение эффективности за ее пределами — четкий признак избыточной подгон- ки под данные, которой достигла большая сеть с 320 параметрами, под- строившись под особенности учебного набора данных, но потеряв эффек- тивность вне выборки. В пределах выборки практически все рынки были прибыльны со все- ми видами входов за тремя исключениями: серебро, канадский доллар и какао. Эти рынки в целом трудно поддаются любой системе. Вне преде- лов выборки система была прибыльна со всеми видами входов на ряде рынков: немецкой марки, канадского доллара, сырой нефти, мазута, пал- ладия, откормленного скота, живого скота и леса. По крайней мере с од- ним из видов входов работали прибыльно еще несколько рынков. График изменения капитала показывал постоянный рост вплоть до конца периода выборки, откуда начиналось плавное снижение, что харак- терно для поведения переоптимизированной системы. Для выборки из 88 092 фактов такая нейронная сеть, возможно, была слишком большой. Результаты торговли для модели, основанной на нижней точке разворота Две выбранные нейронные сети с максимальной вероятностью устойчи- вой работы вне пределов выборки (согласно их скорректированным кор- реляциям) были исследованы в отношении их торговой эффективности. Ниже рассмотрена эффективность большей (18-20-6-1) и меньшей из них (18-10-1). Результаты для сети 18-10-1. В пределах выборки эта сеть работала чрезвычайно прибыльно, что при такой степени подгонки неудивитель- но. Вне пределов выборки и эта система относилась к числу сильно убы- точных. Для всех трех видов входов (по цене открытия, по лимитному при- казу и по стоп-приказу — тесты 7, 8 и 9 соответственно) средний убыток в сделке составил около $2000, что типично для многих рассмотренных ра- нее убыточных моделей. Убытки были тем более примечательны, что мо- дель вела торговлю только длинными позициями, обычно более выгодны- ми, чем короткие. |