Д.Катс.Д.Маккормик.Энциклопедия торговых стратегий. Донна л. Маккормик
Скачать 5.96 Mb.
|
ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 357 Таблица 14—6. Эффективность торговли портфелем как функция парамет- ров исходной целевой прибыли и коэффициента адаптации при расширении лимита времени до 30 дней ицп 5.00 5.50 6.00 6.50 7.00 СРЕД КОЭФФ Р/ПРИБ ПРИБ% $СДЕЛ Р/ПРИБ ПРИБ% $СДЕЛ Р/ПРИБ ПРИБ% $СДЕЛ Р/ПРИБ ПРИБ% $СДЕЛ Р/ПРИБ ПРИБ% $СДЕЛ Р/ПРИБ ПРИБ% $СДЕЛ 0.05 -1.27_36_-1353_-1.28_36_-1378_-1.25_36_-1368_-1.25_36'>-1.31 36 -1380 -1.27 36 -1353 -1.28 36 -1378 -1.25 36 -1368 -1.25 36 -1375 -1.27 36 -1371 0.10 -1.31 37 -1303 -1.22 37 -1236 -1.24 37 -1274 -1.27 37 -1320 -1.29 37 -1362 -1.27 37 -1299 0.15 -1.57 38 -1486 -1.42 38 -1372 -1.36 37 -1336 -1.31 37 -1307 -1.33 37 -1339 -1.40 37 -1368 0.20 -1.84 40 -1662 -1.75 39 -1599 -1.62 39 -1502 -1.53 39 -1443 -1.40 38 -1346 -1.63 39 -1510 0.25 -2.04 42 -1766 -1.98 42 -1741 -1.98 41 -1767 -1.91 40 -1712 -1.77 40 -1623 -1.94 41 -1722 0.30 -2.20 44 -1856 -2.18 44 -1856 -2.07 43 -1776 -2.03 42 -1770 -2.01 42 -1769 -2.10 43 -1805 0.35 -2.32 46 -1884 -2.23 45 -1839 -2.22 45 -1856 -2.18 44 -1841 -2.11 44 -1790 -2.21 45 -1842 0.40 -2.52 46 -1981 -2.49 46 -1979 -2.46 45 -1977 -2.36 45 -1919 -2.30 45 -1896 -2.43 45 -1950 СРЕД -1.89 41 -1665 -1.82 41 -1622 -1.78 40 -1608 -1.73 40 -1585 -1.68 40 -1563 -1.78 40 -1608 жении целевой прибыли или защитной остановки, закрывалась вне зави- симости от ее прибыльности. В этом тесте мы будем использовать адап- тивную систему, аналогичную предыдущему тесту, но с расширением максимальной длительности сделки с 10 до 30 дней (табл. 14-6). Исходный уровень целевой прибыли будет переоптимизирован прогонкой от 5 до 7 с шагом 0,5. Таким же образом, коэффициент адаптации будет переопти- мизирован с помощью прогонки его значений от 0,05 до 0,4 с шагом 0,05. Код аналогичен использованному в предыдущем тесте, за исключением той его части, где определяется параметр maxhold. Наилучший результат получен при исходной целевой прибыли 5,5 и коэффициенте адаптации 0,1. Среднее соотношение риска/прибыли воз- росло с — 1,32 до — 1,22. Процент прибыльных сделок не изменился, но убыток в средней сделке составил $1236 по сравнению с $1325. В общем, увеличение допустимого времени удержания позиции привело к неболь- шому повышению эффективности торговой системы. Большинство сде- лок были закрыты задолго до истечения лимита времени, средняя сделка длилась 6—10 дней. 358 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов СРАВНЕНИЕ РЕЗУЛЬТАТОВ НАИЛУЧШЕЙ СТРАТЕГИИ ВЫХОДА НА РАЗЛИЧНЫХ РЫНКАХ В табл. 14-7 приводится эффективность лучшей стратегии выхода (с экс- поненциальной защитной остановкой, динамической целевой прибылью и расширенным до 30 дней ограничением времени) на различных рынках. Представлены результаты как в пределах, так и вне пределов выборки. В обеих выборках данных рынок NYFE был прибылен в длинной по- зиции. И в пределах, и вне пределов выборки получены значительные прибыли на рынке откормленного скота — в пределах выборки для длин- ных и коротких позиций, вне выборки — только для коротких позиций. И в длинных, и в коротких позициях как в пределах, так и вне пределов вы- борки был прибылен рынок живых свиней. Рынки немецкой марки и иены были прибыльны в пределах выборки только в длинных позициях, вне пределов выборки эти рынки были убыточны. Исключением была неболь- шая прибыль в коротких позициях на рынке иены, недостаточная для по- крытия убытков длинных позиций. Длинные позиции на рынке леса были высокоприбыльными в пределах выборки, но вне пределов выборки при- быль была незначительной. Наиболее эффективными были рынки откорм- ленного скота и живых свиней, на которых была получена реальная при- быль даже несмотря на случайные входы. В пределах выборки на рынке откормленного скота получена годовая прибыль 10,9%, а на рынке живых свиней 15,5%. Вне пределов выборки прибыль составила 43,1 и 31,9% со- ответственно. Результаты вне пределов выборки были выше, но это мо- жет быть вызвано меньшим объемом данных и меньшим количеством сделок, проведенных вне выборки. ЗАКЛЮЧЕНИЕ Выходы имеют принципиальное значение. За счет улучшения элементов управления риском и целевых прибылей можно улучшить соотношение риска/прибыли торговой системы и уменьшить ее убытки. Впрочем, по- лученные в вышеприведенных тестах достижения не столь высоки, как можно было ожидать. Например, хотя на двух наиболее прибыльных рын- ках при использовании случайного входа получена прибыль, торговля портфелем в целом была убыточной, что расходится с нашим предыду- щим опытом (Katz, McCormick, март, апрель 1998), когда прибыль при слу- чайных входах была получена на рынке S&P 500. Тогда выходы настраи- вались под используемый рынок, а не имели одинаковые параметры для всех рынков в составе портфеля. Эта разница может объяснить несовпа- дение результатов. В общем, при индивидуальной настройке компонен- тов системы к данному рынку можно достичь более высоких результатов, но за счет риска избыточной оптимизации и подгонки под исторические данные. Также следует отметить, что эти тесты проводились с весьма ГЛАВА 14 УЛУЧШЕНИЯ СТАНДАРТНОЙ СИСТЕМЫ ВЫХОДА 359 Таблица 14—7. Сравнение результатов системы с динамической целевой прибылью, защитной остановкой на основе ЭСС и 30-дневным ограничением времени, полученных на различных рынках жесткими транзакционными расходами, в то время как, например, на рын- ке S&P 500 комиссионные относительно типичной долларовой волатиль- ности почти незаметны, и роль играет только проскальзывание. На дру- гих рынках для получения соответствующей долларовой волатильности приходится торговать большим количеством контрактов, что делает ко- миссионные важным фактором расхода. В предыдущих исследованиях расходы на сделки игнорировались или задавались минимальными, по- скольку таков был исследуемый рынок S&P 500, что также могло повли- ять на разницу в результатах. 360 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов При сравнении стандартной стратегии выхода, использованной при изучении моделей входа (средний убыток составлял $2243 со сделки, стан- дартное отклонение $304), с лучшей из разработанных стратегий выхода (убыток со сделки $1236, т.е. на 44% ниже), нельзя не отметить улучше- ния, при том что многие из наиболее эффективных (пусть и неприбыль- ных) моделей входа, несомненно, принесли бы прибыль при сочетании с наилучшей стратегией выхода. ЧТО МЫ УЗНАЛИ? * Выходы имеют важное значение для общей эффективности. Попытки улучшения выходов в этой главе обеспечили сниже- ние средних убытков в сделке более чем на $1000 по сравне- нию со стандартным выходом, использованным при исследо- вании входов. * Как и в случае с входами, поиск хорошего выхода подобен по- иску крошечного островка неэффективности в море эффек- тивного рынка. Хотя такие острова есть, найти их непросто. ГЛАВА 15 Сочетание выходов с искусственным интеллектом В этой главе будет исследоваться модифицированная стратегия стандарт- ного выхода (МССВ) в сочетании с элементами, основанными на нейрон- ных сетях и генетических алгоритмах. В гл. 11 для генерации сигналов входа были разработаны системы прогнозирования на основе нейронных сетей. Один из этих нейронных индикаторов (сеть на обращенном во вре- мени Медленном %К) пытался предсказывать положение завтрашней цены относительно диапазона цен на следующие несколько дней. Эту сеть можно использовать совместно со стратегией выхода; если в длинной по- зиции сеть указывает, что рынок близок к максимуму следующих несколь- ких дней, то имеет смысл выйти из позиции, пока рынок не начал падать. Если в короткой позиции сеть показывает, что цены будут расти, то так- же следует выходить из позиции, не дожидаясь убытков при реальном движении рынка. Первый тест из приведенных ниже исследует поведение нейронной сети, прогнозирующей обращенный во времени Медленный %К в сочета- нии с модифицированной стратегией выхода. Нейронная сеть, генериру- ющая собственный сигнальный выход, не может быть применена отдельно от других стратегий выхода, поскольку она не всегда будет подавать сиг- нал на закрытие позиции. Сеть создана для генерации сигналов входа, т.е. она подает сигнал, когда есть вероятность, что рынок поведет себя опреде- ленным образом. При этом отсутствие сигнала не означает, что на рынке не может произойти чего-то важного. Когда мы занимаем позицию на рын- ке, то в какой-то момент из нее придется выходить, причем выход нельзя отложить до того времени, когда будет предсказано значимое событие. В этом случае МССВ гарантирует, что любая сделка будет иметь защитную остановку управления капиталом и ограничение времени, обеспечиваю- щие выход. Нейронная сеть может обеспечить улучшение данной страте- гии, иногда предсказывая разворот рынка против занятой позиции. Таким образом, часть убыточных сделок может превратиться в прибыльные. Второй набор тестов (для длинных и коротких позиций) использует генетический алгоритм для разработки правил генерации сигнала выхо- да. Правила используются подобно нейронной сети, т.е. создают допол- 362 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов нительные к МССВ сигналы выхода в моменты, когда вероятен разворот рынка. Шаблоны правил и методология генерации идентичны использо- ванным для генерации входов в гл. 12. Эти дополнительные выходы, как можно надеяться, улучшат эффективность системы за счет выхода с при- былью из некоторых потенциально убыточных сделок и ограничения убытков в других сделках. С помощью вышеописанных методов могут быть разработаны более сложные выходы, не рассмотренные в данной главе. Например, нейрон- ную сеть можно использовать для генерации не только собственно выхо- дов, но и для определения уровней защитных лимитных остановок. Для этого же можно применить генетические алгоритмы. Нейронные сети хорошо себя зарекомендовали как прогностический инструмент для получения сигналов входа. В пределах выборки прибыль была невероятной, вне пределов выборки — гораздо выше прибыли слу- чайных входов (хотя торговля портфелем в целом была убыточной). Та- ким образом, была продемонстрирована реальная прогностическая цен- ность. Использование подобных прогнозов для того, чтобы закрывать по- зиции до разворота рынка, должно повысить эффективность торговли, даже если это коснется весьма небольшого количества сделок. То же са- мое относится и к правилам, полученным генетическими методами. При этом не следует ожидать чудесного роста эффективности, поскольку в любом случае система будет генерировать немного дополнительных сиг- налов выхода, которые будут влиять на считанные сделки, возможно, в положительную сторону. Таким образом, общее улучшение будет неве- лико. Поскольку для нижеприведенных тестов правила разрабатываются заново, то, возможно, будет обнаружено больше случаев эффективного применения сигналов выхода, чем было обнаружено для сигналов входа. МЕТОДОЛОГИЯ ТЕСТИРОВАНИЯ НЕЙРОННОГО КОМПОНЕНТА СТРАТЕГИИ ВЫХОДОВ Мы используем наибольшую из двух лучших нейронных сетей, обучен- ных прогнозированию обращенного во времени Медленного %К. Пред- варительная обработка и логика принятия решений идентичны исполь- зованным в гл. 11. Используется сеть 18-14-4-1 (18 нейронов в первом слое, 14 в первом промежуточном, 4 во втором промежуточном и 1 на выходе). Параллельно используется МССВ. В дополнение к условиям выходов МССВ вводится условие: если прогнозируемое значение обращенного во времени Медленного %К выше некоего порога, т.е. положение рынка от- носительно ценового диапазона ближайшего будущего высоко, то систе- ма выходит из длинной позиции. Подобным же образом, если прогноз показывает, что рыночная цена находится вблизи нижней границы диа- пазона цен ближайшего будущего, то система выходит из любой корот- ГЛАВА 15 СОЧЕТАНИЕ выходов с ИСКУССТВЕННЫМ ИНТЕЛЛЕКТОМ 363 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 - набор [l..nb] дат в формате ГГММДД // орn - набор [1..nb] цен открытия // hi - набор [1..nb] максимальных цен // 1о - набор [l..nb] минимальных цен // cls - набор [1..nb] цен закрытия // vol - набор [l..nb] значений объема // oi - набор [1..nb] значений открытого интереса // dlrv - набор [l..nb] средних долларовой волатильности // nb - количество дней в наборе данных // ts - ссылка на класс торгового симулятора // eqcls - набор [1..nb] уровней капитала по ценам закрытия // объявляем локальные переменные static int rc, cb, neontracts, maxhold, signal, ranseed; static float mmstp, ptlim, limprice, stpprice, entryprice; static int entryposted, entrybar; static float exitatr[MAXBAR+1] , prd[KAXBAR+1] , rnum, thresh; static long iseed; // копируем параметры в локальные переменные для удобного обращения thresh = parms[1]; // порог выходных значений нейронной сети ranseed = parms[2]; // используется для инициализации случайной // последовательности maxhold = 10; // период максимального удержания позиции ptlim =4.5; // целевая прибыль в единицах среднего истинного // диапазона mmstp = 1.5; // защитная остановка в единицах среднего истинного // диапазона // выполняем вычисления по всему объему данных AvgTrueRangeS(exitatr,hi,lo,cls,50,nb); // средний истинный // диапазон для выхода NeuralForecast(prd, cls, nb) ; // прогнозы // запускаем генератор случайных чисел // ... используем различные случайные последовательности для каждого рынка // ... 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] = О.Э; continue; ] // выполняем ожидающие приказы и считаем кумулятивный капитал rc = ts.update (opn [cb] , hi [cb] , lo [cb] , cls [cb] , cb) ; if(rc != 0) nrerror("Trade buffer overflow"); кой позиции. Выходы, запускаемые сигналами нейронной сети, произво- дятся по цене закрытия соответствующего дня. 364 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов eqcls[cb] = ts.currentequity(EQ_CLOSETOTAL); // считаем количество контрактов для позиции // ... мы хотим торговать эквивалентом долларовой волатильности // ... 2 новых контрактов на S&P-500 от 12/31/98 ncontracts = RoundToInteger(5673.О / dlrv[cb]); if(ncontracts < 1) ncontracts = 1; // избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+l] == lo[cb+l]) continue; // генерируем "стандартные" случайные сигналы входа signal = 0; rnum = ran2(siseed); if (rnum < 0.025) signal = -1; // случайный короткий вход else if (rnum > 0.975) signal = 1; // случайный длинный вход // входим в сделки по цене открытия entryposted = 0; if(ts.position() <= 0 && signal == 1) ( ts.buyopen('l', 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; ) // выходим из сделок, используя модифицированный стандартный выход // вместе с нейросетевым выходом if(entryposted > 0) ( // инициализация и выходы для длинных позиций в день входа limprice = entryprice + ptlim * exitatr[cb]; stpprice = entryprice - iranstp * exitatr[cb] ; ts.exitlonglimit('A', limprice); ts.exitlongstop('В', stpprice); if(prd[cb] > thresh) 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(prd[cb] < 100.0-thresh) ts.exitshortclose('F') ; } else [ // выходы после дня входа if(ts.position() > 0} { // длинные позиции ts.exitlonglimit('G' , limprice); ts.exitlongstop('H', stpprice); if(cb-entrybar >= maxhold || prd[cb] > thresh) ts.exitlongclose('I'); } else if (ts.position() < 0) { // короткие позиции ts.exitshortlimit('J' , limprice); ts.exitshortstop('K' , stpprice); if (cb-entrybar >= maxhold || prd[cb] < 100.0-thresh) ts.exitshortclose('L') ; } |