WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 3 | 4 || 6 |

«THE ENCYCLOPEDIA OF TRADING STRATEGIES JEFFREY OWEN KATZ, Ph.D. ...»

-- [ Страница 5 ] --

Интересно отметить, что в общем циклическая модель имела доста точно низкую эффективность. По показателю прибыли со сделки эта мо дель превосходила многие рассмотренные ранее, но сильно уступала луч шим из них. В пределах выборки убыток со сделки оставил $ 1329 при вхо де по цене открытия, $1037 при входе по лимитному приказу и $1245 при входе по стоп-приказу. Вход по лимитному приказу обеспечил максималь ный процент прибыльных сделок и минимальный средний убыток. Длин ные позиции были слабо прибыльными при входе по цене открытия, бо лее прибыльны при входе по лимитному приказу и убыточны при входе по стоп-приказу. Вне пределов выборки входы по лимитному приказу и цене открытия работали хуже, чем в пределах выборки. Средний убыток в сделке составил $3741 при входе по цене открытия и $3551 при входе по лимитному приказу. Доля прибыльных сделок также снизилась до 34%.

Эффективность циклической модели вне пределов выборки была одной из худших среди всех моделей, что нельзя отнести на счет избыточной оптимизации: при других параметрах убытки были еще больше. При ис пользовании входа по стоп-приказу эффективность вне пределов выбор ки не ухудшалась, средний убыток ($944) в сделке был близок к убытку в ГЛАВА 1О Входы НА ОСНОВЕ циклов Таблица 10—1. Эффективность портфеля на данных в пределах и вне пределов выборки с лучшими параметрами, полученными в пределах выборки Выб. Р1 Р2 РЗ дох% Р/ПРИБ ВЕР СДЕЛ ПРИБ% $СДЕЛ ДНИ ПРИБДЛ ПРИБКР Тест 1. Базовая циклическая модель, вход по цене открытия В 0,2 20 0 -10,2 -0,66 0,980 1312 40 -1329 6 255 - ВНЕ 0,2 20 0 -23,2 -1,70 1,000 547 34 -3741 6 -693 - Тест 2. Базовая циклическая модель, вход по лимитному приказу В 0,2 20 0 -9,5 -0,46 0,926 1103 41 -1037 7 621 - ВНЕ 0,2 20 0 -22,8 -1,47 0,999 475 34 -3551 7 -652 - Тест 3. Базовая циклическая модель, вход по стоп-приказу В 0,1 20 0 -8,3 -0,53 0,951 957 40 -1245 7 -195 - ВНЕ 0,1 20 0 -15,0 -0,35 0,762 403 41 -944 7 -220 - пределах выборки. Однако, несмотря на то что применение входа по стоп приказу предотвратило падение эффективности, отмеченное при других видах входа, очевидно, что на новых данных система все равно убыточна.

Ухудшение эффективности системы за последние годы было по срав нению с другими моделями неожиданно сильным. Одним из возможных объяснений можно считать широкое распространение в последние годы сложных циклических торговых систем. Кроме того, может сказаться вли яние того, что крупные торговые фирмы широко используют сложные методы, включая описанные волновые, в исследованиях, формирующих их торговую политику. Таким образом, в последнее время становится все меньше возможностей использовать в торговле циклические свойства рынков.

В табл. 10-2 показано поведение модели с различными входами на раз личных рынках в пределах и вне пределов выборки. В первом столбце приведено обозначение рынка, средний и правый столбцы — количество прибыльных тестов для данного рынка. Цифры в первой строке показы вают вид входа: 01 — по цене открытия, 02 — по лимитному приказу и 03 — по стоп-приказу. Последняя строка показывает, на скольких рын ках данная модель была выгодной. Степень прибыльности и убыточности рынков для каждой модели указана следующим образом: один минус (—) означает убыток в $2000 — 4000;

два минуса ( ) — убыток более $4000;

один плюс ( + ) означает прибыль от $1000 до $2000;

два плюса (+ +) — прибыль более $2000;

пустая ячейка означает прибыль до $1000 или убы ток до $1999 в сделке. (Названия рынков и их символы соответствуют обо значениям табл. II-1;

часть II, введение.) 250 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Только 10-летние казначейские бумаги и хлопок показали значитель ную прибыль в пределах выборки при использовании всех трех видов приказов, вне выборки эффективность этих рынков была ничтожной. На рынке S&P 500, где по нашим собственным данным присутствуют выра женные и пригодные для торговли циклы, в пределах выборки были по лучены значительные прибыли при входе по цене открытия или по ли митному приказу. Вне пределов выборки этот рынок также был высоко прибыльным при входе по лимитному приказу и по стоп-приказу и ме нее прибыльным при входе по цене открытия. Интересно, что на рынке NYFE, где в пределах выборки отмечена значительная прибыль при вхо дах по цене открытия и по лимитному приказу, вне пределов выборки во всех случаях отмечались только убытки. Отмечено несколько других при быльных сочетаний как в пределах, так и вне пределов выборки, но вы раженной взаимосвязи между ними обнаружить не удалось. Возможно, рынки, обладавшие циклическими свойствами в прошлом (в пределах выборки), потеряли их к настоящему времени (вне пределов выборки), и наоборот. По крайней мере, рынок S&P 500 вел себя согласно данным нашего прошлого исследования и постоянно давал прибыль даже с такой грубой моделью.

Рис. 10-4 изображает график изменения капитала при торговле порт фелем для входа по цене открытия. Капитал медленно понижался пример но до августа 1992 г., после чего падение стало постоянным и быстрым.

ЗАКЛЮЧЕНИЕ В статье, опубликованной в мае 1997 г., мы утверждали, что метод групп фильтров имеет потенциал мощной и эффективной торговой стратегии.

Порой он работал невероятно успешно и был почти нечувствителен к зна чительным изменениям своих параметров, порой работал плохо — воз можно, из-за неумелого программирования. Тогда исследовался рынок S&P 500, приносивший прибыли и в нынешнем исследовании.

Результаты этого исследования удручают, тем более что теоретичес кая основа фильтров стала изящнее. Возможно, при использовании для анализа циклов других методов, например метода максимальной энтро пии, результат был бы лучше, а возможно, и нет. Подробные же разоча рования постигали и других трейдеров, пытавшихся использовать различ ные идеи для циклической торговли с простым принципом продажи по максимуму и покупки по минимуму. Возможно, циклы слишком уж оче видны и обнаружимы практически любым способом, что приводит к экс плуатации цикла всеми участниками рынка. В последнее время, с распро странением программ для анализа циклов, это кажется наиболее вероят ным. Мы считаем, что не стоит отказываться от концепции циклической торговли, но использовать обнаруженные циклы более сложными спосо ГЛАВА 10 Входы НА ОСНОВЕ циклов бами можно в сочетании с другими критериями входов, например можно открывать позицию только при совпадении циклического максимума с сезонной точкой разворота.

По нашему опыту, в случае успешной реализации циклическая торго вая система дает весьма точные сигналы входа. Тем не менее убыточные сделки циклической системы могут привести к катастрофическим резуль татам. Такой вывод можно сделать по графику S&P 500: зачастую 4 — 5 раз подряд сделки заключаются в точном совпадении с максимумами и мини мумами рынка, а порой позиция открывается именно там, где не следует.

С использованием правильной стратегии выходов такая система может быть чрезвычайно выгодной — убытки должны пресекаться в корне, но при правильном прогнозе позиции нужно удерживать подольше. Высо кая точность прогнозов в тех случаях, когда они верны, и очень близко расположенная защитная остановка могли бы содействовать достижению цели. Когда система улавливает точный момент максимума или миниму ма, рынок немедленно начинает движение в благоприятном направлении, почти без обратных движений, и защитная остановка не срабатывает.

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

ЧТО МЫ УЗНАЛИ?

• Теоретически солидные, изящные и привлекательные модели не обязательно хорошо работают на реальном рынке.

• Исключение: рынок S&P 500 был прибылен и в предыдущем, и в настоящем исследовании.

Если модель работает, то работает очень выгодно. Как было ска зано ранее при исследовании поведения S&P 500 и других рын ков, можно легко и быстро обнаружить последовательности сигналов, точно предсказывающих максимумы и минимумы.

• Следовательно, необходимы специализированные выходы, рассчитанные на систему, которая при срабатывании весьма точна, но в случае ошибки приводит к большим убыткам.

Видимо, рынок со временем стал «менее уязвим» в отноше нии циклических моделей, как это было с моделями, основан ными на пробоях. Очевидные, явные циклы исчезают раньше, чем большинство трейдеров успевает получить в них прибыль.

Следовательно, все, что слишком гладко и привлекательно в теории, вряд ли приведет к успеху в реальной торговле.

ГЛАВА Нейронные сети Технология нейронных сетей, одного из видов искусственного интеллек та (AI), возникла на основе подражания процессам обработки информа ции и принятия решений, происходящих в живых организмах. Целью было моделирование поведения нервной ткани живых систем при помощи ком пьютерных структур, организованных из программно симулируемых ней ронов и нейронных связей (синапсов). Исследования нейронных сетей на теоретическом уровне начались в 1940-х годах. Когда компьютерная технология стала достаточно мощной для реализации подобных исследо ваний, работа началась всерьез. Во второй половине 1980-х годов систе мы на основе нейронных сетей стали представлять интерес для биржевой общественности. К 1989 г. ряд разработчиков уже предлагали пакеты для создания инструментов на нейронных сетях. Scientific Consultant Services разработал коммерческую систему NexTurn для прогнозирования индек са S&P 500. Интерес достиг пика в начале 1990-х годов, появились новые программы, но по причинам, о которых будет сказано ниже, к настояще му времени первоначальное увлечение финансовой общественности ней ронными сетями прошло.

Поскольку мы не собираемся представлять в этой книге полный курс по нейронным сетям, эта глава будет содержать краткий обзор, содержа щий основное для понимания принципов работы. Те, кто заинтересуется предметом, могут обратить внимание на материалы в книгах «Virtual Trading» (Ledermanand Klein, 1995) и «Computerized Trading» (Jurik, 1999), где также имеется подробная информация о разработке систем на осно ве нейронных сетей, а также на ряд статей в Technical Analysis of Stocks and Commodities (Katz, апрель 1996, Katz and McCormick, ноябрь 1996 и 1997). Также следует обратить внимание на книгу «Neural Networks in Finance and Investing» (Trippi and Turban, 1993).

ЧТО ТАКОЕ НЕЙРОННЫЕ СЕТИ?

Нейронные сети представляют собой, в сущности, некие блоки со спо собностью к самообучению и распознаванию образов, классификации и ГЛАВА 11 НЕЙРОННЫЕ СЕТИ прогнозированию. Они особо привлекательны для трейдеров, поскольку сети могут справляться и с оценками вероятности в неоднозначных ситу ациях, и с моделями нечеткой логики, т.е. с моделями, легко определимы ми на вид, но с трудом поддающимися алгоритмизации в виде точных пра вил. Потенциально, нейронные сети могут обнаруживать любые присут ствующие в исходных данных повторяющиеся модели. Сети также могут интегрировать большие объемы информации, не захлебываясь в деталях, и могут адаптироваться к изменениям рынков и их условий.

Существует большое разнообразие нейронных сетей, отличающихся своей «архитектурой», т.е. способом связи виртуальных нейронов, дета лями их поведения (обработкой сигнала или «функциями передачи») и процессом обучения. Существуют различные виды архитектур сетей пред ставляющих интерес для трейдеров, например сети Коонена и сети с кван тованием обучающего вектора (LVQ), различные сети с адаптивным ре зонансом и периодические сети. В этой главе будет рассмотрена наибо лее популярная и полезная во многих отношениях архитектура, а именно нейронная сеть с прямой связью.

Как было сказано выше, сети различаются по методу обучения. Раз работчики системы играют роль учителя, снабжая сеть примерами для обучения. Некоторые сети обучаются «под контролем», некоторые «без контроля». Обучение под контролем имеет место, когда сеть обучают да вать правильные ответы, показывая ей примеры правильных решений;

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

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

Нейронные сети с прямой связью Сеть с прямой связью состоит из слоев нейронов. Первый слой, входной, получает информацию или вводы извне. Этот слой состоит из независи 254 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК мых переменных, например значении цен или индикаторов, на которых основывается система в последующих заключениях или прогнозах. Этот слой имеет множество связей со следующим, называемым скрытым сло ем, поскольку он не имеет связей с внешним миром. Выходы этого слоя подаются на следующий слой, который может быть также скрытым (если это так, то процесс повторяется) или выходным слоем. Каждый из нейро нов выходного слоя выдает сигнал, основанный на прогнозах, классифи кациях или решениях, сделанных сетью. Сети обычно определяются по количеству нейронов в каждом слое;

например сеть 10-3-1 состоит из нейронов во входном, 3 в скрытом и 1 в выходном слое. Сети бывают раз личного размера — от нескольких нейронов до тысяч и от всего трех сло ев до десятков;

сложность зависит от размаха решаемой задачи. Практи чески всегда бывает достаточно трех-четырех слоев.

Нейронные сети с прямой связью (аналоги использованной в этой гла ве) включают особую форму нелинейной множественной регрессии. Сеть берет ряд входных переменных и использует их для прогнозирования цели задания, как и при регрессии. В стандартной множественной линейной регрессии, например, если ставится задача предсказать уровень холесте рола (зависимая переменная) на основе потребления жиров и физичес кой нагрузки (независимые входные переменные), то данные будут мо делироваться следующим образом: прогнозируемый уровень холестеро ла = а + b х потребление жиров + с X нагрузку, где значения a, b и с будут определяться статистической процедурой. Будет производиться поиск множества решений задачи, которое может быть линией, плоско стью или гиперплоскостью (в зависимости от количества переменных) согласно правилу наименьших квадратов. В вышеприведенной задаче все решения находятся на плоскости: ось х представляет потребление жиров, ось у—физическую нагрузку, высота плоскости в каждой точке (х, у) пред ставляет собой прогнозируемый уровень холестерола.

При использовании технологии нейронных сетей двумерная плоскость или n-мерная гиперплоскость множественной линейной регрессии заме няется гладкой n-мерной изогнутой поверхностью с пиками и провалами, хребтами и оврагами. Например, нам требуется найти оптимальное ре шение для набора переменных, и задача будет сводиться к построению многомерной карты. В нейронной сети решение достигается при помощи «нейронов» — взаимосвязанных нелинейных элементов, связи которых сбалансированы так, чтобы подгонять поверхность подданные. Алгоритм обучения производит регулировку весов связей для получения максималь но вписывающейся в исходные данные конфигурации поверхности. Как и в случае со стандартной множественной регрессией, где коэффициен ты регрессии необходимы для определения наклона гиперповерхности, для нейронной модели требуются параметры (в виде весов связей), чтобы обеспечить наилучшее совпадение построенной поверхности, всех ее воз вышений и впадин, с входными данными.

ГЛАВА 11 НЕЙРОННЫЕ СЕТИ НЕЙРОННЫЕ СЕТИ В ТОРГОВЛЕ Нейронные сети были наиболее популярны в конце 80 — начале 90-х го дов, после чего медовый месяц завершился. Что же произошло? В общем, наступило разочарование среди трейдеров, надеявшихся, что новые тех нологии чудесным образом обеспечат им превосходство с минимальны ми затратами усилий. Разработчики использовали для обучения недоста точно подготовленные исходные данные, надеясь на открытия, которые должна была сделать сама сеть. Это был наивный подход. Успех на рынке никогда не бывает таким простым и доступным для всех. Этот подход был не только неэффективен в отношении разработки сетей, но и привел к тому, что сети широко распространились. В результате любая попытка систем уловить выгодные движения рынка сводилась к нулю ввиду изме нившейся природы рынка, который быстро адаптировался к новым мето дам торговли. Во всем обвинили саму технологию и отбросили ее, не за думавшись о неправильном подходе к ее применению. Для получения ус пешных результатов был необходим более осмысленный и изощренный подход.

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

ПРОГНОЗИРОВАНИЕ С ПОМОЩЬЮ НЕЙРОННЫХ СЕТЕЙ Нейронные сети будут разрабатываться с целью прогнозирования: (I) куда уйдет рынок в ближайшем будущем и (2) будет ли завтрашняя цена от крытия представлять собой точку разворота. Для первого случая будет сооружаться сеть, прогнозирующая обращенный во времени стохасти ческий осциллятор, а именно обращенный Медленный %К. Это, в общем, стандартный осциллятор, но рассчитываемый с обратным отсчетом вре мени. Такой осциллятор отражает текущее положение цены закрытия по отношению к нескольким последующим дням. Несомненно, предсказа ние значения такого индикатора было бы полезно для трейдера: зная, что 256 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК сегодняшняя цена закрытия и, вероятно, завтрашняя цена закрытия ле жат внизу ценового диапазона нескольких следующих дней, можно пред полагать, что это хорошая ситуация для покупки, и наоборот, если сегод няшняя цена открытия лежит вблизи максимума ближайшего будущего, время поразмыслить о продаже. Во втором случае представим моделиро вание ситуации с завтрашним открытием — будет ли эта цена максиму мом или минимумом? Для решения этой задачи будут обучены две ней ронные сети: одна на определение минимума в завтрашней цене откры тия, другая на определение максимума. Возможность предсказать макси мум или минимум на завтрашней цене открытия также полезно для трей дера, решающего, входить ли в рынок и какую позицию занимать—длин ную или короткую. Целью этого исследования будет получение таких про гнозов в отношении любого рынка, где используется модель.

ВХОДЫ НА ОСНОВЕ НЕЙРОННОЙ СЕТИ Мы будем обучать три нейронные сети, дающие три модели входа. Две из них будут настроены на поиск точек разворота: одна будет определять минимумы, другая — максимумы. Если модель, определяющая минимум, покажет, что вероятность минимума на завтрашней цене открытия выше некоторого порога, то будет отдан приказ на покупку. Если модель, опре деляющая максимум, покажет, что вероятность максимума на завтраш ней цене открытия выше некоторого другого порога, то будет отдан при каз на продажу. Ни одна из этих моделей не будет отдавать приказы при каких-либо других условиях. Таким образом, стратегия проста и основа на только на предсказанных минимумах и максимумах. Если вероятность определения максимумов и минимумов будет выше случайной, то торгов ля будет прибыльной. Система обнаружения не должна быть идеальной, пусть вероятность правильного сигнала будет выше 50% — этого будет достаточно, чтобы преодолеть транзакционные затраты.

Для модели, использующей обращенный во времени Медленный %К, будет использоваться подобная стратегия. Если прогноз показывает, что обращенный во времени Медленный %К имеет вероятность быть ниже установленного порога, будет отдан приказ на покупку;

это значит, что рынок находится вблизи минимума некоторого будущего ценового диа пазона и можно быстро получить прибыль. Таким же образом, если про гнозируемое значение обращенного Медленного %К высоко и превыша ет некоторый верхний порог, будет отдан приказ на продажу.

Эти входы, как и многие другие, рассмотренные в предыдущих главах, являются прогностическими — они предсказывают рынок, а не следуют за ним. Они подходят для торговли против тренда и при точном предсказа нии могут резко снизить проскальзывание, обеспечить своевременное вы полнение приказов, поскольку трейдер будет покупать, когда другие про ГЛАВА 11 НЕЙРОННЫЕ СЕТИ дают, и наоборот. Хорошая прогностическая модель — Святой Грааль тор говли, который дает возможность продавать вблизи максимума и покупать вблизи минимума. Однако при неточной работе все преимущества про гностической модели будут перевешены расходами на неудачные сделки.

МОДЕЛЬ НА ОБРАЩЕННОМ ВО ВРЕМЕНИ МЕДЛЕННОМ %К Первый шаг в разработке нейронной сети с прогностическими функция ми — это подготовка обучающего набора фактов, т.е. выборки данных, содержащей примеры для обучения сети, а также для оценки некоторых статистических показателей. В данном случае набор фактов генерирует ся на основе данных из пределов выборки по всем рынкам в составе порт феля: таким образом, набор фактов будет велик — 88 092 точки данных.

Этот набор генерируется только для обучения, но не для тестирования по причинам, которые будут пояснены далее.

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

Эта поправка сделает вклад каждой разницы цен в факт примерно рав ным. В этом эксперименте в каждом факте содержится 18 изменений цены, рассчитанных с квадратичной поправкой. Эти 18 значений будут служить как 18 входов нейронной сети после дополнительной обработки.

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

258 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Собрав для будущего факта 18 скорректированных квадратным кор нем разностей для входов, мы используем процедуру нормализации. Це лью нормализации является удаление информации, заложенной в ампли туде, при сохранении формы волны. При обращении с 18 переменными входа как с вектором, нормализация состоит в масштабировании вектора в единицы длины. Расчеты включают возведение каждого элемента век тора в квадрат, сложение квадратов, вычисление квадратного корня и за тем деление каждого элемента на полученное число. Так получаются пе ременные входа для нейронной сети — фактически, программа нейрон ной сети в дальнейшем еще раз будет масштабировать эти входы, приво дя их значения к уровням, допустимым для входных нейронов.

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

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

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

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

не делается попыток скомпенсировать снижение степеней свободы мень шим обучением сети.

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

ГЛАВА 11 НЕЙРОННЫЕ СЕТИ Как было сказано выше, излишне подогнанные сети должны иметь очень низкие значения корреляции после проведения ее коррекции. Большое количество фактов в наборе (88 092) должно помочь избежать вредного влияния подгонки для сетей умеренного размера.

Код модели обращенного Медленного %К static void PrepareNeurallnputs (float *var, float *cls, int cb) { // Преобразование исходных цен закрытия // во входную информацию для нейронной сети.

// var - вывод: массив [1..18] переменных для нейросети // cls - ввод: массив [1..] цен закрытия // cb - ввод: индекс текущего дня static pbars[] = { 0, 0,1,2,3,4,5,6,8,10,12,16,20,24,32,34, 40,48,64,96 };

static float pfac[19], amp;

static int notfirstpass, k;

// инициализируем таблицу фактора корректировки разницы if(notfirstpass == FALSE) ( for(k = 1;

k <= 18;

k++) pfac [k] = 1.0 / sqrt (pbars [k+1] - pbars[k]);

notfirstpass = TRUE;

} // считаем откорректированные ценовые разницы и квадраты амплитуды amp = 0.0;

for (k = 1;

k <= 18;

k++) ( var [k] = pfac [k] * (cls[cb - pbars[k]] - cls (cb - pbars[k+1] ]);

amp += var [k] * var [k] ;

} // нормирование вектора ценовых разниц к единице амплитуды amp = 1.0 / sqrt(amp);

for(k = 1;

k <= 18;

k++) var[k] = amp * var[k];

} static void Model (float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, float *dlrv, int nb, TRDSIM its, float *eqcls) ( // Выполняет простую торговую модель на нейросетях. Она // торгует с помощью предсказания обратного Медленного %К.

// File = xl5modOl.c // parms - набор [1..MAXPRM] параметров // dt — набор [1..nb] дат в формате ГГММДД // орn - набор [l..nb] цен открытия // hi — набор [l..nb] максимальных цен // 1о — набор [l..nb] минимальных цен // cls - набор [l..nbj цен закрытия // vol — набор [l..nb] значений объема // oi — набор [l..nb] значений открытого интереса // dlrv - набор [1..пЬ] средних долларовой волатильности // nb — количество дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls — набор [l..nb] уровней капитала при закрытых позициях 260 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК //объявляем локальные переменные static int rc, cb, ncontracts, maxhold, ordertype;

static int mode, signal, factcount, k, netnum;

static FILE *fil;

static NEURALNET *nnet;

static char netname [20];

static float thresh, netout, var[19];

static float mmstp, ptlim, stpprice, limprice, tmp;

static float exitatr[MAXBAR+1], revstoch[MAXBAR+1];

// копируем параметры в локальные переменные для удобного обращения thresh = parms[l];

// порог выходных значений для сети netnum = parms[2];

// число нейросети mode = parms[6] ;

// обучение (режим=1) или тест (режим=2) ordertype = parms[9];

// тип входного приказа maxhold = 10;

// период максимального удержания позиции ptlim = 4;

// целевая прибыль в единицах волатильности mmstp = 1;

// защитная остановка в единицах волатильности //выполняем вычисления по всему объему данных с помощью векторных процедур AvgTrueRangeS(exitatr,hi,lo,cls,50,nb);

// средний истинный диапазон для // выхода RevStochOsc(revstoch,hi,lo,cls,2,10,nb);

// обратный Медленный %К // готовим набор фактов для обучения нейросети if(mode == 1) { // режим подготовки // фактов (р6=1) // открываем выходной файл и записываем N-TRAIN в файл // заголовок перед обработкой первого рынка if(strcmp(ts.symbol(), "SP") == 0) ( fil = fopen("yl5fac01.dat", "wt");

fprintf(fil, "%d\n%d\n", (int)18, (int)l);

factcount = 0;

} // записываем действительные факты в файл // делаем для каждого рынка в портфеле for(cb = 1;

cb <= nb;

cb++) ( if(dt[cb] < ISJATE) continue;

// период анализа if(dt[cb+10] > OOS_DATE) break;

// игнорируем данные вне пределов // выборки fprintf(fil, "%6d", ++factcount) ;

// номер факта PrepareNeurallnputs(var, cls, cb) ;

for(k = 1;

k <= 18;

k++) fprintf(fil, "%7.3f", var[k]);

// входные значения fprintf(fil, "%7.3f\n",revstoch[cb] );

// цель if((cb % 1000) == 1) printf("CB = %d\n", cb);

// информация о прогрессе } // закрываем выходной файл и выходим после обработки последнего рынка if(strcmp(ts.symbol(), "LB") == 0) ( fclose(fil);

exit(0);

} } // моделируем торговлю с обученной нейросетью if(mode == 2) { // режим торгового симулятора (рб=2) // загружаем обученную сеть перед обработкой первого рынка if (strcmp(ts.symbol(), "SP") == 0) ( sprintf(netname, "/nets/nn%d.net", netnum);

nnet = ntlload(netname) ;

ГЛАВА 11 НЕЙРОННЫЕ СЕТИ. if(nnet == NOLL) nrerror(ntlerrm(ntlerrc()));

} // проходим через дни, чтобы смоделировать реальную торговлю 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");

egcls[cb] = ts.currentequity(EQ_CLOSETOTAL);

// считаем количество контрактов для позиции //... мы хотим торговать эквивалентом долларовой волатильности //... 2 новых контрактов на S&P-500 от 12/31/ ncontracts = RoundToInteger(5673.0 / dlrv[cb]);

if(ncontracts < 1) ncontracts = 1;

// избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+l] == lo[cb+l]) continue;

// генерируем входные сигналы, цены стоп- и лимитных приказов, // используя обученную нейросеть signal=О;

PrepareNeurallnputs(var, cls, cb) ;

ntlset_inputv(nnet, &var[l]);

// принимаем входные параметры сети ntlfire (nnet);

// запускаем сеть netout = ntlget_output(nnet, 0);

// получаем выходные данные if(netout > thresh) signal = -1;

// сигнал на продажу if(netout < (100 - thresh)) signal = 1;

// сигнал на покупку limprice = 0.5 * (hi [cb] + lo [cb] ) ;

stpprice = cls[cb] +0.5 * signal * exitatr[cb];

// входим в сделку, используя определенный тип приказа if(ts.position() <= 0 && signal == 1) ( switch(ordertype) { // выбираем нужный вид приказа case 1: ts.buyopen('1', ncontracts);

break;

case 2: ts.buylimit{'2 ', limprice, ncontracts);

break;

case 3: ts.buystop('3', stpprice, ncontracts);

break;

default: nrerror("Invalid buy order selected");

} ) else if(ts.position() >= 0 && signal == -1) ( switch(ordertype} { // выбираем нужный вид приказа case 1: ts.sellopen('4', ncontracts);

break;

case 2: ts.selllimit('5', limprice, ncontracts);

break;

case 3: ts.sellstop('6', stpprice, ncontracts);

break;

default: nrerror("Invalid sell order selected");

} } // симулятор использует стандартную стратегию выхода tmp = exitatr[cb];

ts.stdexitcls('X', ptlim*tmp, mmstp*tmp, maxhold);

} // обрабатываем следующий день // выгружаем обученную сеть после обработки последнего рынка if(strcmp(ts.symbol(),"LB") == 0) ntldisp(nnet) ;

} } 262 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Код включает две функции — обычную функцию Model, реализую щая торговую модель, и процедуру подготовки входов нейронной сети PrepareNeurallnputs. Процедура, которая подготавливает входы, требует для работы индекса текущего дня (cb) и серии цен закрытия (cls).

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

квадрат амплитуды или длину результирующего вектора.

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

Один из параметров (mode) выбирает режим работы кода. Mode = запускает код для подготовки факта;

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

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

Правила генерации сигналов таковы: если на выходе нейронной сети значение превышает порог thresh, то подается сигнал на продажу — сеть ГЛАВА 11 НЕЙРОННЫЕ СЕТИ предсказывает высокое значение обращенного во времени Медленно го %К, т.е. текущая цена закрытия, возможно, близка к максимуму на бли жайшее будущее. Если на выходе сети значение составляет менее 100 — thresh, то подается сигнал на покупку. Например, если thresh установлен на уровне 80, то любой предсказанный Медленный %К более 80 будет вы зывать сигнал на продажу, а любой Медленный %К менее 20 — сигнал на покупку.

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

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

Методология тестирования модели на основе обращенного Медленного %К Модель выполняется со значением mode — 1 для получения набора фак тов. Набор фактов загружается в N-TRAIN — набор для разработки ней ронных сетей Scientific Consultant Services (516-696-3333), масштабирует ся и перетасовывается, как это необходимо при разработке нейронной сети. Затем обучается набор сетей, начиная с маленькой и кончая весьма большой;

в основном это простые 3-слойные сети. Также обучаются две 4-слойные сети. Все сети тренируются до максимальной конвергентнос ти и затем «полируются» для удаления мелких отклонений или сдвигов.

Процесс «полировки» обеспечивается снижением интенсивности обуче ния до очень низкой и еще примерно 50 прогонами после этого.

В табл. 11-1 приводится информация о всех сетях, обучавшихся для этой модели, с коэффициентами корреляции и другими показателями. В табли це указаны название файла, содержащего сеть, размер — число слоев и число нейронов в каждом из слоев, число связей в сети, оптимизирован ных при обучении (подобно количеству коэффициентов регрессии при множественной регрессии и их связи с излишней подгонкой под истори ческие данные), и корреляция — множественная корреляция выхода сети с его целевым значением. Скорректированные на излишнюю подгонку под входные данные значения корреляции занимают два столбца: в левом — коррекция исходя из обучения на наборе в 40 000 точек данных, в пра вом — исходя из 13 000 точек. Последние строки содержат реальное коли чество точек данных, а также их количество, предполагаемое при расчете коррекции.

Количество точек данных, использованное при расчете коррекции коэффициентов корреляции, меньше, чем реальное их количество в на боре для обучения. Причина в повторяемости фактов, а именно в том, что факт, основанный на некоторой точке данных, с большой вероятностью будет весьма подобен факту, основанному на соседней точке. Из-за этого «эффективное» число точек данных в отношении статистически незави ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 11—1. Показатели обучения нейронных сетей для прогнозирования обращенного во времени Медленного % К Корреляция Название Размер Число связей Корреляция после коррекции NN1.NET 18-4-1 76 0,093 0,082 0, NN2.NET 18-6-1 114 0,118 0,105 0, NN3.NET 18-8-1 152 0,122 0,106 0, NN4.NET 18-10-1 190 0,124 0,104 0, NN5.NET 18-12-1 228 0,144 0,123 0, NN6.NET 18-16-1 304 0,156 0,130 0, NN7.NET 18-20-1 380 0,172 0,143 0, NN8.NET 18-14-4-1 312 0,169 0,145 0, NN9.NET 18-20-6-1 486 0,201 0,169 0, Реальное число 88092 Подразумевалось 40000 симой информации будет уступать реальному. Мы использовали два раз ных прореживания данных, представленных в двух столбцах. Процесс коррекции корреляций подобен процессу коррекции вероятностей мно жественных тестов при оптимизации: при прогонке параметра через ряд значений полученные результаты для соседних значений, скорее всего, будут подобны, что снижает эффективное количество тестов по сравне нию с реальным.

Результаты обучения для модели обращенного во времени Медленного %К Как следует из табл. 11-1, значения некорректированной корреляции не уклонно возрастали с увеличением сети в отношении количества связей.

Если же провести коррекцию коэффициентов корреляции, то для эффек тивной выборки величиной 13 000 точек картина драматически меняется:

наиболее эффективными оказываются малые 3-слойные сети с 6 нейро нами в среднем слое и наименьшая из двух 4-слойных сетей. При более умеренной коррекции ожидаемая прогностическая способность оказалась наибольшей для двух 4-слойных сетей, как видно из множественных кор реляций результата с целью.

ГЛАВА 11 НЕЙРОННЫЕ СЕТИ При более консервативной оценке (с меньшей эффективной выбор кой и, следовательно, с большей коррекцией коэффициентов корреляции) на основе данных табл. 11 -1 для работы в модели было выбрано две сети — сеть 18-6-1 (rm2.net) и сеть 18-14-4-1 (nn8.net). Они были признаны лучши ми из сетей, способными потенциально эффективно работать вне преде лов выборки. Для теста модели входа в рынок программа прогонялась со значением mode = 2;

как обычно, тестировались все входы — по цене от крытия, по лимитному приказу и по стоп-приказу.

МОДЕЛИ НА ОСНОВЕ ТОЧКИ РАЗВОРОТА Для работы таких моделей требуются два дополнительных набора фак тов, идентичных фактам для обращенного во времени Медленного %К во.

всем, кроме целевого параметра. Цель первого набора равна 1, что обо значает нижнюю точку разворота (минимум), когда завтрашняя цена от крытия ниже цен трех предыдущих и десяти последующих дней. Если это условие не выполняется, то значение цели приравнивается к 0. Целью второго набора является 1, т.е. максимум, являющийся точкой разворота в случае, если завтрашняя цена открытия выше цен трех предыдущих и десяти последующих дней. Если это условие не выполняется, то значение цели приравнивается к 0. Если считать, что на рынке присутствуют ус тойчивые модели, то нейронная сеть должна иметь способность усваи вать их и предсказывать положение завтрашней цены открытия.

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

Зачем заставлять сеть делать прогнозы, когда нет никакой неопределен ности? Прогнозирование производится только в случаях, когда завтраш няя цена открытия может составить точку разворота, и факты генериру ются только для таких случаев.

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

Выходы обученных сетей представляют вероятности (от 0 до 1) при сутствия максимума или минимума. Два набора правил для двух моделей генерации сигналов входа таковы: для первой модели — если прогноз ГЛАВА 11 НЕЙРОННЫЕ СЕТИ 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 фактов, что меньше, чем сеть для прогноза обращенно го Медленного %К. Различие в количестве фактов объясняется тем, что ис пользовались только случаи, где завтрашняя цена открытия могла представ лять точку разворота. Поскольку факты для прогнозирования минимумов ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 11—2. Показатели обучения нейронных сетей для прогнозирования нижних точек разворота Корреляция Название Размер Число связей Корреляция после коррекции NN1.NET 18-4-1 76 0,109 0,094 0, NN2.NET 18-6-1 114 0,121 0,100 0, NN3.NET 18-8-1 152 0,146 0,122 0, NN4.NET 18-10-1 190 0,166 0,141 0, NN5.NET 18-12-1 228 0,167 0,137 -0, NN6.NET 18-16-1 304 0,185 0,148 -0, NN7.NET 18-20-1 380 0,225 0,188 0, NN8.NET 18-14-4-1 312 0,219 0,188 0, NN9.NET 18-20-6-1 486 0,294 0,260 0, Реальное число 23900 Подразумевалось 23900 Таблица 11—3. Показатели обучения нейронных сетей для прогнозирования верхних точек разворота Корреляция Название Размер Число связей Корреляция после коррекции NN1.NET 18-4-1 76 0,103 0,088 0, NN2.NET 18-6-1 114 0,117 0,097 -0, NN3.NET 18-8-1 152 0,138 0,116 0, NN4.NET 18-10-1 190 0,158 0,133 0, NN5.NET 18-12-1 228 0,166 0,138 -0, NN6.NET 18-16-1 304 0,197 0,166 0, NN7.NET 18-20-1 380 0,218 0,183 0, NN8.NET 18-14-4-1 312 0,229 0,202 0, NN9.NET 18-20-6-1 486 0,274 0,240 0, Реальное число 25919 Подразумевалось 25919 ГЛАВА 11 НЕЙРОННЫЕ СЕТИ отстояли дальше друг от друга, резонно заключить, что избыточность в этой выборке будет ниже. При коррекции использовались следующие эффек тивные размеры выборок: 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 до 272 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Результаты для сети 18-6-1. В пределах выборки, как и ожидалось, результаты были великолепными. Средняя сделка приносила более $ прибыли при всех видах входов, годовая прибыль составляла от 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). Во всех случаях средняя Прибыль в сделке 274 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК превышала $6000. Как обычно, длинные позиции были прибыльнее ко ротких. Вне пределов выборки все виды входов были убыточны, но, как и в предыдущем наборе тестов, эти убытки были меньше, чем характерные для торговых систем, описанных в других главах, т.е. ближе к $1000, чем к $2000. Эта сеть также проводила гораздо больше сделок, чем предыдущая, причем лучше всего работал вход по лимитному приказу (тест 5). Убытки длинных позиций были меньше, чем коротких, за исключением входа по стоп-приказу, где убыток коротких позиций был сравнительно неболь шим. Повышенная эффективность в пределах выборки и резкое падение эффективности за ее пределами — четкий признак избыточной подгон ки под данные, которой достигла большая сеть с 320 параметрами, под строившись под особенности учебного набора данных, но потеряв эффек тивность вне выборки.

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

График изменения капитала показывал постоянный рост вплоть до конца периода выборки, откуда начиналось плавное снижение, что харак терно для поведения переоптимизированной системы. Для выборки из 88 092 фактов такая нейронная сеть, возможно, была слишком большой.

Результаты торговли для модели, основанной на нижней точке разворота Две выбранные нейронные сети с максимальной вероятностью устойчи вой работы вне пределов выборки (согласно их скорректированным кор реляциям) были исследованы в отношении их торговой эффективности.

Ниже рассмотрена эффективность большей (18-20-6-1) и меньшей из них (18-10-1).

Результаты для сети 18-10-1. В пределах выборки эта сеть работала чрезвычайно прибыльно, что при такой степени подгонки неудивитель но. Вне пределов выборки и эта система относилась к числу сильно убы точных. Для всех трех видов входов (по цене открытия, по лимитному при казу и по стоп-приказу — тесты 7, 8 и 9 соответственно) средний убыток в сделке составил около $2000, что типично для многих рассмотренных ра нее убыточных моделей. Убытки были тем более примечательны, что мо дель вела торговлю только длинными позициями, обычно более выгодны ми, чем короткие.

ГЛАВА 11 НЕЙРОННЫЕ СЕТИ В пределах выборки только четыре рынка не были высокоприбыль ными: британский фунт, серебро, живой скот и кукуруза. Рынок сереб ра, как известно, вызывал проблемы у всех испытанных моделей. Вне пре делов выборки сеть приносила прибыль при всех видах входов на рынках S&P 500, иены, сырой нефти, неэтилированного бензина, палладия, соевых бобов и соевого масла. По крайней мере с одним из видов входов работа ли прибыльно еще несколько рынков. График изменения капитала пока зывал постоянный рост вплоть до конца периода выборки, откуда начи налось постоянное снижение.

Результаты для сети 18-20-6-1. Эти данные получены в тестах 10, 11 и 12 (вход по цене открытия, по лимитному приказу и стоп-приказу соот ветственно). Эффективность этой сети в пределах выборки взлетела до невероятного уровня. При входе по цене открытия годовая прибыль со ставила 768%, причем 83% из 699 сделок были прибыльны. Средняя при быль в сделке составила $18 588. Как ни странно, при большем размере этой сети и, следовательно, большей возможности подгонки под данные ее эффективность вне пределов выборки по показателю средней прибы ли в сделке превосходила меньшую по размерам сеть, особенно в случае входа по стоп-приказу, где убыток составил всего $518.

Все рынки в пределах выборки без исключения были прибыльными с использованием любых входов. Вне пределов выборки со всеми видами входов прибыльными были рынки S&P 500, британского фунта, платины, палладия, соевой муки, пшеницы, канзасской пшеницы, миннесотской пшеницы и леса.

Результаты торговли для модели, основанной на верхней точке разворота Две выбранные нейронные сети с максимальной вероятностью устойчивой работы вне пределов выборки (согласно их скорректированным корреляци ям) были исследованы в отношении их торговой эффективности. Ниже рас смотрена эффективность большей (18-20-6-1) и меньшей из них (18-10-1).

Результаты для сети 18-10-1. Как обычно, в пределах выборки эта сеть была чрезвычайно прибыльной. Вне пределов выборки прибыль была получена с использованием двух видов входных приказов — по цене от крытия (тест 13) и по лимитному приказу (тест 14). При использовании входа по стоп-приказу (тест 15) были получены умеренные убытки. Это неожиданно, учитывая то, что короткие позиции обычно бывали менее прибыльными, чем длинные.

Разбор отдельных рынков показывает, что в пределах выборки толь ко рынки канадского доллара, откормленного скота, соевого масла, пше 276 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК ницы и какао не были прибыльны со всеми тремя видами входов. Вне пре делов выборки при использовании всех трех входов значительные при были были получены на рынках немецкой марки, иены, сырой нефти, мазута, откормленного скота, живого скота и кукурузы. Прибыльность рынков иены, сырой нефти и до некоторой степени кукурузы соответ ствовала хорошей работе на этих рынках модели нижней точки разворо та. Вне пределов выборки эти рынки работали прибыльно с обеими моде лями точек разворота (нижней и верхней).

График изменения капитала (рис. 11-2 для входа по цене открытия) показывает резкий рост капитала до августа 1993 г., а затем более медлен ный подъем в течение всего остального периода выборки и двух третей периода вне выборки. После этого начинается плавное снижение.

Результаты для сети 18-20-6-1. Как и ожидалось, эта сеть, наибольшая из двух выбранных, показала самую высокую эффективность в пределах выборки. Вне пределов выборки эта сеть работала со всеми видами вхо дов отвратительно (тесты 16, 17и 18 — вход по цене открытия, по лимит ному приказу и стоп-приказу соответственно). Наименее убыточные ре зультаты были получены при использовании входа по стоп-приказу.

В пределах выборки только рынки серебра, пшеницы, сахара и апель синового сока не приносили прибыли со всеми тремя видами входов. Вне пределов выборки только рынок какао был прибылен со всеми тремя вхо дами. Как ни странно, все рынки металлов показывали высокие прибыли при входе по цене открытия и по лимитному приказу вне пределов вы борки, равно как и рынки откормленного скота, какао и хлопка.

Анализ капитала портфеля показывает невероятно гладкую и устой чивую прибыль в пределах выборки и убытки вне пределов выборки для всех видов входов.

ОБЗОР РЕЗУЛЬТАТОВ В табл. 11-5 и 11-6 приведены результаты работы всех моделей, основан ных на нейронных сетях на различных рынках. В первом столбце указано обозначение рынка, средний и правый столбцы содержат количество вы годных тестов для данного рынка. Цифры в первой строке указывают на номер теста. Последняя строка показывает, на скольких рынках данная модель была выгодной. Степень прибыльности и убыточности рынков для каждой модели указана следующим образом: один минус (—) означает убыток в $2000 — 4000, два минуса ( ) — убыток более $4000;

один плюс (+) означает прибыль от $1000 до $2000, два плюса (+ +) — прибыль бо лее $2000;

пустая ячейка означает прибыль до $1000 или убыток не более $1999 со сделки. (Названия рынков и их символы соответствуют обозна чениям табл. II-1;

часть II, введение.) В пределах выборки все виды входов ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 11—7. Эффективность нейронных сетей, распределенная по модели, виду приказа и выборке Модель В пределах выборки Вне пределов выборки Среднее По По По По По По В Вне открытию лимитному стоп- открытию лимитному стоп- пределах пределов приказу приказу приказу приказу Медленный обращенный %К, сеть 18-6- ДОХ% 129,9 181,9 153,9 -2,9 -2,9 2,7 176,2 -1, $СДЕЛ 6917 7879 6764 -233 -331 362 7187 - Медленный обращенный %К, сеть 18-14-4- ДОХ% 534,7 547,4 328,9 -17,7 -17,4 -16,2 470,3 -17, $СДЕЛ 7080 8203 6304 -1214 -961 -1154 7196 - Точка разворота, длинные сделки, сеть 18-10- ДОХ% 311.1 308,4 236,8 -16,8 -16,1 -11,1 285,4 -14, $СДЕЛ 9316 9373 10630 -2327 -2197 -2868 9773 - Точка разворота, длинные сделки, сеть 18-20-6- ДОХ% 768,0 742,0 468,8 -13,4 -12,7 -1,8 659,6 -9, $СДЕЛ 18588 18569 16392 -2001 -1886 -518 17516 - Точка разворота, короткие сделки, сеть 18-10- ДОХ% 206,8 209,0 175,4 12,1 8,0 -6,2 197,1 4, $СДЕЛ 8448 8701 12553 580 405 -1138 9901 - Точка разворота, короткие сделки, сеть 18-20-6- ДОХ% 601,9 603,8 387,3 -19,4 -19,7 -22,5 531,0 -20, $СДЕЛ 18550 18905 6320 -5314 -5163 -2076 14592 - Среднее ДОХ% 435,9 432,1 291,8 -9,7 -10,1 -9,2 386,6 -9, $СДЕЛ 11483 11938 9661 -1752 -1689 -1232 11027 - со всеми моделями давали огромные прибыли (табл. 11-7). При усредне нии по всем моделям лучше всего работали входы по цене открытия и по лимитному приказу, а хуже всего вход по стоп-приказу, но разница была очень небольшой. В пределах выборки наибольшая средняя прибыль в сделке отмечена для больших сетей на принципе максимальной и мини мальной точек разворота. Вне пределов выборки лучше всего работал вход по стоп-приказу. В общем, лучше всего при усреднении по входам работа ли модель на обращенном во времени Медленном %К и модель на верх ней точке разворота.

ГЛАВА 11 НЕЙРОННЫЕ СЕТИ ЗАКЛЮЧЕНИЕ При первой попытке применить для анализа индивидуальных рынков нейронную сеть (Katz, McCormick, ноябрь 1996) мы пришли к выводу о полной бесполезности такого подхода. Поведение некоторых из прове денных сейчас тестов вне пределов выборки немного обнадеживает по сравнению с нашим опытом исследования простых нейронных сетей.

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

Принцип оптимизации состоит в том, что вероятность устойчивых ре зультатов повышается со снижением количества параметров модели. Учи тывая в чем-то положительные результаты некоторых из тестов, возмож но, имеет смысл продолжать исследования с более усложненными моделя ми. Как вариант можно было бы улучшить предварительную обработку данных в смысле уменьшения общего числа вводов без потери важной про гностической информации — это может сделать систему очень прибыль ной. При меньшем количестве вводов в сети будет меньше связей для оцен ки, следовательно, подгонка под кривую — важная проблема, судя по ре зультатам и уровням усадки, — будет представлять меньшую угрозу.

ЧТО МЫ УЗНАЛИ?

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

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

Для обучения нейронных сетей необходимо использовать вы борки большого размера. Поэтому обучение на целом порт 282 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК феле финансовых инструментов приводит к лучшим резуль татам, чем обучение на отдельных рынках, несмотря на поте рю рыночной специфики. Один из возможных подходов — расширять количество рынков в портфеле и, по возможности, объем обучающей выборки данных. Доведя это до предела, воз можно, имеет смысл обучать сеть на сотнях рынков разнооб разных товаров, валют и ценных бумаг в попытке создать «уни версальную систему прогнозирования цен». Если в таком все мирном пространстве рынков существуют прогностически полезные модели, то такая попытка, вероятно, действительно будет оправданной.

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

Одни рынки, следовательно, больше подходят для применения определенных методов, чем другие. Поиск подходящих рын ков на основе эффективности вне пределов выборки может стать полезным подходом при разработке и использовании тор говых систем на основе нейронных сетей.

ГЛАВА Генетические алгоритмы Основываясь на моделях, используемых в биологии и экономике, мате матик и психолог Джон Холланд (John Holland) разработал алгоритм ге нетической оптимизации. Алгоритм впервые был опубликован в книге Холланда «Адаптация в естественных и искусственных системах» (J. Holland, Adaptation in Natural and Artificial Systems, 1975). Генетичес кие алгоритмы (ГА) впервые стали применяться в компьютерных дисцип линах в начале 1990-х годов (Yuret and de la Maza, 1994). Торговое сообще ство впервые обратило на них внимание около 1993г., когда появилось несколько статей (Burke, 1993;

Katz and McCormick, 1994;

Oliver, 1994) и компьютерных программ. С тех пор несколько фирм добавили генетичес кое обучение в свои программные пакеты, а у некоторых есть даже про граммы генетической оптимизации профессионального уровня.

В торговом обществе ГА никогда не пользовались таким успехом, как нейронные сети. Популярность этой технологии никогда не росла из-за самой ее природы. Среднему человеку трудно понять генетический алго ритм и более чем сложно применять его правильно. Однако, по нашему мнению, ГА могут быть крайне выгодны для проектировщиков торговых систем.

В данной книге представлен общий обзор ГА и их применения в торгов ле. Читателям, заинтересованным в детальном изучении этого предмета, следует прочитать книгу Девиса (Davis, 1991), а также нашу главу в книге «Virtual Trading» (Katz, McCormick, 1995a, 1995b) и наши статьи (Katz, McCormick, июль/август 1994, декабрь 1996, январь 1997, февраль 1997).

ЧТО ТАКОЕ ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ?

Генетический алгоритм решает проблему, используя процесс, подобный биологическому развитию. Он работает как рекомбинация и мутация ге нетических последовательностей. Рекомбинация и мутация — генетичес кие операторы, т.е. они управляют генами. Ген — это последовательность кодов (генотипов), которая содержит всю информацию, необходимую для 284 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК того, чтобы создать функциональный организм с определенными харак теристиками (генотипом). Хромосома — последовательность генов. В слу чае генетической оптимизации, используемой для решения задач, связан ных с торговлей, последовательность кодов обычно принимает форму ряда чисел.

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

РАЗВИТИЕ МОДЕЛЕЙ ВХОДА, ОСНОВАННЫХ НА ПРАВИЛАХ Что бы произошло, если ГА позволяли искать не просто лучшие парамет ры (именно так чаще всего используют ГА), но и лучшие правила? В этой главе приводится результат использования ГА для развития законченной модели входа путем поиска оптимальных правил и параметров для этих правил. Несмотря на сложность, эта методология оказалась эффективной в нашем первом исследовании (Katz, McCormick, февраль 1997).

Как можно использовать ГА для поиска наилучших торговых правил?

Доморощенный ГА просто жонглирует числами. Необходимо найти спо соб нумерации различных наборов правил. Этого можно достичь мно гими способами. Простой и эффективный метод включает в себя пост роение набора шаблонов правил. Шаблон правила — это частичное опи сание правила с оставленными пробелами, которые необходимо запол нить. Например, если некоторые из правил предыдущих глав рассмот реть как шаблоны правил, то пробелами будут значения периодов ус реднения, порогов и других параметров. Шаблоны правил, определен ные таким образом, несложно пронумеровать, поставив в соответствие каждому шаблону набор чисел. Первое число в наборе используется как индекс в таблице шаблонов правил. Оставшиеся числа набора исполь зуются для заполнения пробелов в шаблоне, в результате чего мы полу чаем четко определенное правило. Приведенный ниже компьютерный код содержит функцию C++ (Rules), которая производит нумерацию шаблонов;

она будет описана позже. Хотя в данном исследовании ис ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ пользовался язык C++, данный метод также можно реализовать в TradeStation с помощью программы TS-EVOLVE, созданной Scientific Consultant Services (516-696-3333).

Термин генетический поиск означает использование ГА для поиска са мых лучших решений, т.е. имеющих максимальную функцию пригоднос ти. Как правило, набор потенциальных решений, в котором ведется поиск, достигает огромных размеров. В данном приложении мы хотим использо вать эволюционный процесс, чтобы выявить набор чисел (генотипов), ко торые соответствуют основанным на правилах моделям входов (феноти пам) с максимальной функцией пригодности (или торговой эффективнос ти). Иными словами, мы собираемся заняться селективным выращивани ем методов входа, основанных на правилах! Вместо того чтобы начинать с конкретного принципа, на котором основывается модель (сезонность, про бой), в данном случае для начала возьмем набор идей, которые могут спо собствовать созданию выгодного метода входа. Вместо того чтобы после довательно проверять ценность этих подходов, будет сделано нечто не обычное: генетическому процессу эволюции представится возможность создать наилучшую модель входа из набора необработанных идей.

ГА будут искать в чрезвычайно большом множестве решений наилуч шую модель входа, которая может быть получена для определенных дан ных и шаблонов правил. Количество правил для каждой модели будет ог раничено во избежание подгонки под исторические данные. Данная за дача сводится к поиску оптимальных наборов чисел. Без использования ГА такой массированный поиск решений был бы практически невозмо жен и неразумен в любом смысле. Конечно, вместо ГА всегда можно осу ществить лобовую оптимизацию — особенно, если вы располагаете не сколькими тысячелетиями на проведение этой работы. В качестве другой альтернативы можно воспользоваться эмпирическим поиском оптималь ных правил, т.е. попытаться найти наилучшие правила с помощью наблю дений, однако этот подход не обязательно позволит максимизировать та кую сложную функцию, как соотношение риск/прибыль. ГА обеспечи вают эффективный способ выполнения очень больших поисков, особен но когда нет простых эвристических методов решения данной задачи.

ЭВОЛЮЦИОННЫЙ ПОИСК МОДЕЛИ ВХОДА В данном примере популяция моделей входа с тремя правилами была по лучена с помощью генетического оптимизатора OptEvolve, написанного на С ++ (Scientific Consultants Services, 516-696-3333). Каждый ген соответ ствует блоку из четырех чисел и шаблону правила — таким образом созда ется соответствие наборов чисел и наборов правил. Каждая хромосома со держит три гена и состоит из 12 чисел: первые четыре числа соответству ют первому гену (или правилу), следующие четыре соответствуют второ 286 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК му гену (или правилу), а последние четыре соответствуют третьему гену (или правилу). ГА должен знать размер гена, чтобы не разрушить важные гены при выполнении скрещивания. Скрещивание должно произойти толь ко на границах генов (блоков из четырех чисел). В настоящем примере это будет достигнуто путем приравнивания размера гена, который является параметром генетического оптимизатора, к четырем. Как упомянуто, каж дый ген составлен из четырех чисел. Первое число является индексом в таблице возможных шаблонов правил. Например, если это число 1, то вы бирается шаблон сравнения цен, в котором различие между двумя ценами закрытия сравнивается с некоторым порогом (см. код). Остальные три чис ла в гене соответствуют значению порога и двум анализируемым перио дам для сравниваемых цен. Если первое число из блока 4 чисел равно 2, то будет выбран шаблон сравнения цены и скользящего среднего. В этом слу чае два из оставшихся трех чисел контролировали бы период скользящего среднего и направление сравнения (должна ли цена быть выше или ниже скользящего среднего). Вообще, если первое число в блоке из четырех чи сел равно n, тогда используется шаблон для правила n, а любые требуемые параметры определены оставшимися тремя числами в блоке из четырех чисел. Эта схема кодирования облегчает поддержание расширяемой базы данных для шаблонов правил. Каждый из трех блоков четырех чисел свя зан с соответствующим правилом. Модель входа, состоящая из трех пра вил, соответствует любой хромосоме, состоящей из 12 чисел.

Шаблоны правил Первый шаблон правила (case l в функции Rules) определяет сравнение между двумя ценами и порогом: правило принимает значение ИСТИНА (TRUE), если цена закрытия 1b1 дней назад больше, чем некоторый поро говый фактор (thr) плюс цена закрытия 1b2 дней назад. В остальных случа ях правило принимает значение ЛОЖЬ (FALSE). Неизвестные (1b1, 1b2 и thr) оставлены пустыми для будущего использования при реализации про граммы. Этот шаблон был включен, потому что тот вид правил, которые он представляет, был полезен в предыдущих исследованиях.

Второй шаблон правила (case 2) включает простые скользящие сред ние, которые часто используются для определения тренда. Обычно счи тается, что рынок будет двигаться вверх, если цена выше ее скользящего среднего, и опускаться вниз, если цена ниже ее скользящего среднего. В шаблоне присутствуют только два неизвестных: первый (per) контроли рует число дней в скользящем среднем и второй (v4) контролирует на правление сравнения (выше или ниже).

Третий шаблон правила (case 3) идентичен второму (case 2), за исклю чением того, что вместо простого скользящего среднего используется экс поненциальное.

ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ Было много рассуждений относительно важности данных по суммар ной величине открытых позиций на рынке (открытому интересу). Лэрри Виллиамс (Larry Williams, 1979) упомянул, что снижение открытого инте реса в течение периодов застоя цен указывает на потенциал для сильного подъема. Сокращение открытого интереса может быть интерпретирова но как снижение количества обращающихся на рынке контрактов, созда вая условия, когда спрос на контракты может перевесить предложение.

Четвертый шаблон правила (case 4) просто вычисляет процентное сниже ние открытого интереса за период от 1Ь1 дней назад до 1 дня назад (откры тый интерес, как правило, не публикуется для текущего дня) и сравнива ет эту величину с порогом (thr). Если снижение больше, чем порог, то пра вило принимает значение ИСТИНА. В остальных случаях оно принимает значение ЛОЖЬ. Порог и период (1b1) — неизвестные, которые будут ис пользованы при реализации программы.

Пятый шаблон правила (case 5) подобен четвертому шаблону, но рас считывает повышение, а не падение открытого интереса. Если происхо дит увеличение, большее чем пороговое значение, то правило возвра щает значение ИСТИНА. Другие ситуации соответствуют значению ЛОЖЬ.

Шестой шаблон правила (case 6) может называться условием «нового максимума». Шаблон запрашивает, отмечен ли 1b1-дневный новый мак симум за период последних 1b2 дней. К примеру, правило может звучать так: «Если достигнут новый 50-дневный максимум в пределах последних 10 дней, то правило принимает значение ИСТИНА, в других случаях — ЛОЖЬ». Это правило пытается найти простое условие пробоя, учитывая пробои, которые произошли несколько дней назад (возможно, сопровож даемые откатами к предыдущим уровням сопротивления, ставшими уров нями поддержки, что расценивается другим правилом как хорошая точка входа). В данном правиле есть два пробела, которые необходимо будет заполнить при проведении расчетов: 1b1 и 1b2.

Седьмой шаблон правила (case 7) идентичен шестому, за исключени ем того, что определяются новые минимумы, а не новые максимумы.

Восьмой шаблон правила (case 8) исследует индекс среднего направ ленного движения относительно двух порогов (thr1 и thr2). Этот индика тор является мерой наличия тренда, как обсуждалось в главе, посвящен ной пробоям. Если среднее направленное движение (ADX) выше нижне го порога и ниже верхнего порога, то правило возвращает значение ИС ТИНА. В других случаях правило возвращает значение ЛОЖЬ.

Девятый шаблон правила (case 9) выполняет сравнение порогов со значением стохастического осциллятора, аналогично шаблону 8.

Десятый шаблон правила (case 10) оценивает направление наклона осциллятора MACD. Длины (1b1 и 1b2) двух скользящих средних, которые составляют MACD, и направление наклона (v4) необходимы для выбора значения ИСТИНА или ЛОЖЬ и определены как параметры.

288 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК МЕТОДОЛОГИЯ ТЕСТИРОВАНИЯ Ниже приводятся шаги, необходимые для эволюционного создания мо дели входа, основанной на шаблонах правил, используемых в этом иссле довании:

1. Выберите произвольную хромосому с 12 элементами. Она представляет собой потенциальное решение (случайное и, ве роятно, не очень хорошее).

2. Поставьте в соответствие каждому параметру правил опреде ленное число, чтобы получить три полностью определенных правила (одно для каждого гена), и определите значение ИСТИНА/ЛОЖЬ для всех дней во временном ряду.

3. Обработайте ценовые данные день за днем. Если в данный день все три правила возвращают значение ИСТИНА и если нет те кущей длинной (или короткий) позиции, то модель получает рыночный приказ на покупку (или продажу) при завтрашнем открытии.

4. Если имеется позиция, используйте стандартную стратегию выхода для осуществления выхода.

5. Оцените торговую эффективность потенциального решения.

Для этого определите «пригодность решения» как соотноше ние риск/прибыль в годовом выражении — величина, кото рая фактически является значением {-критерия.

6.. Сообщите генетическому оптимизатору, насколько пригодно (в вышеупомянутом смысле) потенциальное решение (хромо сома). Это позволит генетическому оптимизатору обновить по пуляцию хромосом.

7. Если решение отвечает определенным критериям, то следует сгенерировать сводку эффективности системы и другую ин формацию и сохранить эти данные в файле для последующе го рассмотрения.

8. Повторять вышеупомянутые шаги снова и снова до тех пор, пока не пройдет достаточное число «поколений».

Так как вышеупомянутые шаги повторяются, решения или «поколе ния», созданные генетическим оптимизатором, в среднем становятся луч ше и лучше. Большое количество отдельных эффективных решений по явится в течение эволюционного процесса. Большинство решений будет записано в файле, созданном в ходе неоднократного выполнения первых семи вычислительных шагов. Ниже будет рассмотрен код, написанный на C++, который осуществляет вышеупомянутые шаги.

ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ Из-за природы правил, вероятно, будет различным поведение моде лей при открытии длинных и коротких позиций. В связи с этим модели входа для длинных позиций найдены и проверены отдельно от моделей входа для коротких позиций. Эффективность модели оценивается на всем портфеле. Цель состоит в том, чтобы найти набор правил, которые обес печивают наилучшую эффективность торговли всем портфелем финан совых инструментов. Процедура, используемая здесь, отличается от на ших более ранних исследований (Katz, McCormick, февраль 1997), где по иск оптимальных правил проводился на каждом рынке в отдельности -— подход, в большей степени подверженный эффектам «вредной» подгон ки под исторические данные. Напомним вывод, полученный в отноше нии нескольких моделей, которые были первоначально оптимизированы на индивидуальных инструментах: при использовании одной модели для всех рынков без оптимизации или настройки под отдельный рынок эф фективность данной модели может существенно понизиться. В нижесле дующих тестах использовалась стандартная платформа C++, стандарт ные приказы входа и стратегия выхода.

static int EventPresent (int *es, int m, int cb) { // Используется функцией Rules для облегчения кодирования int i ;

for(i=cb-m+l;

i<=cb;

i++) if(es[i]) return TRUE;

return FALSE ;

} static void Rules (float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, float *atr, int nb, int vl, float v2, float v3, float v4, int *ans) { // Процедура определяет шаблоны правил, используемых // в генетическом процессе эволюции модели, основанной на правилах.

// opn, hi, lo, cls — стандартные ценовые данные [l..nb] // vol, oi — объем и открытый интерес [l..nb] // nb — количество дней // vl, v2, v3, v4 — селектор правил и параметры // ans — выходные ценовые данные [l..nb] // локальные макрофункции #define LinearScale(х,a,b) ( (х)* ( {b}-(а))/1000.0+(а) ) #define BiasedPosScale(х,а) (0. 000001*(х)*(х)*{а}) #define Compare{a,b,dir) (((dir)> = 0)?((a)>(b) }: (fa)<(b))) // локальные переменные static int lbl, lb2, per, cb, maxlb=100;

static float thr, fac, thr2, thrl, tmp, tiny=l.ОЕ-20;

static int IsNewHigh[MAXBAR+l], IsNewLow[MAXBAR+l];

static float Serl[MAXBAR+1] ;

// шаблоны правил switch(vl} { // выбираем правило case 1: // сравнение изменения цены с порогом 290 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК lb1 = (int)BiasedPosScale(v2, 50. 0);

lb2 = (int)BiasedPosScale(v3, 50. 0);

fac = LinearScale(v4, -2.5, 2. 5) * sqrt(abs(lbl - Ib2)>;

for(cb-maxlb;

cb<=nb;

cb++) { thr = fac * atr [cb];

ans[cb] = cls[cb-lbl] - cls[cb-lb2] > thr;

] break;

case 2: // сравнение цены с простым скользящим средним per = 2 + (int)BiasedPosScale(v2, 48.0);

Averages(Serl, cls, per, nb) ;

for(cb=maxlb;

cb<=nb;

cb++) ans[cb] = Compare(cls[cb], Serl[cb], V4-500.0);

break;

case 3: // сравнение цены с экспоненциальным скользящим средним per = 2 + (int)BiasedPosScale(v2, 48.0);

XAverageS(Serl, cls, per, nb) ;

for(cb-maxlb;

cb<=nb;

cb++) ans[cb] = Compare(cls[cb], Serl[cb], V4-500.0);

break;

case 4: // сравнение падения открытого интереса с пороговым значением 1b1 = 2 + (int)BiasedPosScale (v2, 48.0);

thr = LinearScale(v3, 0.01, 0.50);

for{cb=maxlb;

cb<=nb;

cb++) { tmp = (oi[cb-lbl] - oi[cb-l]) / (oi [cb-lbl] + tiny);

ans [cb] = tmp > thr;

] break;

case 5: // сравнение увеличения открытого интереса с пороговым значением 1b1 = 2 + (int) BiasedPosScale(v2, 48.0);

thr = LinearScale(v3, 0.01, 0.99);

for(cb=maxlb;

cb<=nb;

cb++) { tmp = (oi [cb-1] - oi[cb-lblj) / (oi [cb-lbl] + tiny) ;

ans [cb] = tmp > thr;

} break;

case 6: // недавние новые максимумы 1bl = 2 + (int)BiasedPosScale(v2, 48.0);

1b2 = 1 + (int)BiasedPosScale(v3, 8.0);

for(cb=lbl+3;

cb<=nb;

cb++) IsNewHigh[cb] = hi [cb] > Highest(hi, 1b1, cb-1);

for(cb-maxlb;

cb<=nb;

cb++) ans[cb] = EventPresent(IsNewHigh, 1b2, cb) ;

break;

case 7: // недавние новые минимумы 1bl = 2 + (int)BiasedPosScale(v2, 48.0);

1b2 = 1 + (int)BiasedPosScale(v3, 8.0);

for(cb=lbl+3;

cb<=nb;

cb++) IsNewLow[cb] = lo[cb] < Lowest(lo, 1b1, cb-1) ;

for(cb=maxlb;

cb<=nb;

cb++) ans[cb] = EventPresent(IsNewLow, 1b2, cb);

break;

case 8: // среднее направленное движение thrl = LinearScale(v2, 5.0, 50.0);

thr2 = thrl + LinearScale(v3, 5.0, 20.0);

ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ AvgDirMov{hi, lo, cls, nb, 14, Serl);

for(cb=maxlb;

cb<=nb;

cb++) ans [cb] = (Serl[cb] > thrl && Serl [cb] < thr2) && Compare (Serl[cb], Serl[cb-l], v4-500.0);

break;

case 9: // Медленный %К thr = LinearScale(v2, 5.0, 95.0);

fac = LinearScale(v3, 1.0, 20.0);

thrl = thr - fac;

thr2 = thr + fac;

StochOsc(Serl, hi, lo, cls, 2, 10, nb) ;

for(cb=maxlb;

cb<=nb;

cb++) ans [cb] = (Serl[cb) > thrl && Serl [cb] < thr2) && Compare(Serl[cb], Serl[cb-1], V4-500.0);

break ;

case 10: // направление наклона MACD lb1 = 2 + (int)BiasedPosScale(v2, 18.0);

lb2 = lbl + 1 + (int)BiasedPosScale(v3, 48.0);

MacdOsc(Serl, cls, 1, lbl, lb2, nb) ;

for(cb=maxlb;

cb<=nb;

cb++) ans[cb] = Compare(Serl[cb], Serl[cb-2], v4-500. 0),• break;

default:

nrerror("Undefined rule template selected");

break;

] // первые maxlb элементов результата должны иметь значение ЛОЖЬ memset (&ans [1], 0, sizeof(*ans) * maxlb);

#undef BiasedPosScale #undef LinearScale } 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 = xl6modOl.c // parms — набор [1..MAXPRM] параметров // dt — набор [1..nb] дат в формате ГГММДД // орn - набор [l..nb] цен открытия // hi — набор [l..nb] максимальных цен // 1о — набор [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, ordertype, signal;

static int disp, k, modeltype;

static float mmstp, ptlim, stpprice, limprice, tmp;

static float exitatr[MAXBAR+1] ;

static int rulel[MAXBAR+1], rule2[MAXBAR+1], rule3[MAXBAR+1];

292 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК // копируем параметры в локальные переменные для более удобного обращения к ним modeltype = parms[14];

// модель: 1=длинная позиция, 2=короткая ordertype = parms[15];

// вход: 1=на открытии, 2=по лимитному приказу, // 3=по стоп- приказу maxhold =10;

// максимальный период удержания позиции ptlim = 4;

// целевая прибыль в единицах волатильности mmstp = 1;

// защитная остановка в единицах волатильности // выполнение расчетов для всей ценовой информации AvgTrueRangeS(exitatr,hi,lo,cls,50,nb);

// средний истинный диапазон для // выхода switch(modeltype) { case 1: case 2: // для моделей открытия длинных и коротких позиций // для каждого дня отдельно оценить три правила 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};

break;

default: nrerror("Invalid model type");

/ проходим через дни, чтобы моделировать настоящую торговлю or(cb = 1;

cb <= nb;

cb++) { // не открываем позиций до начала периода выборки //... то же самое, что установка MaxBarsBack в TradeStation if(dt[cb] < IS_DATE) { eqcls[cb] = 0.0;

continue;

} // выполняем все ожидающие приказы и сохраняем значение капитала по // закрытию rс = ts.update(opn[cb], hi[cb], lo [cb], cls[cb], cb};

if(rc != 0) nrerror("Trade buffer overflow");

eqcls[cb] = ts.currentequity {EQCLOSETOTAL};

// подсчитываем количество контрактов для торговли //... мы хотим торговать долларовым эквивалентом волатильности //... 2 новых контрактов S&P-500 на 12/31/ ncontracts - RoundToInteger(5673.О / dlrv[cb] ) ;

if(ncontracts < 1) ncontracts = 1;

// избегаем устанавливать приказы на дни с ограниченной торговлей if(hi[cb+l] == lo[cb+l]) continue;

// генерируем входные сигналы, цены стоп- и лимитных приказов signal = 0;

switch(modeltype) { case 1: // только длинные позиции if(rulel[cb] && rule2 [cb] && rule3[cb]) signal = 1;

break;

case 2: // только короткие позиции if(rulel[cb] && rule2 [cb] && rule3[cb]} signal = -1;

break;

] limprice = 0.5 * (hi[cb] + lo [cb]);

stpprice = cls[cb] + 0.5 * signal * exitatr[cb] ;

// открываем позицию, используя определенные типы приказов if(ts.position(} <= 0 && signal == 1} { switch(ordertype) { // выбираем нужный тип приказа ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ case 1: ts.buyopen('1', ncontracts);

break;

case 2: ts.buylimit('2', limprice, ncontracts);

break;

case 3: ts.buystop('3', stpprice, ncontracts);

break;

default: nrerror("Invalid buy order selected");

} } else if(ts.position)) >= 0 && signal == -1) { switch(ordertype) { // выбираем нужный тип приказа case 1: ts.sellopen('4', ncontracts);

break;

case 2: ts.selllimit('5', limprice, ncontracts);

break;

case 3: ts.sellstop('6', stpprice, ncontracts);

break;

default: nrerror{"Invalid sell order selected");

} } // симулятор использует стандартную стратегию выхода tmp = exitatr[cb];

ts.stdexitcls('X', ptlim*tmp, mmstp*tmp, maxhold);

] // обрабатываем следующий день ] C++ код описывает шаблоны правил и стратегию торговой системы.

Шаблоны правил определяются с помощью функции Rules. Аргументы v1, v2, v3 и v4 (четыре числа, которые содержит каждый ген) несут всю ин формацию, требуемую для реализации шаблонов правил. Аргумент v используется для выбора требуемого шаблона правила из 10 доступных;

аргументы v2, v3 и v4 используются для определения требуемых парамет ров каждого правила (направления сравнения, периоды скользящих сред них и т.д.). Затем правило оценивается на всех днях, и оценки (1 для ИСТИНА, 0 для ЛОЖЬ) помещаются в вектор cms, возвращающий резуль таты функции.

Макрос BiasedPosScale (x, а) используется для создания соответствия между целыми числами от 0 до 1000 и непрерывным диапазоном от 0 до а.

Макрос используется, чтобы вычислить периоды обратного обзора для определения ценовых экстремумов и периоды скользящих средних v2, v или v4, значения которых получены из генетического алгоритма и прону мерованы целыми числами от 0 до 1000. Соответствие между номерами от 1 до 1000 и числами из диапазона от 0 до а нелинейно — оно устроено так, чтобы можно было более детально исследовать меньшие значения параметров. Например, предположим, что период скользящего среднего изменяется от 2 до 100 дней. Необходимо с одинаковой точностью произ водить выбор лучшего решения между периодами 2, 3 и 4 и периодами 30, 50 и 90. Точность поиска должна быть выше для маленьких чисел. Это свя зано с тем, что изменение периода скользящего среднего от 2 до 5 дней сильнее повлияет на результаты торговли, чем изменение от 50 до 60.

Макрос LinearScale (x, а, b) выполняет линейную адресацию целочис ленного диапазона 0... 1000 к диапазону а.... Макрос обычно использу ется при вычислении порогов или отклонений. В коде шаблона правила все параметры вычислены внутри функции Rules, а не внутри ГА. Генети 294 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК ческии алгоритм имеет инструкцию генерировать числа в диапазоне от 0 до 1000, за исключением элементов хромосом 1, 5 и 9, которые являются первыми числами в каждом гене и используются в качестве селекторов шаблонов правил. Масштабирование проводится внутри функции Rules, так как шаблоны для различных видов правил имеют различные диапазо ны изменения параметров и контрольных значений.

Процесс эволюции торговых систем начинается со случайного выбо ра значений хромосомы. Генетический оптимизатор выбирает два члена популяции и спаривает их (исходя из определения скрещивания, нормы мутации и размера гена). Затем полученное потомство возвращается как потенциальное решение. Когда компоненту ГА сообщают об эффектив ности полученного решения, он сравнивает ее с наименее пригодным чле ном популяции. Если пригодность потомства больше, чем у наименее при годного члена, то ГА заменяет наименее пригодный член решения полу ченным потомством. Этот процесс повторяется в течение нескольких по колений и осуществляется с помощью программной оболочки (не приве денной в данной книге), которая, в свою очередь, делает повторные запросы к функции Model для моделирования торговли и оценки пригод ности системы.

Код функции Model почти идентичен используемому в более ранних главах. До цикла индексации дней, в котором генерируются приказы для торговли, функция Rules вызывается три раза (один раз для каждого гена), и результаты помещаются во временные ряды rule1, rule2 и ruleЗ. При этом также подсчитывается средний истинный диапазон за последние 50 дней, поскольку это необходимо для стандартного выхода и оценки правил. Внут ри цикла оценивание правил производится для текущего дня (rulel[cb], rule2[cb], rule3[cb]), и если все оценки возвращают значение ИСТИНА, то генерируется сигнал на покупку (или продажу, если исследуются входы в короткую позицию). Входы запрограммированы стандартным способом для каждого из трех тестируемых приказов. В эволюционном процессе используются только данные из выборки.

Выходные данные, полученные от программной оболочки, позволяют выбрать желаемое решение, которое можно использовать в торговле от дельно или в группе моделей. Решения могут быть легко сформулирова ны как понятные правила для оценки их «физического смысла» и исполь зования их в качестве элементов других систем.

РЕЗУЛЬТАТЫ ТЕСТОВ Были выполнены шесть тестов. Эволюционный процесс использовался для поиска оптимальных правил входа в длинные и короткие позиции с каж дым из трех приказов для входа: по цене открытия, стоп-приказу и лимит ному приказу. Во всех случаях было создано 2500 поколений генетичес ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ кой обработки. Задача вычисления всех решений и сохранения их в фай лы потребовала всего несколько часов на быстром Pentium, что демонст рирует практическую пригодность этого метода. Для каждого теста гене тический процесс произвел табличный файл (GFiles от 1 до 6), состоящий из строк, соответствующих каждому из поколений. Таким образом, каж дая строка представляет определенное решение. Большинство ранних решений были мало пригодными для торговли, но качество решений улуч шалось с появлением новых поколений, что характерно для ГА. Каждая строка содержит информацию относительно эффективности отдельного решения — набора параметров, который представляет ген, содержащий ся в полной хромосоме.

Были выбраны лучшие решения для входа в длинную и короткую по зицию по цене открытия. Эти решения использовались для проведения шести тестов, результаты которых приведены ниже. В частности, было протестировано решение, которое обеспечивало лучший вход в длинную позицию по цене открытия, и его эффективность была оценена обычным способом на обеих выборках. То же самое решение было проверено и оценено с входом по стоп-приказу и лимитному приказу. Такая же про цедура была проведена для коротких позиций: было определено лучшее решение для входа в короткую позицию по цене открытия. Затем реше ние было проверено на обеих выборках с каждым из двух типов прика зов. Мы не отбирали отдельное оптимальное решение для каждого типа приказа, потому что такие действия не позволят сравнить эффективность различных видов приказов. Например, оптимальный вход по цене откры тия может давать модель пробоя, в то время как оптимальный вход по стоп-приказу может наблюдаться при использовании противотрендовой модели ценового импульса. Эти модели никак не связаны друг с другом, и их результаты ничего не говорят об общей эффективности различных видов приказов. Поэтому мы сначала искали наилучшую модель с рыноч ным приказом по цене открытия, а затем тестировали найденную модель с другими видами приказов. Поскольку модель остается неизменной, этот подход позволяет делать значимые сравнения различных типов приказов.

Решения для входов в длинную позицию Табл. 12-1 представляет торговые результаты 20 лучших решений для вхо дов в длинные позиции по цене открытия (GFile 1). Каждая строка пред ставляет различную торговую модель. Параметры не указываются, но представлены номера поколений (НОМЕР), вероятность или статистичес кая значимость (ВЕР, десятичный знак опущен, но подразумевается), сред няя прибыль в долларах за сделку ($СДЕЛ), общее количество сделок (СДЕЛ), фактор прибыли (Ф.ПРИБ), доходность в процентах годовых (ДОХ%) и чистая прибыль или убыток (П/У).

ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 12—3. Эффективность лучшей модели с входом по цене открытия, испытанной на выборке и вне ее пределов со всеми видами входных приказов ВЫ Б ДОХ% Р/ПРИБ ВЕР СДЕЛ ПРИБ% $СДЕЛ ДНИ ПРИБДЛ ПРИБКР Тест 01. Длинная позиция, вход по цене открытия 82.2 1.22 0.000 43 62 17264 7 742 В Вне 63.0 0.66 0.089 17 47 10231 6 173 Тест 02. Длинная позиция, вход по лимитному приказу В 65.8 0.99 0.001 36 61 14846 8 534 Вне 87.7 0.86 0.038 14 50 14920 6 208 Тест 03. Длинная позиция, вход по стоп-приказу В 42.2 0.88 0.003 22 72 16247 8 357 Вне 11.7 0.20 0.344 8 50 4246 6 33 с Тест 04. Короткая позиция, вход по цене открытия В 54.8 0.87 0.003 36 69 11929 8 0 Вне -10.0 -0.21 0.669 17 35 -2711 6 0 - Тест 05. Короткая позиция, вход по лимитному приказу 16.5 0. В 0.056 34 64 7424 8 0 Вне -10.8 -0.24 0.686 14 42 -3351 6 0 - Тест 06. Короткая позиция, вход по стоп-приказу 23.1 0.60 0.031 24 54 7493 6 0 -13.0 -0.25 0.696 13 30 -3704 5 0 - соотношение риска/прибыли в годовом исчислении;

ВЕР — ассоцииро ванная вероятность статистической достоверности;

СДЕЛ — число сде лок на всех рынках в составе портфеля;

ПРИБ% — процент прибыльных сделок;

$СДЕЛ— средняя прибыль/убыток со сделки;

ДНИ— средняя длительность сделки в днях;

ПРИБДЛ — общая прибыль от длинных пози ций в тысячах долларов;

ПРИБКР— общая прибыль от коротких позиций в тысячах долларов.

Тесты 1—3. Тестирование модели входа в длинные позиции с вхо дами по цене открытия, по лимитному приказу и стоп-приказу.

Как видно из табл. 12-3, модель, полученная с помощью эволюционного процесса, была прибыльна при всех трех типах приказов как в выборке (как и ожидалось, учитывая мощь ГА), так и вне ее. В выборке вообще не ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ было прибыли меньше 42% (в годовом исчислении) для любого вида при каза. Все значения средней прибыли в сделке были больше чем $14 000, и ни одна система не имела меньше 60% прибыльных сделок! Вне выборки результаты были довольно разнообразны. С входами по цене открытия или по лимитному приказу система по-прежнему показывала выдающие ся результаты: средняя прибыль в сделке была выше $10 000, а доход ность — выше 60% годовых. Со стоп-приказом модель работала не так хорошо: доходность не превысила 11%, а средняя сделка принесла всего $4246. Единственным внушающим беспокойство аспектом результатов является малое количество сделок. Например, в пределах выборки с вхо дом на открытии было произведено только 43 сделки за 10-летний период для портфеля из 36 товаров. Вне выборки было только 17 сделок в течение 5-летнего периода;

частота торговли была постоянна и составляла около 4 сделок в год.

По-видимому, правила обнаруживали необычные (но пригодные для торговли) рыночные события;

подобную модель можно назвать моделью для «торговли в нетипичных случаях». Эта модель не так бесполезна, как может показаться на первый взгляд. Ассортимент систем, каждая их ко торых торгует при различных редких событиях, может давать превосход ную прибыль. При работе с системой такого типа рекомендуется торгов ля как портфелем систем, так и портфелем финансовых инструментов.

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

Гесты 4—6. Тестирование модели входа в короткие позиции с вхо дом по цене открытия, по лимитному приказу и стоп-приказу. Во всех случаях эффективность лучшей модели для коротких позиций, про тестированной на трех видах приказов, была хуже, чем результаты моде лей для длинных позиций в пределах выборки. Вне выборки результаты знаменательно ухудшились, и были отмечены убытки. В отличие от моде ли для длинных позиций эта модель не прошла проверку на торговлю вне пределов выборки. Однако стоит отметить, что если бы мы торговали с помощью модели как для длинных, так и для коротких позиций одновре менно, то на данных вне пределов выборки прибыль от длинных позиций значительно перевесила бы потери от коротких. Полная система была бы выгодна. То, что модели торговли для длинных позиций работают лучше, чем для коротких, было не один раз отмечено в предыдущих главах этой книги. Возможно, этот факт связан с присутствием в стандартном порт феле нескольких рынков, которые находились в бычьем тренде в течение долгого времени. Вероятно, причиной повышенной эффективности длин ных позиций являются отличия в реакции товарных рынков на избыточ ное предложение и нехватку товара.

300 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Результаты тестирования для каждого рынка Табл. 12-4 содержит результаты по рынкам для лучших моделей как для длинных, так и для коротких позиций, протестированных на оптимиза ционных и проверочных выборках, с использованием трех видов прика зов для входа в рынок. Пустые ячейки в этой таблице отражают отсут ствие сделок. Первая колонка содержит обозначения изучаемых рынков.

Центральная и правые колонки содержат количество прибыльных тестов для данного рынка. Числа в первой строке представляют идентификато ры тестов: 01, 02 и 03 означают тесты для длинных позиций с входом на открытии, по лимитному приказу и стоп-приказу соответственно;

04, 05 и 06 представляют соответствующие тесты для коротких позиций. Послед няя строка содержит количество рынков, на которых данная модель была прибыльна. Данные в этой таблице представляют относительно деталь ную информацию о том, какие рынки прибыльны, а какие нет, для каж дой конкретной модели: один минус (—) указывает на умеренный сред ний убыток в сделке — от $2000 до $4000;

два минуса ( ) представляют большую среднюю потерю в сделке — $4000 или больше;

один плюс (+) означает умеренную среднюю прибыль в сделке — от $1000 до $2000;

два плюса (+ +) указывают на большую среднюю прибыль в сделке — $ или больше;

а пустая ячейка соответствует убытку до $1999 или прибыли в пределах $1000. (Названия рынков и их символы соответствуют обозна чениям табл. II-1;

часть II, введение.) Тесты 1—3. Тестирование модели входа в длинные позиции с входом по цене открытия, по лимитному приказу и стоп-приказу.

Табл. 12-4 указывает, что в пределах выборки модель была весьма при быльна для NYFE (но не для S&P 500), для британского фунта, немецкой марки, японской йены, палладия, для большинства рынков пшеницы, кан засской пшеницы, какао, леса и сырой нефти (если не учитывать покупку по цене открытия). Вне выборки на NYFE не было сделок, британский фунт и немецкая марка продолжали оставаться весьма прибыльными для всех типов приказов. Многие рынки, прибыльные в пределах выборки, вне ее пределов не заключали сделок. Некоторые рынки, которые не участвова ли в торговле в пределах выборки, были успешны вне выборки (особенно неэтилированный бензин, серебро и кофе). Это указывает на то, что мо дель продолжала работать хорошо, причем не только на другом периоде времени, но и на другом наборе рынков.

Тесты 4—6. Тестирование модели входа в короткие позиции с входами по цене открытия, по лимитному приказу и стоп-приказу.

В пределах выборки казначейские векселя, немецкая марка, швейцарс кий франк, канадский доллар, свиная грудинка, овес, канзасская пшени ца, апельсиновый сок и лес показали устойчивую прибыль. Британский фунт и немецкая марка также принесли прибыль вне выборки. Швейцар ский франк был прибыльным вне выборки, но только с лимитным прика ГЛАВА 12 ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ остается время для маленького отката, т.е. увеличение открытого интере са должно произойти 3 дня назад, а не в текущий день. Это не тот набор правил, который легко обнаружить обычным способом без помощи гене тического алгоритма.

Правила для входа в короткие позиции. Подобный анализ также мож но провести для коротких позиций. Числа 5, 890, 391 и 532 (ген 1);

5, 705, 760 и 956 (ген 2) и 10, 163,999 и 196 (ген 3) соответствуют хромосоме, кото рая представила лучшее решение для входа в короткую позицию по цене открытия. Два указанных гена соответствуют правилам, связанным с от крытым интересом, и один — с осциллятором MACD. Первое правило открытого интереса утверждает, что открытый интерес 1 день назад дол жен быть по крайней мере на 38% больше, чем открытый интерес 38 дней назад. Второе правило открытого интереса утверждает, что открытый интерес 1 день назад должен быть по крайней мере на 75% больше, чем открытый интерес 25 дней назад. Третье правило утверждает, что наклон MACD (период короткого скользящего среднего = 2, а период длинного скользящего среднего = 50) должен быть направлен вниз, предполагая наличие нисходящего тренда. Если были выполнены условия для всех трех правил, указанных этими тремя генами, то подается сигнал на продажу.

Повторюсь, эти правила было бы не так легко обнаружить, если разраба тывать торговую модель в более традиционной манере.

ЗАКЛЮЧЕНИЕ Как и в нашем раннем исследовании, использование ГА для поиска торго вых правил помогло найти весьма убедительные модели входа. Результа ты впечатляют, несмотря на такие проблемы, как малое число сделок во многих решениях. Этот подход, несомненно, может служить в качестве основания для дальнейших усилий в разработке системы. В данном ис следовании была использована лишь маленькая база шаблонов правил, включающая простейшие элементы (ценовые сравнения, скользящие средние и осцилляторы). Несомненно, намного лучшие результаты могли быть получены при использовании более сложного и полного набора шаб лонов в качестве зерна для генетической мельницы.

ЧТО МЫ УЗНАЛИ?

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

306 ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Генетические алгоритмы представляются эффективным сред ством обнаружения нестандартных торговых систем, кото рые практически невозможно разработать общепринятыми методами.

При правильном использовании ГА избыточная оптимизация (подгонка под исторические данные) не является серьезной проблемой, несмотря на оптимизационную мощь генетичес ких алгоритмов.

Ограничения количества и сложности правил в любом реше нии представляются ключевым элементом в контроле над де моном подгонки под исторические данные.

• Генетическая эволюция правил имеет большое преимущество, связанное с тем, что полученные правила могут быть переве дены на простой язык и понятны. В отличие от нейросетевых систем торговые правила, созданные с помощью ГА, не скры ты в непостижимом черном ящике.

Использование генетики описанным выше способом помога ет создать большое количество отдельных прибыльных реше ний, которые затем можно объединить в портфеле, торгую щем несколькими моделями.

ЧАСТЬ III Исследование выходов Введение В части II в центре внимания был выбор времени входа в рынок. Была исследована степень эффективности различных методологий при ответе на следующий всеобъемлющий вопрос: когда, где и как входить в рынок.

Были проведены исследования самых разнообразных торговых подходов:

от рыночных циклов до активности солнечных пятен, от простейших тор говых правил до продвинутых генетических алгоритмов и нейронных се тей. Для того чтобы сделать достаточно справедливое сравнение методов входа, во всех тестах преднамеренно использовалась простая стандарт ная стратегия выхода из рынка. В сделках использовалась фиксирован ная защитная остановка, выход по лимитному приказу при достижении целевой прибыли, а также выход по рыночному приказу по истечении определенного количества дней. В части III в центре внимания будет на ходиться проблема выхода из рынка. Мы постараемся восполнить недо статок интереса к стратегиям выхода в литературе, посвященной бирже вой торговле.

ВАЖНОСТЬ СТРАТЕГИИ ВЫХОДА Во многих случаях хороший выход более значим, чем хороший вход. Ос новное различие состоит в том, что при ожидании хорошей возможности входа в рынок нет никакого риска. Если пропущена одна возможность вхо да, то всегда придет другая — активная модель торговли должна обеспе чивать много подобных возможностей. Однако, пропустив оптимальный выход, мы подвергаемся рыночному риску. «Прозевав» выход, мы риску ем получить большие убытки и даже подвергнуться неприятной процеду ре принудительного закрытия нашей позиции по наихудшим ценам! Из вестны случаи потери всей прибыли, полученной за несколько лет успеш ной торговли, благодаря тому, что используемая стратегия выхода не вклю чала хорошую защитную остановку! Не стоит ждать следующую возмож ность входа в противоположном направлении, чтобы выйти из плохой по зиции. Чрезмерная осторожность, приводящая к выходам без должных 308 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов оснований, также вызовет опустошение вашего счета, хотя и не столь быст рое. Дело в том, что любая торговля невозможна без убытков, пусть и не больших. Для того чтобы их компенсировать, необходимо полностью ис пользовать потенциал прибыльных позиций. Преждевременные выходы из удачных позиций лишают нас значительной части прибыли и отдают во власть неизбежных мелких (а иногда и крупных) убытков. Хорошая стратегия выхода, прежде всего, строго контролирует убытки, но при этом не жертвует многими потенциально прибыльными позициями.

Насколько важна стратегия выхода? Если риск четко контролируется путем быстрого избавления от убыточных сделок, и это сделано таким образом, что большинство прибыльных сделок не прекращается слишком рано, то в результате можно получить прибыль при использовании про игрышной системы! Иначе говоря, если прерывать убыточные сделки и оставлять прибыльные, то в итоге будет получена прибыль. Надежная стра тегия выхода может сделать хорошую систему еще более выгодной, со кращая временные падения капитала. Во время неизбежных убыточных периодов хорошая стратегия, включающая надежные методы контроля над риском, помогает трейдеру подготовиться к началу нового периода успешной торговли.

ЦЕЛИ ХОРОШЕЙ СТРАТЕГИИ ВЫХОДА Существуют две цели, которые пытается достичь хорошая стратегия вы хода. Первая и наиболее важная цель состоит в строгом контроле убытков.

Стратегия выхода должна диктовать, как и когда закрывать неудачную по зицию, чтобы предотвратить существенную эрозию торгового капитала.

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

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

ВВЕДЕНИЕ ВИДЫ ВЫХОДОВ, ИСПОЛЬЗУЕМЫХ В СТРАТЕГИИ ВЫХОДА Существует огромное множество видов выхода. В стандартной стратегии выхода были использованы только три вида выхода в простой неизменной манере. Фиксированный выход управления капиталом осуществлялся с помощью стоп-приказа: если рынок сместился против открытой позиции более чем на определенную величину, то позиция закрывается с ограни ченным убытком. Выход при достижении целевой прибыли осуществлял ся с помощью лимитного приказа: при смещении цены на указанную ве личину в благоприятном направлении производится выход с известной прибылью. И наконец, если позиция удерживалась в течение указанного количества дней, она закрывалась с помощью рыночного приказа.

Существует множество других типов выхода, не используемых в стан дартной стратегии выхода: следящие выходы, критические пороговые выходы, выходы, основанные на волатильности, и сигнальные выходы.

Следящий выход обычно осуществляется с помощью стоп-приказа и по этому часто называется следящим стопам. Этот вид выхода используют, когда рынок движется в благоприятном направлении для сделки. Следя щий стоп перемещается вверх или вниз вместе с рынком для того, чтобы при изменении направления движения рынка зафиксировать некоторую часть текущей прибыли. Если рынок разворачивается против сделки, то срабатывает следящий стоп, и позиция закрывается, сохранив часть при были. Критический пороговый выход закрывает позицию, когда рынок достигает или пересекает теоретический барьер (например, линию трен да, уровень поддержки или сопротивления, уровень коррекции Фибонач чи или линию Ганна), преодоление которого говорит о необходимости изменить текущую интерпретацию состояния рынка. Критические поро говые выходы могут быть осуществлены при помощи лимитных или стоп приказов в зависимости от того, является ли позиция длинной или корот кой, и в зависимости от направления пересечения барьерного уровня. Если рыночная волатильность (которая является мерой риска) внезапно воз растает, то следует закрыть позицию, применив выход, основанный на волатильности. Наконец, сигнальный выход основан на ожидаемом раз вороте направления рынка: длинная позиция закрывается из-за того, что система дает сигнал для открытия короткой позиции, или из-за генера ции сигнала специального индикатора. Многие выходы, основанные на распознавании моделей, являются сигнальными выходами.

Выходы управления капиталом Каждая стратегия выхода должна содержать выход управления капита лом. Выход управления капиталом осуществляется с использованием стоп приказа. Поэтому он часто называется защитной остановкой. Такая за 310 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов щитная остановка закрывает позицию после неблагоприятного движения рынка (движение против сделки) или по указанной цене ниже (в случае длинной позиции), или выше (в случае короткой позиции) цены входа в сделку. Защитная остановка обыкновенно остается на одном месте в те чение всего времени удержания позиции. Ее цель состоит в ограничении риска некоторой максимально допустимой величиной. Конечно, потен циальный риск может быть больше, чем ожидаемый. К примеру, рынок может испытать большой разрыв между ценой закрытия вечером и це ной открытия на следующее утро. Торговля без защитной остановки по добна полету в шатком старом самолете без парашюта.

Вопрос заключается не в том, нужны ли защитные остановки — разу меется, они просто необходимы. Основная задача состоит в нахождении оптимального положения защитной остановки. Есть много способов ре шить, где размещать защитные остановки. Самое простое размещение связано с максимальной суммой денег, которой трейдер готов рисковать в данной сделке (денежная защитная остановка). Например, если на S&P 500 открыта позиция и трейдер не желает рисковать более чем $1500, то он использует защитную остановку в размере $1500. Если рынок дви жется против сделки дальше, чем на $1500 (три пункта на S&P), то защит ная остановка срабатывает, и позиция закрывается. На волатильных рын ках и в волатильные периоды следует оставлять больше пространства для движения, т.е. избегать слишком близких к рынку защитных остановок, чтобы не закрыть потенциально прибыльные позиции с убытками.

Хороший способ установления защитной остановки основывается на ценовом барьере, таком как линия тренда или уровень поддержки/сопро тивления. В таких случаях защитная остановка работает как критичес кий пороговый выход. Например, если на S&P 500 есть множество трен дов и линий поддержки около 936,00 и длинная позиция на 937,00 была только что открыта, то стоит рассмотреть размещение защитной останов ки немного ниже 936,00, например на 935,50. Установка защитной оста новки на уровне 935 логична, поскольку пробой линии поддержки пред полагает, что тенденция изменилась и не следует оставаться в длинной позиции по S&P 500. В этом примере мы рискуем только $750, что суще ственно меньше чем $1500 — риск при использовании защитной останов ки, основанной на денежной сумме допустимого риска. Более «эконом ная» защитная остановка может часто устанавливаться рядом с важными уровнями поддержки/сопротивления, чем при использовании денежной защитной остановки.

Из вышесказанного становится ясно, что установка защитной оста новки является компромиссом. Хорошо иметь очень тесную защитную остановку, поскольку тогда убытки будут очень маленькими и относитель но безболезненными. Однако чем ближе защитная остановка к цене от крытия позиции, тем сильнее возрастает вероятность закрытия позиции, даже если рынок в конечном счете пойдет в благоприятном направлении.

ВВЕДЕНИЕ Например, если установлена защитная остановка в размере $50, то почти все сделки на S&P 500 независимо от метода входа будут остановлены с маленькими убытками. При сужении защитной остановки процент при быльных сделок уменьшается. Слишком тесная защитная остановка при носит в жертву большинство потенциально прибыльных сделок. С дру гой стороны, если защитная остановка расположена слишком далеко от цены входа в рынок, то убытки от неудачных сделок могут привести к потере всей ранее полученной прибыли. Секрет состоит в том, чтобы найти такую защитную остановку, которая эффективно проконтролирует убыт ки без принесения в жертву слишком многих потенциально прибыльных сделок.

Следящие выходы Следящий выход обычно осуществляется с помощью так называемой сле дящей остановки. Цель этого вида выхода состоит в том, чтобы при дви жении рынка в неблагоприятном направлении зафиксировать часть при были или обеспечивать защиту, которая является более плотной, чем пер воначальная защитная остановка. Если открыта длинная позиция на S&P 500 и имеется текущая незафиксированная прибыль, то было бы же лательно сохранить часть этой прибыли в случае, если рынок развернет ся. Именно для этого используется следящая остановка. Если установле на защитная остановка в размере $1500, и рынок сместился против пози ции больше чем на $1500, то позиция закрывается с убытком в $1500. Од нако, если рынок сместился на $1000 в направлении позиции, было бы разумно подвинуть старую защитную остановку поближе к текущей ры ночной цене, например на уровне прибыли, равной $500. Теперь, если рынок разворачивается, и достигается защитная остановка, то сделка бу дет закрыта с прибылью в $500, а не с убытком в $1500! При движении рынка в благоприятном направлении, следящая остановка может быть смещена вверх (или вниз — для короткой позиции). Она и называется следящей остановкой, потому что «следит» за текущей ситуацией на рын ке и защищает основную часть возрастающей текущей прибыли.

Хорошая следящая остановка может одновременно использоваться в качестве адаптивного выхода управления капиталом и выхода, фиксиру ющего прибыль! В любом случае она эффективна как часть общей стра тегии выхода. Следящие остановки и защитные остановки управления капиталом работают рука об руку. Хорошие трейдеры часто используют и то и другое, начиная с защитной остановки для управления капиталом и затем перемещая эту защитную остановку вместе с движением рынка.

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

312 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов Если торговля ведется достаточно активно и комиссионные поддержива ются на должном уровне, брокер не должен нервничать при нескольких корректировках стоп-приказов. Напротив, разумный брокер будет дово лен, понимая, что клиент, правильно и эффективно использующий выхо ды управления капиталом и следящие остановки, с большой вероятнос тью выживет как активный, создающий комиссию трейдер.

Как определяется размещение следящей остановки? Многие принци пы, обсуждавшиеся в отношении выходов управления капиталом, приме няются и к следящим остановкам. Остановка может быть установлена на определенном расстоянии от максимальной (или минимальной, в случае короткой позиции) рыночной цены, достигнутой во время сделки. Оста новка может быть связана с текущей рыночной волатильностью. Наклон ная линия поддержки/сопротивления, типа линии тренда или Ганна, так же может использоваться, если она присутствует в области, достаточно близкой к текущему рыночному состоянию. Кроме того, можно исполь зовать и фиксированные уровни поддержки/сопротивления: защитная остановка может повышаться от барьера к барьеру вместе с движением рынка в благоприятном направлении сделки.

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

Лимитный приказ, осуществляющий выход при достижении целевой при были, может либо быть фиксированным, подобно защитной остановке для управления капиталом, либо перемещаться вслед за ценой, как следящая защитная остановка. Фиксированная целевая прибыль может быть осно вана либо на волатильности, либо на простой долларовой сумме. Напри мер, если целевая прибыль в размере $500 установлена для длинной пози ции на S&P 500, то размещают лимитный приказ на продажу, закрываю щий позицию при движении цены на $500 в пользу сделки. Подобный приказ поможет быстро зафиксировать прибыль.

Существуют свои преимущества и недостатки в использовании выхо да по целевой прибыли. Одно из преимуществ состоит в том, что при ис пользовании выходов по целевой прибыли может быть достигнут высо кий процент прибыльных сделок, в то время как проскальзывание устра нено или даже направлено на пользу трейдера. Главный недостаток вы хода по целевой прибыли состоит в том, что он может послужить причи ной преждевременного выхода с маленькой прибылью из больших про должительных движений, особенно если методы входа не обеспечивают многократные входы в продолжающиеся тренды. При прочих равных ус ловиях, чем ближе целевая прибыль к цене входа, тем больше шансов на ВВЕДЕНИЕ то, что она будет достигнута, и, следовательно, тем выше процент при быльных сделок. Однако, чем ближе целевая прибыль, тем меньше при быль от сделки. Например, если была установлена целевая прибыль в раз мере $50 для сделки на S&P 500, а защитная остановка для управления ка питалом находится далеко (например, на $5000), больше чем 95% всех сде лок будут прибыльными! Однако при таких обстоятельствах прибыльные сделки принесут маленькую прибыль, которая будет обязательно уничто жена убытком в размере $5000, а также комиссионными. С другой сторо ны, если целевая прибыль очень велика, она будет фиксироваться очень редко. Так же как и с выходами по стоп-приказам, в данном случае имеет место компромисс: уровень целевой прибыли должен быть помещен дос таточно близко, чтобы была польза от увеличения количества прибыль ных сделок и сокращения проскальзывания, но в то же время он не дол жен располагаться слишком близко, снижая среднюю прибыль в сделке.

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

Мы предпочитаем системы, которые имеют высокий процент при быльных сделок. Целевая прибыль может увеличивать этот процент. Если используется модель, способная повторно входить в действующие трен ды, то выходы по целевой прибыли могут быть весьма эффективны. Дей ствительно, преимущества и недостатки зависят от природы используе мой системы, а также от личных предпочтений.

Мы экспериментировали с одним из видов целевой прибыли, который можно назвать сжимающейся целью. Этот метод создан для закрытия вя лых безжизненных сделок, которые будут не в состоянии инициализиро вать другие типы выходов. Сначала целевая прибыль устанавливается очень далеко от рынка. Затем лимитный приказ постепенно передвигает ся к рыночным ценам и, наконец, достигает той области, где естественная волатильность рынка вызовет его срабатывание и поможет получить не большую прибыль без проскальзывания.

Выходы, основанные на времени удержания позиции Выходы, основанные на времени, включают выход по рыночному приказу после того, как с момента открытия позиции пройдет определенное вре мя. Если рынок за указанное время значительно не сдвинулся, чтобы сра ботал выход по целевой прибыли или другой вид выхода, то сделка, веро ятно, бесперспективна и напрасно отвлекает ресурсы. Очевидно, что ги 314 ЧАСТЬ III ИССЛЕДОВАНИЕ выходов потеза, вызвавшая открытие данной позиции, не оправдалась. Поэтому сделка должна быть закрыта для поиска следующей возможности.

Pages:     | 1 |   ...   | 3 | 4 || 6 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.