Д.Катс.Д.Маккормик.Энциклопедия торговых стратегий. Донна л. Маккормик
Скачать 5.96 Mb.
|
ГЛАВА 15 СОЧЕТАНИЕ выходов с ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ 365 } } // обрабатываем следующий день ) Вышеприведенный фрагмент кода описывает логику стратегии выхо- дов. Параметры ptlim и mmstp имеют значения 4,5 и 1,5 соответственно, поскольку эти значения давали лучшую эффективность при торговле порт- фелем (см. табл. 14-1 в гл. 14). Параметр thresh, т.е. значение порога для выходов на основе нейронного прогноза, подвергается оптимизации. Ло- гика дополнительного выхода видна в блоке «if», где сравниваются порог и прогноз, выданный сетью. Если условие выполняется, то по цене закры- тия дня отдается приказ на выход из сделки. Параметр thresh прогоняется от 50 до 80 с шагом 2. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ НЕЙРОННОГО ВЫХОДА Результаты базовой системы В табл. 15-1 приведены результаты работы МССВ. Порог был установлен достаточно высоко, чтобы сеть не генерировала никаких выходов. Эта таблица идентична табл. 14-1 при оптимальных значениях фиксирован- ной защитной остановки и целевой прибыли. В таблице: ВЫБ — часть об- разца данных (В — в пределах, ВНЕ — вне пределов выборки); ПРИБДЛ — общая прибыль длинных сделок, в тысячах долларов; ПРИБКР — общая прибыль коротких сделок, в тысячах долларов; Ф.ПРИБ — фактор при- были; ДОХ % — прибыль в процентах годовых; Р/ПРИБ — годовое соот- ношение риска/прибыли; ВЕР — ассоциированная вероятность статисти- ческой достоверности; СДЕЛ — число сделок на всех рынках в составе портфеля; ПРИБ% — процент прибыльных сделок; $СДЕЛ — средняя при- быль/убыток со сделки; ДНИ — средняя длительность сделки в днях. Между эффективностью системы в пределах и вне пределов выборки существует очевидная взаимосвязь. Средняя сделка принесла убыток $1581 в пределах и $1580 вне пределов выборки; процент прибыльных сделок на обеих выборках составил 39%. Соотношения риск/прибыль со- ставили —1,46 в пределах и —1,45 вне пределов выборки. Результаты торговли портфелем с нейронным выходом Табл. 15-2 представляет собой стандартную таблицу результатов оптими- зации. В ней приведены результаты торговли портфелем финансовых инструментов для всех значений порога, а также результаты решения, которое было оптимальным в пределах выборки, полученные на данных вне выборки. 366 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов В пределах выборки было получено улучшение общих результатов за счет применения дополнительного нейронного выхода. Средняя прибыль в сделке достаточно медленно изменялась при изменениях значения по- рога. Наилучшее значение порога составило 54, средняя сделка при этом приносила убыток в $832. Процент прибыльных сделок составил 41%, го- довое соотношение риска/прибыли —0,87. Таким образом, внедрение нейронного выхода значительно повысило эффективность торговли по сравнению с результатами, приведенными в табл. 15-1. Вне пределов вы- борки, впрочем, улучшения не наблюдалось: эффективность не особо от- личалась от работы базовой МССВ. Когда исследовалась работа нейрон- ных сетей для генерации входов, эффективность при переходе на данные вне пределов выборки падала весьма резко — видимо, нечто подобное произошло и в этом тесте, где в качестве элемента стратегии выходов ис- пользовалась та же нейронная сеть. Результаты тестирования нейронных выходов на различных рынках В табл. 15-3 приводятся результаты торговли с использованием оптималь- ной МССВ и дополнительного нейронного сигнала выхода на различных рынках. Было использовано оптимальное значение порога (54) согласно табл. 15-2. Значительная прибыль как в пределах, так и вне пределов выборки была получена только на рынке живых свиней. Ряд рынков (например, немецкая марка и иена) показали значительную прибыль в пределах вы- борки, но были убыточны вне ее пределов. В длинных позициях рынки NYFE и неэтилированного бензина были прибыльны как в пределах, так и вне пределов выборки — это можно объяснить и статистическим арте- фактом, поскольку в пределах выборки в длинных позициях многие рын- ки приносили прибыль. Таблица 15—1. Эффективность базовой МССВ, предназначенной для использования в сочетании с нейронной сетью, прогнозирую- щей сигналы выхода ВЫБ В ВНЕ ПРИБДЛ -1976 -974 ПРИБКР -4073 -1632 Ф.ПРИБ 0.83 0.84 дох% -10.3 -21.6 Р/ПРИБ -1.46 -1.45 ВЕР 1.0000 0.9985 СДЕЛ 3826 1649 ПРИБ% 39 39 $СДЕЛ -1581 -1580 ДНИ 8 8 ГЛАВА 15 СОЧЕТАНИЕ выходов с ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ 367 Таблица 15—2. Эффективность торговли портфелем при сочетании МССВ и нейронного сигнала выхода для различных значений пара- метра порога МЕТОДОЛОГИЯ ТЕСТИРОВАНИЯ ГЕНЕТИЧЕСКОГО КОМПОНЕНТА ВЫХОДОВ Поскольку практически очевидна необходимость отдельных наборов пра- вил для длинных и коротких позиций, мы провели два теста. В первом тес- те система генерирует случайные входы в длинные позиции (сигналы к открытию коротких позиций игнорируются), а для выходов применяется МССВ, а также отдельные правила, которые разрабатываются генетичес- ким алгоритмом. Во втором тесте все входы в длинные позиции игнори- руются, открываются только короткие позиции. Делается попытка раз- работать правила, хорошо работающие в качестве дополнения к МССВ для коротких сделок. static void Model {float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, float *dlrv, int nb, TRDSIM &ts, float *eqcls) { // Выполняет случайные входы с модифицированным стандартным выходом // и с дополнительным генетически развитым "сигнальным выходом" // File = x21mod01.c // parms - набор [1..MAXPRM] параметров // dt - набор [1..nb] дат в формате ГГММДД // орn - набор [ 1..nb] цен открытия // hi - набор [1..nb] максимальных цен 368 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов // lo - набор [l..nb] минимальных цен // cls — набор [l..nb] цен закрытия // vol - набор [l..nb] значений объема // oi - набор [l..nb] значений открытого интереса // dlrv — набор [l..nb] средних долларовой волатильности // nb - количество дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls — набор [l..nb] уровней капитала по ценам закрытия // объявляем локальные переменные static int rc, cb, ncontracts, maxhold, signal, ranseed; static float iranstp, ptlim, limprice, stpprice, entryprice; static int entryposted, entrybar, exitsignal, modeltype; static int rulel[MAXBAR+1], rule2[MAXBAR+1], rule3[MAXBAR+1]; static float exitatr[MAXBAR+1], rnum, thresh; static long iseed; // копируем параметры в локальные переменные для удобного обращения ranseed = parms[14]; // используется для инициализации случайной // последовательности modeltype = parms[15]; // 1=длинные позиции, 2=короткие позиции maxhold = 10; // период максимального удержания позиции ptlim =4.5; // целевая прибыль в единицах среднего истинного диапазона mmstp = 1.5; // защитная остановка в единицах среднего истинного диапазона // выполняем вычисления по всему объему данных, включая правила AvgTrueRangeS{exitatr,hi,lo,cls,50,nb); // средний истинный диапазон для / / выхода Rules{opn, hi, lo, cls, vol, oi, exitatr, nb, parms [1] , parms[2], parms[3], parms [4] , rulel); Rules (opn, hi, lo, cls, vol, oi, exitatr, nb, parms[5], parms[6], parms[7], parms[8], rule2); Rules (opn, hi, lo, cls, vol, oi, exitatr, nb, parms[9], parms[10], parms[11], parms[12], rule3); // запускаем генератор случайных чисел // ... используем различные случайные последовательности для каждого рынка // ... ts.model() возвращает индекс рынка (SP=1, YX=2, ...) iseed = -(ranseed + 10 * ts.model()); rnum = ran2(&iseed); // проходим через дни, чтобы смоделировать реальную торговлю for(cb = 1; cb <= nb; cb++) ( // не открываем позиций до начала периода выборки // ... то же самое, что установка MaxBarsBack в TradeStation if(dt[cb] < IS_DATE) ( eqcls[cb] = 0.0; continue; ] // выполняем ожидающие приказы и считаем кумулятивный капитал rc = ts.update(opn[cb], hi[cb], lo[cb], cls[cb),cb); if(rc != 0) nrerror("Trade buffer overflow"); eqcls[cb] = ts.currenteguity(EQ_CLOSETOTAL); // считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 2 новых контрактов на S&P-500 от 12/31/98 ncontracts = RoundToInteger(5673.0 / dlrv[cb]); if(ncontracts < 1) ncontracts = 1; // избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+l] == lo[cb+l]) continue; ГЛАВА 15 СОЧЕТАНИЕ выходов с ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ // генерируем "стандартные" случайные сигналы входа signal = 0; rnum = ran2 (Stiseed) ; if (rnum < 0.025 && modeltype == 2) signal = -1; // случайный короткий вход else if (rnum > 0.975 && modeltype == 1) signal = 1; // случайный длинный вход // входим в сделки по цене открытия entryposted = 0; if(ts.position() <= 0 && signal == 1) ( ts.buyopen('1', ncontracts); entryposted = 1; entryprice = opn[cb+l]; entrybar = cb + 1; } else if(ts.position() >= 0 && signal == -1) { ts.sellopen('2', ncontracts); entryposted = -1; entryprice = opn[cb+l] ; entrybar = cb + 1; } // выходим из сделок, используя модифицированный стандартный выход // вместе с нейросетевым выходом exitsignal = rulel[cb] && rule2[cb] && rule3[cb]; if(entryposted > 0} { // инициализация и выходы для длинных позиций в день входа limprice = entryprice + ptlim * exitatr[cb]; stpprice = entryprice - mmstp * exitatr[cb]; ts.exitlonglimit{'A' , limprice); ts.exitlongstop('B', stpprice); if(exitsignal) ts.exitlongclose('C') ; } else if{entryposted < 0) { // инициализация и выходы для коротких позиций в день входа limprice = entryprice - ptlim * exitatr[cb]; stpprice = entryprice + mmstp * exitatr[cb) ,• ts.exitshortlimit('D', limprice); ts.exitshortstop('E' , stpprice); if(exitsignal) ts.exitshortclose('F') ; } else ( // выходы после дня входа if(ts.position()> 0) [ // длинные позиции ts.exitlonglimit('G' , limprice) ; ts.exitlongstop('H', stpprice); if(cb-entrybar >= maxhold)|| exitsignal) ts.exitlongclose('I') ; } else if(ts.position() < 0) [ // короткие позиции ts.exitshortlimit('J' , limprice); ts.exitshortstop('K' , stpprice); if(cb-entrybar >= maxhold || exitsignal) ts.exitshortclose('L'); } ) } // обрабатываем следующий день } 369 370 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов Таблица 15—3. Эффективность торговли МССВ в сочетании с нейронным сигналом выхода в пределах и вне пределов выборки на различных рынках Вышеприведенный код демонстрирует логику как входов, так и выхо- дов. Параметр modeltype управляет выбором длинных или коротких по- зиций для тестирования. Параметры ptlim и mmstp задают соответствен- но целевую прибыль и защитную остановку; они фиксированы на тех же уровнях, что и в предыдущем тесте нейронной сети. Каждое из трех пра- ГЛАВА 15 СОЧЕТАНИЕ выходов с ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ 371 вил рассчитывается как серия значений ИСТИНА/ЛОЖЬ, и если все три принимают значение ИСТИНА, то подается сигнал на выход exitsig. В текст программы добавлен оператор if, который подает сигнал на выход по цене закрытия, если (if) все три правила дают значение ИСТИНА (exitsig = ИСТИНА). Эволюция правил для длинных и коротких позиций проводи- лась аналогично эволюции правил для входов, описанной в гл. 12. Исполь- зовались 12 хромосом с тремя генами-правилами каждая. Для получения правил выхода из длинных и коротких позиций проводится эволюция 2500 поколений с использованием OptEvolve. Затем для тестирования в преде- лах и вне пределов выборки отбирались по 10 лучших длинных и корот- ких решений. 10 лучших решений с базовой стратегией выхода В табл. 15-4 приведены 10 лучших значений для длинных и коротких по- зиций. Обозначения в таблице: НОМЕР— номер решения, ВЕР— веро- ятность статистической достоверности (в этих числах пропущена, но пред- полагается десятичная точка), $СДЕЛ — средняя прибыль/убыток со сдел- ки, СДЕЛ — общее количество проведенных сделок, Ф.ПРИБ — фактор прибыли, ДОХ% — доходность в процентах годовых. Лучшее из решений для длинных позиций было обнаружено в 845 по- колении эволюционного процесса, а для коротких — в 1253 поколении. В отличие от теста моделей входа ни одно из генетически полученных ре- шений не обеспечило прибыли, но, согласно табл. 15-5, сочетание генети- ческих сигналов с базовой стратегией выходов привело к явному улучше- нию результатов. Правила, соответствующие хромосомам из табл. 15-4, звучат следую- щим образом. Правила для выхода из длинной позиции: если цена закрытия текуще- го дня выше экспоненциального скользящего среднего (ЭСС) цен закры- тия с периодом 12 дней, но ниже ЭСС с периодом 49 дней и текущий день представляет собой новый шестидневный максимум, то из длинной пози- ции следует выходить. Правила, таким образом, ищут ситуацию, где на фоне долгосрочного падающего тренда наблюдается кратковременный рост цен, достигший своего максимума и готовый завершиться, после чего должно возобновиться падение — весьма подходящий момент для выхо- да из длинной позиции. Правила для короткой позиции гласят, что выходить следует в случае, когда цена закрытия текущего дня выше 16-дневного ЭСС и 22-дневного простого скользящего среднего цен закрытия, а индикатор конвергенции/ дивергенции скользящих средних (MACD) падает. Данный MACD исполь- зует ЭСС с периодом 6 дней для быстрого компонента и ЭСС с периодом 372 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов Таблица 15—4. Лучшие 10 решений для длинных и коротких позиций, полученные в процессе эволюции Решения для длинных позиций НОМЕР 845 1752 1804 1464 1755 1591 1584 637 1810 1850 ВЕР 706728 712448 737793 728199 729060 761321 733418 750316 739410 742540 $СДЕЛ -324 -350 -354 -379 -382 -384 -394 -397 -399 -399 СДЕЛ 1972 1947 1994 1944 1934 1999 1925 1974 1944 1938 Ф.ПРИБ 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 ДОХ% -4.9 •4.4 -5.0 -5.0 -5.1 -4.5 -4.8 -5.2 -5.0 -5.3 Решения для коротких позиций НОМЕР 1253 1758 1183 1379 1129 472 1833 1816 1881 1427 ВЕР 999842 999695 998990 999639 999211 999161 999161 999834 998851 999581 $СДЕЛ -1645 -1646 -1717 -1755 -1756 -1757 -1757 -1764 -1764 -1767 СДЕЛ 1959 1943 1885 1920 1885 1885 1885 1932 1869 1916 Ф.ПРИБ 0.78 0.80 0.81 0.79 0.81 0.81 0.81 0.79 0.82 0.80 ДОХ% -10.2 -10.1 -10.1 -9.9 -10.1 -10.2 -10.2 -10.3 -9.9 -10.0 10 дней для медленного компонента. Таким образом, система выходит в тех случаях, когда после сглаживания рынок все еще производит впечат- ление падающего, но последняя цена закрытия пробивает вверх два сколь- зящих средних, что может быть признаком начала нового повышающего- ся тренда. Результаты выходов по описанным правилам для длинных и коротких позиций В табл. 15-5 приведены результаты торговли с помощью 10 лучших реше- ний (длинные и короткие позиции), использующих МССВ и генетически разработанные сигналы выхода. Входы в рынок были случайными. В таб- лице отдельно показаны результаты длинных и коротких позиций. Дан- ГЛАВА 15 СОЧЕТАНИЕ выходов с ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ 373 Таблица 15—5. Эффективность МССВ с добавлением генетически разрабо- танных правил сигнала выхода при случайном, входе в сделки Длинные позиции ТЕСТ СТАНД ГЕН СТАНД ГЕН ВЫ6 в в ВНЕ ВНЕ ПРИБ -1324 -640 -942 -845 ПРИБДЛ -1324 -640 -942 -845 ПРИБКР 0 0 0 0 Ф.ПРИБ 0.93 0.96 0.89 0.89 ДОХ%. -7.3 -4.9 -13.2 -15.8 Р/ПРИБ -0.35 -0.17 -0.61 -0.60 ВЕР 0.8628 0.7067 0.8938 0.8903 СДЕЛ 1923 1972 830 854 ПРИБ* 41 43 39 41 $СДЕЛ -688 -324 -1135 -990 ДНИ 8 7 8 7 Короткие позиции ТЕСТ СТАНД ГЕН СТАНД ГЕН ВЫБ в в ВНЕ ВНЕ ПРИБ -3850 -3223 -1497 -889 ПРИБДП 0 0 0 0 ПРИБКР -3850 -3223 -1497 -889 Ф.ПРИБ 0.80 0.78 0.82 0.86 ДОХ%. -9.9 -10.3 -20.4 -18.2 Р/ПРИБ -1.09 -1.15 -1.02 -0.73 ВЕР 0.9997 0.9998 0.9818 0.9325 СДЕЛ 1847 1959 792 841 ПРИБ% 37 37 38 40 $СДЕЛ -2084 -1645 -1890 -1056 ДНИ 8 6 8 6 ные также разбиты по номеру теста и по виду выборки. Символы В и ВНЕ означают результаты тестов на данных в пределах выборки и вне преде- лов выборки соответственно. СТАНД означает тест с использованием толь- ко МССВ, ГЕН — тест МССВ в сочетании с генетически разработанными правилами. В длинных позициях в пределах выборки добавление правил значи- тельно снизило средний убыток в сделке — с $688 до $324. Процент при- быльных сделок повысился с 41 до 43%. Годовое соотношение риска/при- были улучшилось с —0,35 до —0,17. Вне пределов выборки эффект гене- тически разработанных сигналов выхода сохранился, хотя и в меньшей степени. Средний убыток в сделке снизился с $1135 до $990. Процент при- быльных сделок повысился с 39 до 41 %.Соотношение риска/прибыли улуч- шилось с —0,61 до —0,60. В общем, добавление генетически разработан- ных правил к стандартной стратегии выходов себя оправдало. В отличие от нейронных сигналов выхода эффект сохранился вне пределов выбор- ки, т.е. подгонка под исторические данные и избыточная оптимизация не имели решающего значения. В коротких позициях как в пределах, так и вне пределов выборки от- мечен подобный положительный эффект. В пределах выборки добавле- ние генетически разработанного сигнала выхода снизило средний убы- ток в сделке с $2084 до $1645. Процент прибыльных сделок не изменился. Как ни странно, годовое соотношение риска/прибыли ухудшилось с —1,09 до — 1,15. Вне пределов выборки средний убыток в сделке значитель- но уменьшился: с $1890 до $1058. Процент прибыльных сделок вырос с 38 до 40%, а годовое соотношение риска/прибыли улучшилось с —1,02 до —0,73. Как и ранее, добавление генетически найденного правила выхода к системе МССВ доказало свою эффективность и вне пределов выборки. 374 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов Эффективность длинных позиций на различных рынках В табл. 15-6 приведена информация о работе системы МССВ совместно с генетически разработанными правилами выхода из длинных позиций на различных рынках. Как в пределах, так и вне пределов выборки были выгодны несколько рынков: NYFE, сырой нефти, неэтилированного бен- зина и живых свиней. Другие рынки были прибыльными в пределах вы- борки и убыточными вне пределов выборки, или наоборот. Взаимосвязь между результатами торговли в пределах и вне пределов выборки была низкой. Таблица 15—6. Эффективность системы МССВ с добавлением генетически разработанных правил выхода. Длинные позиции. Сравни- тельные данные по различным рынкам |