WWW.DISSERS.RU

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

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

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 7 |

«THE ENCYCLOPEDIA OF TRADING STRATEGIES JEFFREY OWEN KATZ, Ph.D. DONNA L. McCORMICK McGraw-Hill New York San Francisco Washington, D.C. Auckland Bogota Caracas Lisbon London Madrid Mexico City Milan ...»

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

ГЛАВА Сезонность Представьте себе, что завтра — 7 июня 1997 г. И перед вами стоит вопрос: торговать или нет? Если вы будете торговать, то входить надо будет по открытию и выходить по закрытию. Вам также необходимо решить, как войти в рынок. Открыть длинную или короткую позицию? В качестве части процесса принятия решения Вы исследуете поведение рынка в каждое 7 июня за несколько последних лет (например, за 10). Вы заносите в таблицу следующие данные: количество дней с датой 7 июня, когда проводились торги, среднее изменение цены с открытия до закрытия и процент времени, когда рынок поднимался или падал. Предположим, за последние 10 лет было 8 случаев, когда рынок был открыт и проводились торги. Из этих случаев, допустим, рынок закрылся выше открытия 6 раз (75%), и среднее изменение цены равнялось 2,50 (правдоподобная цифра для S&P 500). На основе этой информации вы размещаете торговый приказ на покупку завтра по открытию и выход по закрытию. Завтрашним вечером вы повторяете процедуру для 8 июня, на следующий вечер для 9 июня и т.д. Это одна из форм сезонной торговли. Сделаете ли Вы таким образом Вашу торговлю прибыльной? Будет ли Ваша торговля хоть немного лучше случайной? Вот вопросы, которые возникают при обсуждении сезонной торговли и на которые эта глава пытается ответить.

ЧТО ТАКОЕ СЕЗОННОСТЬ? Термин «сезонность» используется трейдерами по-разному. Некоторые рассматривают сезонность как явление, строго связанное с четырьмя временами года: например, увеличение спроса на мазут для систем отопления зимой и на бензин летом. Другие допускают более широкую трактовку, которая учитывает погодные условия и предвыборные ситуации. Годами многочисленные статьи в научных журналах демонстрировали, что акции наиболее быстро растут в первых числах каждого месяца. Предпринимались обсуждения так называемого «эффекта января», согласно которому акции имеют тенденцию к росту в январе. Ганнула ГЛАВА СЕЗОННОСТЬ (Hannula, 1991) использовал сезонные циклы в своей собственной торговле, предоставляя в качестве примера график цены акций EXABYTE с отмеченными сильными сезонными проявлениями. Он также обсуждал другое явление, иногда наблюдаемое в связи с сезонными моделями, при котором максимумы и минимумы меняются местами. Эту картину мы также наблюдали, и она, возможно, может заслуживать исследования. Другие факторы, которые влияют на различные рынки, возникают в определенные календарные даты и, следовательно, должны вызывать сезонные эффекты. Например, заполнение налоговых деклараций повторяется из года в год в одно и то же время. Легендарный трейдер Ганн явно учитывал ежегодно повторяющиеся особенности в своей торговле. В курсе домашнего обучения по проблемам сезонности Бернстейн (Bernstein, 1995) советует открывать позиции при достижении существенных минимумов и максимумов, а также в случае, когда имеет место существенное движение цены в течение ряда лет. Этот подход, как и подход Ганнулы, может привести к включению в рассмотрение сделок, продолжительностью от нескольких недель до нескольких месяцев. В 1990 г. мы первыми опубликовали Диаграмму Календарных Эффектов — набор таблиц и график, которые показывают связь поведения индекса S&P с текущей календарной датой. Диаграмма показывает общий восходящий тренд с января по сентябрь, а затем медленное падение до 24 октября. Затем рынок, как правило, достигает своего дна, после чего резко растет до конца года. При более детальном рассмотрении видно, что резкий рост цен случается на протяжении большей части января, первой половины апреля и первой половины июля. Пик достигается 8 октября, после чего следует резкое падение вплоть до минимума 24 октября. При подготовке таблиц и диаграмм для этой публикации все экстремальные изменения цен были ограничены на уровне ±2% для предотвращения их чрезмерного влияния на результаты. Следовательно, сезонное понижение цен в октябре и другие упомянутые явления не могут объясняться одиночными событиями определенных лет, например кризисом 1987 г. Некоторые даты отличаются чрезвычайно стабильно повторяющимися ценовыми моделями. Например, если вход в рынок осуществлялся по закрытию 14 апреля, а выход — днем позже, в более чем 90% случаев можно было получить определенную прибыль. Вход 6 мая с выходом на день позже давал в результате прибыль в 100% случаев, как и вход 13 июля с продажей на следующий день. Рынок падал в 90% случаев с 18 по 19 октября и в 89% случаев с 16 до 17 октября. Хотя кризис 1987 г. привел к значительно большему, чем обычно, падению цен, наличие спада на момент кризиса совсем не было неожиданным. Чтобы попытаться уловить высокую вероятность кратковременных движений рынка, можно использовать Диаграмму Календарных Эффектов для открытия позиций продолжительностью в один или два дня. Например, такая методология могла бы побудить трейдера открыть короткую позицию 16 октября и выйти из рынка ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК 19 октября, получив колоссальную прибыль на обвале рынка 1987 г. Данные, представленные в этой публикации, могли бы также помочь сохранять позиции в течение периодов значительных подъемов и спадов. Были и другие исследования, указывающие на наличие ярко выраженных сезонных эффектов на рынке, которые могут быть использованы для прибыльной торговли. Проведенные нами исследования (Katz, McCormick, апрель 1997) показали, что кратковременное сезонное поведение может быть использовано для торговли индексом S&P 500. Система использовала пересечение быстрых скользящих средних, которые вычислялись на основе ценовых прогнозов, проведенных с помощью сезонной методологии. В связи с тем, что ожидаемые цены могут вычисляться, по крайней мере, на год вперед, запаздывание пересечения скользящего среднего легко компенсировалось смещением, что дало системе возможность производить сделки на пересечениях, происходящих через несколько дней после факта. Сделки, выполняемые системой, обычно длятся 7 — 8 дней — весьма краткосрочная модель сезонной торговли. Система оказалась прибыльной: она заработала $329 900 на S&P 500 с 3 января 1986 г. по 8 ноября 1996 г. Тест не учитывал затраты на осуществление сделок, но, если вычесть общие комиссионные ($15) и затраты на проскальзывание (по $75 на сделку), все равно полученная прибыль составит $298 310 (понижение около 10%). Доход за весь период— 732%. Если предположить, что торговля осуществлялась фиксированным количеством контрактов, это дает в среднем более 70% годовых при условии отсутствия реинвестирования прибыли. Была осуществлена 351 сделка, 60% которых были выигрышными. Прибыльными были как длинные, так и короткие позиции. Средняя сделка приносила $939 — неплохо для простой сезонно-ориентированной торговой системы. Подобные открытия позволяют предположить наличие на рынке сильных сезонных тенденций, которыми могут воспользоваться трейдеры. Таким образом, исследования в этой области вполне оправданы. Для наших текущих целей сезонность определяется как циклический или повторяющийся феномен, жестко привязанный к календарю. Этот термин используется в широком смысле для обозначения особенностей поведения рынка, привязанных к времени года или к конкретным датам, включая годовщины критических событий (например, обвал 16 октября 1987 г.). Короче говоря, сезонность определена как календарно-зависимый циклический феномен. При этом очевидно, что, хотя все сезонные проявления являются циклическими, не все циклы являются сезонными. ФОРМИРОВАНИЕ СЕЗОННЫХ ВХОДОВ Существует большое количество способов определения времени входа с использованием сезонных ритмов. Проанализируем два основных под ГЛАВА СЕЗОННОСТЬ хода: импульс цены и пересечение. Для вычисления импульса цены подсчитывается ряд ценовых изменений и используется центрированное сглаживание (сглаживание, которое не вносит никаких задержек или сдвигов фазы;

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

по открытию, лимитному приказу или стоп-приказу. Входы могут также быть получены путем вычисления ценовых различий, их нормировки, применения процедуры интегрирования или суммирования рядов (для получения варианта псевдоценовых рядов, основанных на всех имеющихся примерах каждой календарной даты) и последующего использования модели пересечения скользящих средних. Поскольку значение сезонного импульса для каждой календарной даты в ряду определяется только по торговым дням, относящимся к предыдущему или более отдаленным годам, задержка системы пересечения скользящих средних может быть компенсирована простой экстраполяцией на несколько дней вперед. Оба описанных выше метода по природе адаптивны, т.е. не требуют точной информации о дате размещения ордера на продажу или покупку. Адаптивные свойства вышеупомянутых методов важны, поскольку разные рынки по-разному реагируют на сезонные влияния, что понятно логически и подтверждается предыдущими исследованиями. В этом исследовании также тестировались несколько правил, использующих подтверждения и инверсии для поиска вариантов, работающих лучше основной модели. Подтверждение означает, что для поддержки генерируемого моделью сигнала используются дополнительные данные. Например, представьте, что модель генерирует сигнал на покупку для данного торгового дня. Если все идет так, как ожидается, то ко времени покупки рынок будет близок к минимуму. Если же рынок в это время образует вершину, то достоверность сигнала находится под сомнением, по ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК скольку рынок не следует типичному сезонному поведению. При существовании таких видимых противоречий было бы полезно иметь дополнительные критерии для принятия решения. Модель на основе пересечения с подтверждением использует принцип пересечения с дополнительным правилом, которое должно выполняться для срабатывания сигнала: например, если подается сигнал на покупку, то показатель Медленного %К должен быть менее 25%, что означает близость рынка к минимуму за последнее время. Соответственно, если подается сигнал на продажу, то Медленный %К должен быть выше 75%, означая близость рынка к максимуму за последнее время, соответственно ожидаемому циклическому поведению. Модель на принципе подтверждения и инверсии добавляет еще один элемент: если основная модель подает сигнал на покупку, а в это время рынок по показателю Медленного %К близок к максимуму (более 75%), то считается, что произошел разворот, и вместо приказа на покупку отдается сигнал на продажу. Если система подает сигнал на продажу, а рынок близок к минимуму (Медленный %К менее 25%), то отдается приказ на покупку. ХАРАКТЕРИСТИКИ СЕЗОННЫХ ВХОДОВ Представьте систему, основанную на простом пересечении скользящих средних. Такая система обычно хорошо улавливает тренды, но отстает от рынка и подвержена пилообразным скачкам. Если использовать более длинные скользящие средние, то можно избежать скачков за счет увеличения запаздывания системы. Теперь добавим к системе сезонность — применим следующие за трендом скользящие средние не к ценам, а к ряду данных, отображающему сезонные приливы и отливы рынка. Затем рассчитаем сезонный ряд данных так, чтобы сезонный эффект прогнозировался на несколько дней вперед — достаточно, чтобы избавиться от запаздывания! Таким образом, будет создана система без запаздывания (несмотря на использование медленных, сглаженных скользящих средних), которая следует за сезонными трендами. Способность таким образом избавляться от запаздывания связана с одной из характеристик сезонных систем — предсказуемостью сезонных моделей. Другими словами, сезонные модели прогнозируют рынок, а не просто реагируют на него. Следовательно, сезонные модели позволяют определить точки разворота до их реального возникновения и могут быть использованы в качестве основы противотрендовых торговых систем. Более того, прогнозы делаются задолго до событий, что позволяет достичь высокой степени сглаживания, предупреждающего или, по крайней мере, смягчающего множество ложных сигналов, характерных для менее «сглаженных» систем. Еще одна полезная характеристика сезонных моделей — возможность ГЛАВА СЕЗОННОСТЬ определить дату сделки на дни, месяцы и даже годы вперед, что, несомненно, полезно. Сезонность не лишена отрицательных сторон. Степень предсказуемости любого конкретного рынка при помощи модели может быть низкой. Прибыль или вероятность прибыльности средней сделки также может быть невысокой. Если происходит разворот, не предусмотренный в торговой системе, можно понести тяжелые убытки, поскольку система может привести к входам точно по максимальной цене или к выходам точно по минимальной. Степень полезности и достоверности прогнозов сезонных моделей, а также вероятность возникновения непредсказуемых разворотов и необходимость их учитывать будут темами нашего эмпирического исследования. ВИДЫ ПРИКАЗОВ, ИСПОЛЬЗУЕМЫХ ДЛЯ ОСУЩЕСТВЛЕНИЯ СЕЗОННЫХ ВХОДОВ Входы, основанные на сезонных сигналах, могут реализовываться тремя способами: при помощи стоп-приказов, лимитных или рыночных приказов. Поиск наиболее подходящего для данной модели входа является одной из важных задач разработчика торговых систем. Приказы, обеспечивающие вход в рынок, имеют свои достоинства и недостатки. Преимущество рыночного приказа в том, что ни один сигнал на вход не будет пропущен. Стоп-приказ гарантирует, что в системах следования за трендом ни один значительный тренд не будет пропущен, а в противотрендовых системах полезным может отказаться то, что ни один приказ не будет выполнен без подтверждения движения рынка в благоприятном направлении. Недостатками являются увеличенное проскальзывание и менее оптимальные цены входа. Лимитный приказ обеспечивает оптимальную цену и минимальные расходы на сделку, но при ожидании отката до цены лимитного приказа можно пропустить важные тренды, а при торговле против тренда использование лимитного приказа приведет к менее выгодным ценам входа. Вход будет выполнен по цене лимитного приказа, а не по цене, определенной отрицательным проскальзыванием, которое иногда возникает при движении рынка против сделки на момент входа.

МЕТОДОЛОГИЯ ТЕСТИРОВАНИЯ Для тестирования методов сезонных входов использованы данные с 1 августа 1985 г. по 31 декабря 1994 г. (оптимизационная выборка) и с 1 января 1995 г. по 1 февраля 1999 г. (период вне пределов выборки). Для иссле ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК дования сезонности выборка размером около 10 лет является недостаточно протяженной. При обсуждении сезонных сигналов упоминалась практика расчета сезонного импульса (или же среднего поведения цен) на основе данных за предыдущие годы. Ввиду небольшого размера выборки расчеты будут основываться не только на прошедших, но и на будущих годах. Для этого используется специальная методика — так называемый подход «складного ножа». Метод перебирает целевые даты, перемещаясь вдоль временного ряда. Если при усреднении сезонных эффектов использовать только соответствующие календарные даты прошлых лет, то для точек, приходящихся на начало выборки, таких данных очень мало или вообще нет. Поскольку для получения приемлемого сезонного среднего требуется не менее 6 лет, то для большей части периода выборки (всего 10 лет) расчет будет невозможен. Следовательно, данных для оптимизации важных параметров или анализа эффективности работы модели в пределах выборки явно недостаточно. Хорошо известный статистический метод «складного ножа» помогает решить проблему с недостатком данных. Представьте, что рассчитывается сезонное поведение начиная с 1 июня 1987 г. Если использовать только данные из пределов выборки, то пришлось бы ограничиться данными за 1986 и 1985 гг. При использовании метода «складного ножа» в расчет можно включать даты не только из прошлого, но и из относительного «будущего», т.е. с 1988 г. по 1994 г. Если год, для которого значение целевой даты рассчитывается (1987), удалить из пределов выборки, то сезонное поведение можно будет рассчитывать на основе 9 лет данных, а этого вполне достаточно. Подобная процедура оправданна, поскольку данные, исследуемые для получения прогноза, не зависят от прогнозируемых данных. Данные, используемые для получения прогнозов, отстоят от целевой даты не менее чем на год — следовательно, они не «загрязнены» текущим состоянием рынка. Этот метод позволяет значительно увеличить размер выборки, не снижая количество степеней свободы. Для оценки влияния сезонных факторов вне пределов выборки были использованы все прошедшие годы. Например, для получения данных, соответствующих 14 января 1999 г., был использован метод всех прошедших лет: в анализ были включены данные с 1998 г. по 1985 г. Таким образом, ни один из расчетов вне пределов выборки не основывается на данных из будущего или настоящего времени. Все тесты, следующие ниже, проведены с использованием сезонных входов на основе разнообразного портфеля рынков. Использованы стандартные выходы, как и в других исследованиях моделей в этой книге. Позиции закрываются при срабатывании стандартного выхода или при получении сигнала на вход в противоположном направлении. Использована стандартная платформа тестирования. Ниже приведен код для тестирования сезонной торговли.

ГЛАВА СЕЗОННОСТЬ void SeasonalAvg (float *a, float *v, float *dt, int mode, int m, int n) { // // // // // // // // // // // // Подсчитывает сезонное среднее для каждой календарной даты, основанное на предыдущих и (в некоторых случаях) на последующих годах. Работает на всех сериях данных. а — вне: значений [1..n] сезонных средних v — в: оригинальных сериях данных [1..n] dt — в: сериях [1..n] соответствующих дат mode — в: методе анализа: 1 = «складной нож» в пределах выборки, все последние годы вне выборки 2 = фиксированный период анализа, выраженный в годах m — в: дата (режим = 1) или период анализа (режим = 2) n — в: число дней во всех рядах данных static int i, j, cnt;

static unsigned long k;

static float sum, sdate;

if(mode == 1) { // режим «складного ножа» for(i = 1;

i <= n;

i++) { // для каждой текущей даты sum = 0.0;

cnt = 0;

for{j = 1;

j < 100;

j++) { // двигаемся назад к sdate = f(int)dt[i] - 10000 * j);

// исходной дате if (sdate < dt[3]) break;

// переход к началу k = max(0, (int){i-260.893*j));

// приблизительный индекс hunt(dt, n, sdate, &k) ;

// находим точный индекс if(sdate > dt[k]) k++;

if(sdate = dt[k]) continue;

cnt++;

sum += v[k];

// накапливаем среднее ) for(j = 1;

j < 100;

j++) { // двигаемся вперед sdate = ((int)dt[i] + 10000 * j);

/ / к исходной дате if(sdate > m) break;

// избегаем данных вне выборки k = min(n, (int)(i+260.893*j);

// приблизительный индекс hunt(dt, n, sdate, &k);

// находим точный индекс if(sdate > dt[k]) k++;

if(sdate = dt[k]) continue;

cnt++;

sum += v[k];

// накапливаем среднюю } a[i] = sum / (cnt + l.OE-20);

// заканчиваем среднюю } // следующая текущая дата } else if(mode == 2) { // режим фиксированного периода // анализа for {i = 1;

i <= n;

i++) { // для каждой текущей даты sum = 0.0;

cnt = 0;

for(j = 1;

j < 100;

j++) ( // идем вперед if(cnt >= m) break;

// достаточность лет для теста sdate = ((int)dt[i] - 10000 * j);

// исходная дата if (sdate < dt[3]) break;

// идем к началу k = max(0, (int)(i-260.893*j));

// приблизительный индекс hunt(dt, n, sdate, &k) ;

// находим точный индекс if(sdate > dt[k]) k++;

if(sdate = dt[k]) continue;

cnt++;

sum += v[k];

// накапливаем среднюю } for(j = 1;

j < 100;

j++) ( // идем вперед if (cnt >= m) break;

// достаточность лет для теста sdate = ((int)dt[i] + 10000 * j);

// исходная дата ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК k = min(n, (int)(i+26Q.893*j));

// приблизительный индекс hunt(dt, n, sdate, &k);

// находим точный индекс if(sdate > dt[k]) k++;

if(sdate = dt[k]) continue;

cnt++;

sum += v[k];

// накапливаем среднюю } a[i] = sum / cnt;

} // заканчиваем среднюю // следующая текущая дата } } 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 = x12mod01.c // parms — набор [1..MAXPRM] параметров // dt - набор [l..nb] дат в формате ГГММДД // орn — набор [1..nb] цен открытия // hi - набор [l..nb] максимальных цен // 1о — набор [1..nb] минимальных цен // cls - набор [l..nb] цен закрытия // vol — набор [1..nb] значений объема // oi — набор [1..nb] значений открытого интереса // dlrv — набор [1..nb] средних долларовой волатильности // nb - количество торговых дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls — набор [1..nb] уровней капитала при закрытых позициях // объявляем локальные переменные static int rc, cb, neontracts, maxhold, ordertype, signal;

static int avglen, disp, k, modeltype, rnatype;

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

static float exitatr[MAXBAR+1];

static float savg[MAXBAR+1], pchg[MAXBAR+1], stoch[MAXBAR+1] ;

static float ma1[MAXBAR+1], ma2 [MAXBAR+1] ;

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

// длина скользящей средней disp - parms[2];

// фактор смещения thresh = parms[3];

// пороги для импульсных моделей matype = parms[7];

// тип скользящей: // 1=простое скользящее среднее // 2-экспоненциальное // 3=треугольное с передним взвешиванием // 4-треугольное // 5=простое центрованное // 6 =экспоненциальное центрированное // 7 =треугольное центрированное modeltype = parms[8];

// тип модели: // 1-импульс // 2-пересечение // 3=пересечение с подтверждением // 4=пересечение с подтверждением и инверсией ordertype = parms[9];

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

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

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

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

// средний истинный диапазон для // выхода ГЛАВА СЕЗОННОСТЬ pchg[l] = 0.0;

for(cb = 2 ;

cb <= nb;

cb++) { tmp = cls[cb] - cls[cb-l];

// изменение цены tmp = tmp / exitatr[cb];

// нормирование pchg[cb] = clip(tmp, -2.0,2.0);

// клиппинг } switch(modeltype) { case 1 // данные для импульсной модели SeasonalAvg(savg,pchg,dt,1,OOS_DATE,nb);

// сезонности MovAvg{savg,savg,matype,avglen,nb);

// сглаживание // скользящей for(cb = 1;

cb <= nb;

cb++) rna2 [cb] = fabs (savg [cb] } ;

MovAvg(mal, ma2, 1, 100, nb};

// среднее отклонение break;

case 2: case 3: case 4: // данные для модели пересечения SeasonalAvg(savg,pchg,dt,1,OOS_DATE,nb);

// сезонности for(cb = 2 ;

cb <= nb;

cb++) savg [cb] = savg[cb-l] ;

// объединение MovAvg{mal,savg,matype,avglen,nb);

// сглаживание среднего MovAvg(ma2,rnal,matype,avglen,nb) ;

// пересечение средней if(modeltype = = 3 || modeltype == 4) // стохастический // осциллятор StochOsc(stoch,hi,lo,cls,1,9, nb) ;

// 9-дневный Быстрый %К;

break;

default: nrerror{"TRAPSMOD: invalid modeltype");

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

cb <= nb;

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

continue;

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

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

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

// не входим в сделки в последние 30 дней внутри выборки // оставляем место в массивах для будущих сезонностей if(cb > nb-30) continue;

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

if(ncontracts < 1) ncontracts = 1;

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

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

switch{modeltype) { case 1: // основная модель входа на основе порогов импульса k = cb + disp;

tmp = thresh * mal[k];

if(savg[k] > tmp && savg [k-1] <= tmp) signal = 1;

else if (savg [k] < -tmp && savg[k-1] >= -tmp) signal = -1;

ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК break;

case 2: // основная модель входа на пересечении k = cb + disp;

if(CrossesAbove(mal, ma2, k)) signal = 1;

else if{CrossesBelow(mal, ma2, k)} signal = -1;

break;

case 3: // пересечение с подтверждением k = cb + disp;

if(CrossesAbove(mal, ma2, k)) { if(stoch[cb] < 25.0) signal = 1;

} else if(CrossesBelow(mal, ma2, k)) ( if(stoch[cb] > 75.0) signal = -1;

} break;

case 4: // пересечение с подтверждением и инверсией k = cb + disp;

if(CrossesAbove(mal, ma2, k)) ( if(stoch[cb] < 25.0) signal = 1;

else if(stoch[cb] > 75.0) signal = -1;

} else if(CrossesBelow(mal, ma2, k)) { if(stoch[cb] > 75.0) signal = -1;

else if(stoch[cb] < 25.0) signal = 1;

) break;

default: nrerror("TRAPSMOD: invalid modeltype");

} 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.position1) >= 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);

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

ГЛАВА СЕЗОННОСТЬ Следующий блок проводит все расчеты на полной серии данных. Средний истинный интервал для 50 дней рассчитывается и сохраняется в векторе (exitatr). Впоследствии он будет использоваться для размещения защитных остановок управления капиталом и целевых уровней прибыли в стандартизованной стратегии выхода. Средний истинный интервал в этом векторе (или в ряду данных) также используется для нормализации возникающих в ходе работы программы изменений цен. После вычисления среднего истинного интервала рассчитываются нормализованные и «обрезанные» изменения цен. Каждая точка в ряду данных pchg отражает изменение цены между ценами закрытия текущего и предшествующего дней. Изменения цены затем нормализуются путем деления их на средний истинный интервал и «обрезаются» для снижения влияния экстремальных перепадов цены (статистических выбросов). Нормализация необходима, поскольку волатильность рынков меняется со временем иногда очень сильно. Например, сейчас индекс S&P 500 в 5 и более раз дороже, чем 15 лет назад. Очевидно, что и средняя дневная волатильность изменилась соответствующим образом. Если бы изменения цены не подвергались нормализации и не представлялись в единицах текущей волатильности, сравнение сезонных явлений за разные годы было бы искаженным. Годы, когда волатильность была выше, давали бы больший вклад, чем годы с низкой волатильностью. В случае S&P 500 последние годы полностью доминировали бы при проведении усреднения, а при нормализованном представлении каждый год вносит почти одинаковый вклад. Срезание выбросов проводится на уровне — 2 и + 2 средних истинных интервала, чтобы удалять случайные и аномальные значения, не искажая общую оценку. Опция выбора modeltype определяет, какие операции проводятся далее. Значение 1 выбирает основную импульсную модель. Сезонные показатели рассчитываются для обрезанных и нормализованных изменений цен, причем в пределах выборки используется метод «складного ножа», а вне пределов выборки — метод «всех прошедших лет». Эти операции обеспечиваются вызовом функции SeasonalAvg. Временной ряд сезонных показателей затем сглаживается скользящим средним (вид среднего устанавливается параметром matype, а длина— параметром avglen). Затем рассчитывается временной ряд средних абсолютных отклонений сезонных импульсов. Этот ряд представляет собой простое скользящее среднее с периодом 100 дней от ряда абсолютных значений сезонных импульсов, которое затем используется в дальнейших расчетах уровней порогов. Значения modeltype 2, 3 и 4 представляют собой вариации моделей, основанных на пересечении. Сезонные показатели рассчитываются, и показатель изменения цены для каждого дня интегрируется (вычисляется «бегущая сумма»), в результате образуется новый ряд, ведущий себя подобно ценовому ряду. Эта синтезированная серия отображает движение цен на основе типичного поведения рынка в предшествующие и, воз ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК можно, в будущие годы. Затем рассчитываются два скользящих средних: та! (скользящее среднее интегрированного сезонного ряда типа matype с периодом avglen) и та2 (сигнальная линия для определения момента пересечения, представляет собой скользящее среднее ma1 с теми же параметрами matype и avglen). Если же выбран modeltype 3 или 4, то проводятся дополнительные расчеты для моделей с подтверждением и/или инверсией;

в данном случае рассчитывается значение Быстрого %К с периодом 9 дней, которое затем сохраняется в векторе stoch. Следующий блок кода включает цикл, последовательно перебирающий все торговые дни в ряду данных, — такой же цикл, как и во всех предыдущих главах, посвященных стратегиям входа. Первые его строки обеспечивают обновление симулятора, рассчитывают количество контрактов в сделке и пропускают дни с ограниченной торговлей. Следующие строки генерируют сигналы входа для моделей, основанных на сезонных факторах. В зависимости от значения параметра modeltype используется один из четырех подходов. Modeltype 1 представляет базовую модель, основанную на пороге ценового импульса. Порог рассчитывается как произведение множителя, определяющего относительную величину порога (thresh) на среднее абсолютное отклонение сезонного импульса за прошлые 100 дней. Сигнал к покупке генерируется, если сумма сезонного импульса (savg) и параметра смещения (disp) поднимается выше уровня порога. Если данная сумма опускается ниже величины, равной значению порога со знаком минус, подается сигнал на продажу. Иными словами, если для данного дня плюс-минус несколько дней (disp) предсказывается достаточно сильный сезонный импульс цен, то торговля ведется в направлении ожидаемого движения. Modeltype 2 представляет базовую модель пересечения и использует скользящие средние интегрированных сезонных показателей текущего дня плюс фактор смещения. Если первое скользящее среднее поднимается выше второго, генерируется сигнал к покупке. В противоположном случае генерируется сигнал к продаже. Фактор смещения позволяет модели искать моменты пересечения, которые произойдут в будущем через несколько дней. Таким образом, преодолевается запаздывание, свойственное скользящим средним. Поскольку сезонные средние основываются на исторических данных, отстоящих от текущей даты не менее чем на один год, вполне приемлемо прогнозировать на несколько дней вперед. Modeltype 3 представляет собой ту же модель на основе пересечения, но с добавлением подтверждения. Подтверждение обеспечивается проверкой стохастического осциллятора ценового ряда, определяющей, совпадает ли его динамика с ожидаемым поведением на основе сезонных факторов. Modeltype 4 использует модель, основанную на пересечении с добавлением подтверждения и инверсии. При использовании modeltype 4 сигнал к покупке подается, если первое скользящее среднее пересекает вто ГЛАВА СЕЗОННОСТЬ рое снизу вверх. При этом значение стохастического осциллятора должно быть не менее 25. Если же при верхнем пересечении стохастический показатель превышает уровень 75, то модель подает сигнал к продаже исходя из предположения, что произошла инверсия. Если первое скользящее среднее ниже второго, и нормальная сезонная модель подтверждается значением стохастического осциллятора, превышающим уровень 75, генерируется сигнал к продаже. Если в этом случае показатель составит менее 25, предполагается инверсия и отдается сигнал к покупке. В свою очередь цена лимитного приказа (limprice) устанавливается на уровне середины ценового диапазона текущего дня. Цена входного стопприказа (stpprice) устанавливается на уровне закрытия текущего дня плюс (для покупки) или минус (для продажи) половина среднего истинного диапазона последних 50 дней. Остальные блоки кода идентичны приводившимся в предыдущих главах: они обеспечивают размещение приказов указанного вида (ordertype) и стандартные выходы. РЕЗУЛЬТАТЫ ТЕСТОВ Проводились тесты двух основанных на сезонных явлениях моделей входа: модели на пересечении (с подтверждением и инверсией и без них) и модели, основанной на ценовом импульсе. Каждая модель исследовалась с тремя видами обычных входных приказов: вход по цене открытия, по лимитному и стоп-приказу. В табл. 8-1 и 8-2 показаны результаты тестирования этих моделей по отдельным рынкам в пределах выборки (табл. 8-1) и вне пределов выборки (табл. 8-2). В первом столбце указаны обозначения рынка. Последняя колонка показывает, сколько прибыльных тестов было получено для данного рынка. Цифры в верхней строке указывают номер теста, последняя строка — на скольких рынках данная модель была прибыльной. Эти данные достаточно подробно показывают степень прибыльности системы: один минус ( — ) означает умеренные средние убытки в сделке ($2000 — 4000), два минуса ( ) — крупные убытки (более $4000). Один плюс (+) означает умеренную прибыль ($1000 — 2000), два плюса (+ +) означают крупную прибыль — более $2000 в сделке. Пустая ячейка обозначает прибыль до $ 1000 или убыток до $ 1999. (Названия рынков и их символы соответствуют обозначениям табл. II-1;

часть II, введение.) Тесты базовой модели, основанной на пересечении Интегрированный временной ряд ценоподобных сезонных показателей сглаживался с помощью простого скользящего среднего ma1 с периодом avglen. На его основе строилось второе среднее та2. Сигнал к покупке ЧАСТЬ И ИССЛЕДОВАНИЕ входов в РЫНОК генерировался, когда та! пересекала снизу вверх та2. Сигнал к продаже генерировался, когда ma 1 пересекала сверху вниз та2. В целом это та же модель, основанная на пересечении скользящих средних, но в ней используются не собственно цены, а прогнозируемые сезонные временные ряды. Вход обеспечивается рыночным приказом по цене открытия (тест 1), лимитным приказом (тест 2) или стоп-приказом (тест 3). Оптимизация в этих тестах состояла в прогонке параметра периода скользящего среднего avglen от 5 до 20 с шагом 5 и также в прогонке параметра смещения (disp) от 0 до 20 с шагом 1. С использованием входа по цене открытия по показателю соотношения риска/прибыли в пределах выборки оптимальными были значения периода скользящего среднего 20 и смещения 5. При входе по лимитному приказу оптимален был период 20 и смещение 8, при входе по остановке период 20 и смещение 6. Модель, видимо, лучше работала с длинными скользящими средними (с сильным сглаживанием), и для входов по лимитному приказу требовались немного более ранние сигналы по сравнению с входами по рыночному и стоп-приказу. В пределах выборки не было получено ни одного положительного результата при использовании и длинных, и коротких позиций, хотя средний убыток в сделке был гораздо меньше, чем во многих тестах из предыдущих глав. Лучше всего работали стоп-приказы, немного хуже — лимитные приказы, а хуже всего — рыночные приказы по цене открытия. Для стоп-приказов и лимитных приказов при ограничении только длинными позициями торговля была выгодной. Во всех случаях наилучший период скользящих средних составлял 20 дней, а оптимальное значение смещения изменялось для разных типов приказов. При использовании входа по цене открытия оптимальное смещение равнялось 5 дням, при входе по лимитному приказу — 8 дням, а по стоп-приказу — 6 дням. Это вполне осмысленно, поскольку лимитные приказы отдаются раньше, чем рыночные приказы по открытию (так как для выполнения лимитного приказа требуется некоторое время). Вне пределов выборки результаты показали подобное же распределение относительной эффективности по показателям средней прибыли со сделки ($СДЕЛ);

использование приказов по остановке давало прибыль в $576 со сделки, что соответствует доходности 8,3% годовых. Это немного, но, тем не менее, это реальный положительный результат на недавних данных вне пределов выборки. При использовании входов по стоп-приказу торговля, ограниченная только длинными позициями, была выгодной и в пределах, и вне пределов выборки, а торговля короткими позициями была убыточной в обоих случаях. Это соответствует результатам многих ранее проводившихся тестов. Для всех видов приказов и всех выборок процент прибыльных сделок составлял от 40 до 43%. Интересно отметить, что даже в убыточных вариантах потери капитала были значительно меньше, чем встречавшиеся в разнообразных предыдущих тестах.

ГЛАВА СЕЗОННОСТЬ Таблица 8—1. Эффективность в пределах выборки на различных рынках и в различных тестах При использовании рыночного входа по цене открытия капитал снижался до ноября 1988 г. До июля 1989 г. было восстановлено около 50% потерь, образуя U-образную модель со вторым пиком в районе ноября 1990 г. Затем наблюдалось довольно быстрое снижение до ноября 1992 г., после чего — более медленное падение капитала на протяжении всего остатка выборки и первой трети периода вне выборки. Это снижение закончилось в апреле 1996 г., и с тех пор до конца периода вне выборки капитал возрастал.

ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 8—2. Эффективность вне пределов выборки на различных рынках и в различных тестах При использовании входа по лимитному приказу капитал почти не изменился до января 1987 г., очень резко вырос до пика в мае 1987 г. и затем падал до ноября 1992 г. С этого времени до июля 1994 г. наблюдался резкий подъем, после чего наблюдались беспорядочные изменения без явного тренда. Использование входных стоп-приказов обеспечивало стабильный и сильный рост капитала до июня 1988 г., а затем наблюдалось падение до конца периода выборки и в течение первой трети периода вне выборки.

ГЛАВА СЕЗОННОСТЬ Минимум был достигнут в декабре 1995 г., а с тех пор и до февраля 1999 г. (конец данных) отмечен резкий подъем. При сравнении результатов различных рынков видно, что наиболее результативным был рынок неэтилированного бензина, где наблюдались устойчивые значительные прибыли и в пределах, и вне пределов выборки. С этой моделью также хорошо сочетался рынок палладия: входы по открытию и по лимитному приказу давали прибыль и в пределах, и вне пределов выборки, а вход по стоп-приказу был весьма прибылен в пределах выборки и нейтрален вне нее. Кроме этого, хорошим сезонным рынком оказался рынок живых свиней, прибыльный в пределах выборки для всех видов приказов. Вне выборки на этом рынке были прибыльны входы по лимитному приказу и стоп-приказу. Хорошо соответствовал сезонной модели рынок кофе: все три вида приказов давали прибыль в пределах выборки, входы по открытию и по стоп-приказу дали значительную прибыль вне пределов выборки. Кроме того, неплохо работала система и на рынке хлопка: вход по стоп-приказу обеспечил высокую прибыль и в пределах, и вне пределов выборки, и ни один вид приказов не принес значительных убытков в обеих выборках данных. То, что рынок неэтилированного бензина хорошо работал с данной моделью, неудивительно. Достаточно странно, что рынок мазута, потребность в котором сильно зависит от времени года, был прибыльным только с использованием входов по лимитному приказу в обеих выборках данных. На рынке кофе также существуют выраженные сезонные модели, связанные, например, с заморозками, которые повреждают плантации, вызывают дефицит и повышают цены. При этом, как ни странно, в пределах выборки рынки пшеницы были малоприбыльны, за исключением миннесотской пшеницы с использованием входа по лимитному приказу. Вне пределов выборки в группе пшениц наблюдалось больше прибылей. Например, вход по лимитному приказу обеспечивал прибыль на всех трех рынках пшеницы, а вход по стоп-приказу — только на канзасском рынке. Ряд других рынков также принес прибыли для некоторых видов приказов в пределах или вне пределов выборки. По сравнению со скромными результатами большинства моделей, исследовавшихся в предыдущих главах, общее количество прибыльных результатов на различных рынках в разные периоды времени не может не произвести благоприятного впечатления. Кроме этого, интересно отметить расхождение между поведением сезонных моделей в этом исследовании и в наших собственных тестах S&P 500 более раннего периода (Katz, McCormick, апрель 1997). Различия, скорее всего, объясняются разной настройкой процедуры оптимизации. В ранних тестах проводилась настройка на торговлю только индексом S&P 500, а в более поздних — целым портфелем финансовых инструментов. По сравнению с другими рынками сезонные явления на рынке S&P 500 имеют гораздо более высокую частоту и, следовательно, требуют использования скользящих средних со значительно меньшим периодом.

ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Кроме того, ранние тесты не использовали отдельных выходов для того, чтобы была возможность захватывать сезонные тренды длиной в несколько недель. В данных тестах стандартный выход закрывает сделку спустя не более чем 10 дней — скорее всего, эффективность всех рынков, а не только S&P 500, увеличилась бы при замене стандартного выхода на выход, способный удерживать позицию при продолжительных трендах. Тестирование базовой модели, основанной на ценовом импульсе Для модели, основанной на импульсе, проводилось сглаживание неинтегрированного сезонного временного ряда изменений цены при помощи центрированного простого скользящего среднего с периодом avglen. Центрированное СС не дает запаздывания, поскольку относительно текущего дня этот метод усредняет одинаковое количество прошлых и будущих точек данных. Использование этого метода оправдано для сезонных моделей, в которых оценка сезонного влияния на определенную дату основывается на данных старше одного года. Для этого сглаженного ряда сезонных изменений цены рассчитывается ряд средних абсолютных отклонений. Для этого рассчитывалось абсолютное отклонение для каждого дня. Затем ряд абсолютных отклонений усреднялся с помощью скользящего среднего с периодом 100 дней. Сигнал на покупку генерировался, если значение сезонного импульса данного дня плюс смещение (disp) превышало некое пороговое значение (thresh), умноженное на среднее абсолютное отклонение сезонного импульса. Сигнал на продажу генерировался, если сезонный импульс с учетом смещения был меньше произведения порогового множителя (thresh) и среднего абсолютного отклонения, взятого со знаком минус. Входы выполнялись при помощи различных приказов: в тесте 4 — вход по открытию, в тесте 5 — вход по лимитному приказу, в тесте 6 — по стоп-приказу. Оптимизировался период скользящего среднего, смещение и порог. Период прогонялся от 5 до 15 с шагом 5;

смешение от 1 до 10 с шагом 1;

порог от 1,5 до 2,5 с шагом 0,5. Наилучшая эффективность в пределах выборки отмечена при периоде 15, пороге 2,5 и смещении 2 вне зависимости от вида приказа. Для входа по открытию и по стоп-приказу было предпочтительно смещение 2, для входа по лимитному приказу — смещение 1. В соответствии с этим ожиданиями значения смещения были гораздо меньше, чем в модели, основанной на пересечении, в которой за счет смещения необходимо было компенсировать запаздывание скользящих средних. В общем, результаты были гораздо хуже, чем у сезонной модели на пересечении средних. В пределах выборки только входы по стоп-приказу были прибыльными. Вне пределов выборки ни один вид входов не дал положительных результатов. Средние убытки в сделке были весьма значительными, и, как ни странно, длинные позиции работали хуже, чем ко ГЛАВА СЕЗОННОСТЬ роткие. Это противоречит общей картине более высокой эффективности длинных сделок. При входе по рыночному приказу по цене открытия и по лимитному приказу капитал снижался с начала выборки до конца периода вне выборки. При использовании входа по лимитному приказу падение капитала было более плавным. При использовании входов по стоп-приказу график изменения капитала колебался в горизонтальном диапазоне до мая 1990 г. Затем начался резкий рост капитала, продолжавшийся до сентября 1990 г. С тех пор и почти до конца данных капитал медленно падал. После апреля 1997 г. капитал практически перестал изменяться. Модель получила прибыль при торговле казначейскими облигациями, 10-летними казначейскими бумагами, иеной, сырой нефтью, мазутом, неэтилированным бензином, живыми свиньями и кофе в пределах и вне пределов выборки. Например, казначейские облигации и 10-летние бумаги были весьма прибыльны на обеих выборках при использовании входов по лимитному приказу или стоп-приказу. Рынок иены был наиболее прибылен с использованием входов по стоп-приказу, но приносил доход и с другими приказами, равно как и сырая нефть. Рынки мазута и неэтилированного бензина были высокоприбыльны в обеих выборках при использовании входов по открытию и по стоп-приказу, но не входов по лимитному приказу. На рынке живых свиней максимальные прибыли во всех периодах отмечены при использовании входа по открытию или по стопприказу. Этот рынок был постоянно прибыльным для всех видов приказов, как и рынок кофе, где наиболее устойчивая и высокая прибыль обеспечивалась входом по стоп-приказу. В большинстве случаев на рынках пшеницы модель была убыточной. В пределах выборки 15 рынков были в той или иной степени прибыльными при использовании стоп-приказа, 13 рынков — при входе по открытию и 9 рынков — при входе по лимитному приказу. Вне пределов выборки эти значения составили соответственно 15, 16 и 16. Хотя модель, основанная на ценовом импульсе работала хуже на целом портфеле, она показала отличные результаты на большем количестве отдельных рынков, чем модель, основанная на пересечении. Испытания модели, основанной на пересечении с подтверждением Эти модели идентичны описанным выше основным моделям на пересечении, за исключением того, что решение о входе принимается только в том случае, когда сезонное поведение рынка подтверждается соответствующим значением стохастического Быстрого %К. Если пересечение свидетельствует о благоприятном моменте для покупки, покупка осуществляется только при значении Быстрого %К менее 25%. Это означает, что ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК для генерации сигнала к покупке рынок должен находиться в состоянии снижения или быть вблизи сезонного минимума для покупки. Таким же образом продажа осуществляется, если значение Быстрого %К более 75%, что указывает на близость рынка к максимуму. Как и в других тестах, использованы стандартные выходы. В тесте 7 вход осуществлялся по открытию, в тесте 8 — по лимитному приказу, а в тесте 9 — по стоп-приказу. Оптимизация для этих тестов стояла в прогонке периода скользящего среднего avglen от 5 до 20 с шагом 5 (Р1) и смещения disp от 0 до 20 с шагом 1 (Р2). Для рыночного входа по открытию оптимальные значения составляли 15 для периода скользящего среднего и 7 для смещения. Для входа по лимитному приказу оптимальные значения составляли 15 для периода скользящего среднего и 6 для смещения. Для входа по стоп-приказу оптимальные значения составляли 20 для периода скользящего среднего и 9 для смещения. При рассмотрении результатов каждой сделки использование подтверждения Быстрым %К ухудшило эффективность работы системы как в пределах, так и вне пределов выборки при использовании входов по открытию и по лимитному приказу;

в обоих случаях потери были значительными. При переходе на стоп-приказы в обеих выборках отмечена небольшая прибыль. В пределах выборки средняя сделка принесла доход $846, вне пределов выборки $1677. В пределах выборки 41% сделок был выгодным, годовая доходность составила 5,8%. Статистическая значимость этого результата низка, но по крайней мере результат нельзя назвать явно случайным. И длинные, и короткие позиции были прибыльны. Вне пределов выборки 44% сделок были прибыльными, годовая доходность составила 19,6%. Вероятность того, что результаты не являются случайными, составила 77%. По-прежнему выгодными были и длинные, и короткие сделки. По сравнению с другими системами количество сделок было относительно низким — всего 292 в пределах и 121 вне пределов выборки. В общем, модель снова оказалась прибыльной — сезонный принцип, видимо, все-таки может служить основанием для заключения сделок. График изменения капитала для рыночного входа по цене открытия показывает постепенное снижение до мая 1989 г., затем горизонтальный участок до августа 1993 г. Далее до конца выборки и большую часть времени вне выборки капитал падал. График изменения капитала для входа по лимитному приказу выглядит подобным образом, но падение капитала шло более плавно. График для входа по стоп-приказу выглядит принципиально иначе: капитал быстро падал до мая 1987 г., затем рос с ускорением до июня 1995 г. (начало периода вне выборки) и с тех пор практически не изменялся. Максимальные прибыли были достигнуты между июнем 1990 г. и маем 1991 г., маем и сентябрем 1993 г. и между январем и июнем 1995 г. Последний из периодов прибыли находится вне пределов выборки. По сравнению с двумя предыдущими моделями постоянная прибыль для всех видов приказов отмечена на меньшем количестве рынков. Прибыль при всех трех видах входов как в пределах, так и вне пределов выбор ГЛАВА СЕЗОННОСТЬ ки отмечена только на рынке леса. На рынке неэтилированного бензина все входы были прибыльны в пределах выборки, а входы по открытию и стоп-приказу были высокоприбыльны вне пределов выборки. На рынках кофе и какао получена прибыль при всех видах входов в пределах выборки, но только при входе по стоп-приказу вне выборки. При использовании входа по стоп-приказу как в пределах, так и вне пределов выборки рынки NYFE, серебра, палладия, сырой нефти, леса и кофе были высокоприбыльными. Как и ранее, рынки пшеницы были убыточными. Таким образом, показатели этой модели достаточно постоянны для успешного применения с использованием входа по стоп-приказу на избранных рынках. Тесты модели, основанной на пересечении с подтверждением и инверсией Эта модель представляет собой аналог предыдущей, но с проведением дополнительных сделок в участках, где были возможны инверсии. Например, если пересечение средних давало сигнал на покупку, но Быстрый %К был выше уровня 75%, то подавался сигнал на продажу. В основе идеи лежало предположение о возможном обращении обычного сезонного цикла. Подобным же образом, если пересечение указывало на продажу, но Быстрый %К был менее 25%, то подавался сигнал на покупку. Эти сигналы выполнялись дополнительно к сигналам системы, основанной на пересечении с подтверждением. В тесте 10 использовался вход по цене открытия, в тесте И — вход по лимитному приказу, в тесте 12 — вход по стоп-приказу. Оптимизация для этих тестов состояла в прогонке периода скользящего среднего avglen от 5 до 20 с шагом 5 (Р1) и смещения disp от 0 до 20 с шагом 1 (Р2). Для входа по открытию оптимальные значения составляли 15 для периода скользящего среднего и 2 для смещения. Для входа по лимиту оптимальные значения составляли 20 для периода скользящего среднего и 4 для смещения. Для входа по стоп-приказу оптимальные значения составляли 20 для периода скользящего среднего и 9 для смещения. При рассмотрении входа по цене открытия график изменения капитала постоянно и плавно снижался от начала к концу всего набора данных. Для входа по лимитному приказу график изменения капитала также снижался, хотя общее падение капитала для этого вида приказа было почти в два раза меньше. График изменения капитала для входа по стопприказу снижался до мая 1987 г., затем до августа 1993 г. капитал практически не изменялся. С августа 1993 г. по июнь 1995 г. капитал резко вырос, а затем постепенно снижался до конца рассматриваемого периода. Добавление инверсии оказало разрушительное влияние на эффективность модели. Очевидно, наблюдаемые сезонные явления редко сопровождаются инверсиями.

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

Обзор результатов Результаты всех тестов объединены в одной таблице и представлены на двух графиках для обозрения. В табл. 8-3 приведены показатели эффективности, распределенные по выборке данных, виду входа и модели. Результаты каждой модели приводятся в двух строках: в первой —доходность в процентах годовых, во второй — средняя прибыль или убыток в сделке в долларах. Два правых столбца содержат усредненные значения для всех видов входа в пределах и вне пределов выборки. Последние строки содержат усредненные значения для всех моделей по видам приказов. Из трех видов приказов, обеспечивающих вход в рынок, лучшим был, несомненно, вход по стоп-приказу. Вход по лимитному приказу и вход по цене открытия показали примерно одинаковые результаты, но их эффективность была гораздо ниже. Использование стоп-приказа обеспечило положительные результаты как в пределах, так и вне пределов выборки. При сравнении моделей по различным видам входов очевидно, что в пределах выборки эффективность была максимальной для модели пересечения с подтверждением и наихудшей для модели пересечения с подтверждением и инверсией. Вне пределов выборки наиболее эффективной была базовая модель, основанная на пересечении, наихудшей — опять-таки модель на пересечении с подтверждением и инверсией. Как можно видеть, в пределах и вне пределов выборки наилучшая эффективность достигается при сочетании входа по стоп-приказу с моделью, основанной на пересечении с подтверждением. В предшествующих главах испытывались различные виды моделей входа, причем обычно наилучшим был вход по лимитному приказу. В случае сезонных моделей повышение эффективности при использовании входа по стоп-приказу носит драматический характер, несмотря на большие расходы на сделку. Ранее казалось, что принципы противотрендовой ГЛАВА 8 СЕЗОННОСТЬ Таблица 8—3. Эффективность входов, основанных на сезонных явлениях по моделям, видам приказов и выборкам данных Модель В пределах выборки Открытие Лимитный Стопприказ приказ На основе пересечения На основе импульса Пересечение с подтверждением Пересечение с подтверждением и инверсией В среднем Вне пределов выборки Открытие Лимитный приказ -5.8 -300.0 -1.7 -56. Среднее Среднее Стопприказ 8.3 576. В пределах -5.0 -576.7 -4.5 -517.0 -3.7 -393.7 -6.9 -1198.0 -5.0 -671. Вне пределов 0.3 73. -9.7 -1127.0 -9.4 -1069.0 -9.6 -1195.0 -9.6 -1669.0 -9.6 -1265. -4.1 -424.0 -7.4 -757.0 -7.2 -832.0 -8.9 -1696.0 -6.9 -927. -1.3 -179.0 3.3 275.0 5.8 846.0 -2.2 -229.0 1.4 178. -13.6 -952.0 -13.8 -1512.0 -20.4 -2545.0 -13.4 -1327. -13.7 -785.0 -21.1 -3408.0 -22.6 -2642.0 -14.8 -1722. -16.4 -1750. 19.6 1677.0 0.9 95.0 3.1 149. -14.6 -1162. -5.1 -1081. -14.1 -1697. -8.4 -966. торговли могут действовать лучше в сочетании с какими-либо следующими за трендом или подтверждающими элементами, например с входом по стоп-приказу. В случае с сезонными моделями это подтверждение, получаемое в результате срабатывания стоп-приказов, является даже более важным, чем получаемое от показателей вроде Быстрого %К. Другими словами, если на основании сезонной модели следует ожидать повышения цен, подтверждение этого должно быть получено до заключения сделки. В общем, создается впечатление, что сезонные явления действительно оказывают воздействие на рынок, что доказано неуступающей или превосходящей другие модели эффективностью сезонной системы с входом по стоп-приказу. Эта модель была одной из немногих прибыльных. Влияние сезонных явлений на рынки, очевидно, является достаточно сильным, что оправдывает проведение дальнейших исследований подобных моделей. Было бы интересно исследовать сезонные модели, ограничившись рынками, где была показана их максимальная эффективность, или же рынками, где по фундаментальным причинам следует ожидать ярко выраженных сезонных эффектов. Исходя из имеющихся данных, можно заключить с достаточным основанием, что некоторые рынки в высшей степени подвержены сезонным явлениям. В свое время, ограничив использование моделей, основанных на пробое, только рынками валют, мы получили замечательные результаты — возможно, нечто подобное произойдет при ограничении сезонных моделей соответствующими рынками. При рассмотрении всех тестов и подсчете количества достоверных значительных прибылей создается впечатление о тех рынках, которые при ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК годны для ведения торговли с помощью различных сезонных моделей. Среди всех тестов в пределах и вне пределов выборки наилучшие результаты наблюдалась на рынке кофе. Следовательно, на рынке кофе можно эффективно применять сезонные модели, что неудивительно — дефицит и цены на рынке кофе в огромной степени подвержены влиянию погодных условий. На рынке кофе 11 из 12 тестов в пределах выборки и 8 из 12 тестов вне пределов выборки были прибыльными. На рынке неэтилированного бензина прибыльными были 8 тестов в пределах выборки и 11 вне пределов выборки. На рынке сырой нефти прибыльными были 8 тестов в пределах выборки, но только 4 вне пределов выборки. Много хороших результатов было также отмечено на рынке живых свиней. На рис. 8-1 изображен рост капитала для различных приказов, обеспечивающих вход в рынок. Результаты были усреднены по видам моделей. Как видно, лучше всего работал вход по стоп-приказу, средние результаты показал вход по лимитному приказу, а хуже всего работал рыночный вход по цене открытия.

Рисунок 8-1. Рост капитала в зависимости от вида входов.

ГЛАВА СЕЗОННОСТЬ На рис. 8-2 показан график изменения капитала для различных моделей. Капитал системы был усреднен по видам входов. Модель с пересечением и подтверждением была наиболее эффективной, особенно на данных вне пределов выборки. Начало для базовой модели, основанной на пересечении, было еще лучшим, но эффективность постоянно снижалась с 1990 г. Однако, возможно, тренд капитала этой модели развернулся наверх после 1995 г., тогда как все прочие модели в это время теряли капитал (в усреднении по видам приказов).

Рисунок 8-2. Рост капитала в зависимости от вида модели ЗАКЛЮЧЕНИЕ Исследования сезонных явлений показали, что на рынках существуют значимые сезонные процессы. На основе данных за соответствующие календарные даты прошлых лет можно делать заключения о поведении рынка в ближайшем будущем. Информация за эту же дату или близкие даты прошлых лет полезна для принятия решений, для прогнозирования ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК будущих событий. Хотя сезонные явления недостаточны для оказания влияния на целый портфель ценных бумаг и сырьевых фьючерсов, тем не менее на их основе удается окупить транзакционные расходы и получить некоторую прибыль. В то же время на отдельных рынках даже простейшие модели могут быть весьма прибыльными, иными словами, сезонные явления производят впечатление реальных и пригодных источников информации. В определенное время года на рынке наблюдаются приливы и отливы, которые могут эффективно использоваться моделями, подобными испытанным в данной главе. Как было показано, сезонные явления заслуживают серьезного внимания. Если приведенные простые модели будут улучшены специфическими эффективными выходами из рынка, можно ожидать впечатляющих результатов. ЧТО МЫ УЗНАЛИ? Повторяющиеся сезонные модели, видимо, имеют реальную прогностическую ценность и однозначно заслуживают дальнейшего исследования. Полезность сезонных моделей зависит от рынка, причем некоторые рынки особенно подходят для сезонной торговли. Торговля на группе особо чувствительных рынков может быть чрезвычайно прибыльна. Для получения наилучших результатов исходные сезонные данные желательно сочетать с той или иной формой подтверждения или обнаружения трендов. Использование дополнительной информации может повысить эффективность простой сезонной модели.

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

БЕЗУМИЕ ИЛИ ЗАКОНОМЕРНОСТЬ? Обсуждение вопросов влияния планет наводит на мысли о том, что многие называют астрологической чепухой. Но было бы неоправданно априорно отрицать возможное влияние солнечных, лунных и других эффектов только потому, что астрология бессмысленна и в словаре определяется как «лженаука, претендующая на предсказание будущего путем изучения предположительного влияния Солнца, Луны и звезд на человеческое поведение». Подобные поверья часто основываются на отсутствии информации. Но что же реально известно о так называемой астрологии, особенно в форме влияния солнечных и планетных эффектов на земные события? Ученые продемонстрировали наличие корреляции между положением планет и чертами личности. В одном исследовании (Mayo, White и Eysenck, 1978), опубликованном в Journal of Social Psychology, пытались доказать, что интровертные и экстравертные черты характера определяются знаком зодиака, т.е. месяцем рождения. Тестирование использовало данные 2324 лиц и показало, что лица, рожденные под знаками Овна, Близнецов, Льва, Весов, Стрельца и Водолея имели большую вероятность экстравертного поведения, а рожденные под знаком Тельца, Рака, Девы, Скорпиона, Козерога и Рыб — интровертного. Результаты стабильно под ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК тверждали гипотезу, так же как и в других подобных исследованиях (Gauquelin, Gauhquelin и Eysenck, 1979). Также известно, что гравитационное поле Луны оказывает влияние на водные, литосферные и атмосферные приливы на Земле. Известно, что Луна управляет временем размножения коралловых полипов, закрытием раковин устриц, преимущественным совершением некоторых преступлений и возбуждением лиц, страдающих «лунатизмом». Более того, известно, что во время полнолуния у женщин чаще происходит овуляция, а также чаще начинаются роды. При наличии таких данных уже нетрудно представить влияние лунных циклов на поведение рынка. Еще Ларри Вильяме (Larry Williams, 1979) обнаружил, что цены на серебро, пшеницу, кукурузу и соевое масло повышаются в полнолуние и падают в новолуние! Как известно каждому радиолюбителю, так называемые «солнечные пятна» оказывают сильное воздействие на дальнюю радиосвязь. На поверхности Солнца наблюдаются темные участки, по одной из теорий вызываемые неравномерным гравитационным воздействием планет на приливные ритмы Солнца. Другая теория объясняет их движением магнитных полюсов Солнца, но в любом случае период высокой активности солнечных пятен влияет на распространение радиоволн — коротковолновые радиосигналы, которые обычно распространяются только в пределах прямой видимости, отражаются от ионосферы и могут распространяться на тысячи миль. Многие могли заметить это явление по телевидению: поверх сигнала местной телестанции накладывается сигнал далекого передатчика. С другой стороны, в периоды низкой солнечной активности дальнее распространение коротких волн становится маловероятным, и для дальней радиосвязи требуются волны гораздо большей длины. Активность солнечных пятен и солнечные вспышки также коррелируют с магнитными бурями на Земле, способными нарушать работу чувствительной электроники и даже выводить из строя энергосети. Магнитная буря, вызванная солнечными выбросами в марте 1989 г., привела к остановке работы гидроэлектростанции, питавшей часть Монреаля и Квебека, на девять часов (Space Science Institute, 1996). Некоторые ученые считают, что изменения солнечной активности могут быть причиной крупных изменений земного климата, например Малого Ледникового Периода в 1600-х годах, начавшегося после 100 лет сниженной солнечной активности (Center for Solar and Space Research, 1997). Что же касается торговли, то Эдвард Р. Дьюи (Edward R. Dewey), основавший Фонд Изучения Циклов в 1940 г., полагал, что существует связь между солнечными пятнами и промышленным производством, возможно, вызванная влиянием на климат. В связи с этим он пытался исследовать корреляцию солнечной активности и цен на сельскохозяйственные продукты. Наш собственный интерес к солнечным пятнам достиг пика тогда, когда мы обнаружили, что в 1987 г. только в течение трех дней количество ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ пятен (показатель солнечной активности) превышало 100— и это были дни «черного понедельника» — 15 и 16 октября! Путем простых вычислений можно убедиться в том, что вероятность случайного совпадения в данном случае не превышает 1%. Ниже мы рассмотрим влияние на торговлю лунных циклов в разделе «Лунные циклы» и солнечных пятен в разделе «Солнечные пятна и активность рынка».

ЛУННЫЕ ЦИКЛЫ И ТОРГОВЛЯ В предыдущем исследовании (Katz, McCormick, июнь 1997) мы обнаружили, что при помощи лунных циклов можно прибыльно вести торговлю на рынке NYFE. С 1990 г. по 1997 г. простая система на основе лунных циклов принесла $75 550 прибыли. Из 170 сделок 60% были прибыльными. Средняя прибыль в сделке составила $444,41, а общая прибыль — 365% (не в годовом исчислении). Длинные позиции были прибыльнее, чем короткие (520% по сравнению с —37%). Сигналы зачастую предсказывали точки разворота с точностью до дня. Также прибыльно работала система и на рынке серебра. Сигналы точно соответствовали максимальным и минимальным значениям. И длинные, и короткие позиции были прибыльными. Всего за этот период времени на рынке серебра было получено 190% прибыли. Даже на рынке пшеницы длинные и короткие сделки были прибыльными и принесли 242% прибыли. Несомненно, для системы, использующей только один параметр (количество дней с новолуния или полнолуния) и совершающей много сделок, такие результаты впечатляют и, скорее всего, достаточно устойчивы. Наши результаты подстегнули дальнейшие исследования явлений, связанных с лунным циклом. Здесь будут рассматриваться фазы луны, т.е. полнолуние, первая четверть, последняя четверть, новолуние и все промежуточные фазы. Можно ли на основе фазы луны предсказать максимум или минимум рынка? Образуются ли максимумы или минимумы в полнолуние или за пять дней до него, или же в новолуние? Поскольку лунные циклы поразному влияют на различные рынки, мы используем адаптивный подход так, как это было сделано при исследовании сезонных явлений.

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

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

int LunarEventDates (int n) { // подсчитывает дату лунной фазы, начиная // с января 1900. // n - ввод: номер фазы луны // 0,4,8... новолуния // 1,5,9... луна в первом квартале // 2,6,10... полнолуние // 3,7,11... луна во втором квартале //возвращает - вывод: дата события по юлианскому календарю static long ndate;

static float timzon = -5.0 / 24.0;

static float fгас;

flmoon {n >> 2, n & 3, &ndate, &frac);

frac = 24.0 * {frac + timzon);

// восточное стандартное время ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК if(fгас < 0.0) { ndate—;

frac += 24.0;

) if(frac > 12.0) ( ndate++;

frac -= 12.0;

) else frac += 12.0;

return ndate;

// корректировка времени // юлианская дата события } int LunarEquivDate (int date, int n) ( // // // // // // рассчитываем дату предыдущего n-го (n < 0) или будущего (n > 0) случая фазы луны, равной сегодняшней фазе date - ввод: текущая дата в формате ГГГММДД n - ввод: лунные циклы назад{-) или вперед (+) return - вывод: дату предыдущего или будущего цикла в формате ГГГММДД static long nstar, ndatel, ndate2, curdate, ntarg, nans;

static int mm, dd, yyyy;

curdate = julday((date/100)%100, date%10O, 1900+date/lOOOO);

while(curdate >= ndate2) { ndatel = LunarEventDates(++nstar);

ndate2 = LunarEventDates(nstar + 1) ;

} while(curdate < ndatel) { ndatel - LunarEventDates{—nstar);

ndate2 = LunarEventDates(nstar + 1);

} if(curdate < ndatel || curdate >= ndate2 || abs(ndate2 - ndatel - 7) > 2) nrerror("LunarEquivDate: calculation error");

nans = LunarEventDates(nstar +4 * n);

nans += (curdate - ndatel);

caldatfnans, &mm, &dd, &yyyy) ;

return 10000*(yyyy-1900) + 100*mm + dd;

} void LunarAvg (float *a, float *v, float *dt, int mode, int m, int n) { // Подсчитываем лунное (в зависимости от даты и фазы) скользящее среднее // для каждого дня, основанное на предыдущих днях и (в некоторых случаях) // на последующих днях с эквивалентной лунной фазой. // Работаем на всех имеющихся данных. //а - вывод: значения [1..n] лунного среднего //v - ввод: исходный ценовой ряд данных [1..n] // dt - ввод: соответствующие [1..n] данные // mode - ввод: метод анализа: // 1 = «складной нож» IS, все прошлые циклы 008 // 2 - фиксированный период в лунных циклах //m - ввод: дата (для режима - 1) или период анализа (для режима = 2) // n - ввод: количество дней во всех рядах static int i, j, cnt;

static unsigned long k;

static float sum, sdate, tiny=l.OE-20;

if(mode == 1) { // режим «складного ножа» ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ for(i = 1;

i <= n;

i++} { // для каждого текущего дня sum = 0.0;

cnt = 0;

for(j = 2;

j < 1000;

j++) { // двигаемся назад sdate - LunarEquivDate {dt[i], -j ) ;

/ / к исходной дате if(sdate < dt[3]) break;

// переход к началу hunt(dt, n, sdate, &k) ;

// находим индекс if (sdate > dt[k]) k++;

cnt++;

sum += v[k] ;

// накапливаем среднюю } for(j = 2;

j < 1000;

j ++) { // двигаемся вперед sdate = LunarEquivDate {dt[i], j);

/ / к исходной дате if(sdate > m) break;

// избегаем данных oos hunt(dt, n, sdate, &k);

// находим индекс if(sdate > dt[k]) k++;

cnt++;

sum +- v[k];

// накапливаем среднюю } a[i] = sum / (cnt + tiny);

// заканчиваем среднюю ) // следующий день } else if(mode == 2) { // режим фиксированного периода анализа for(i = 1;

i <= n;

i ++) { // для каждого текущего дня sum =0.0;

cnt = 0;

for(j = 2 ;

j < 1 0 0 0 ;

j + + ) { // двигаемся назад if(cnt >= m) break;

// выполняем достаточные условия sdate = LunarEquivDate(dt[i], -j);

// исходная дата if (sdate < dt[3]) break;

// идем к началу hunt(dt, n, sdate, &k);

// находим индекс if{sdate > dt[k]} k++;

cnt++;

sum +- v[k];

// накапливаем среднюю } for(j = 2;

-j < 1000;

j++) { // двигаемся вперед if (cnt >= m) break;

// выполняем достаточные условия sdate = LunarEquivDate(dt[i], j ) // исходная дата hunt(dt, n, sdate, &k) ;

// находим индекс if (sdate > dt[k]} k++;

cnt++;

sum += v[k];

// накапливаем среднюю } a[i] = sum / (cnt + tiny) // заканчиваем среднюю } // следующий день } } 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 = xl3modOl.c // parms — набор [1..MAXPRM] параметров // dt — набор [l..nb] дат в формате ГГММДД // орn — набор [1..nb] цен открытия // hi - набор [l..nb] максимальных цен // 1о — набор [1..nb] минимальных цен // cls — набор [l..nb] цен закрытия // vol - набор [l..nb] значений объема // oi — набор [1..nb] значений открытого интереса // dlrv — набор [1..nb] средних долларовых волатильностей / / nb — количество дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls — набор [1..nb] уровней капитала по ценам закрытия // объявляем локальные переменные static int rc, cb, ncontracts, maxhold, ordertype, signal;

static int avglen, disp, k, modeltype, matype, mktindx;

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

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

ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК static float mal[MAXBAR+1], ma2[MAXBAR+1], stoch[MAXBAR+1];

static float *exitatrtab[MAXMKT+1], *savgtab[MAXMKT+1] ;

//копируем параметры в локальные переменные avglen = parms[1];

// период скользящей средней disp = parms[2];

// множитель смещения thresh = parms[3];

// порог для импульсных моделей matype = parms[7];

// тип средней: // 1=простое скользящее среднее // 2=экспоненциальное // 3=треугольное с переднем взвешиванием // 4=треугольное // 5=простое центрованное // 6=экспоненциальное центрованное // 7=треугольное центрованное modeltype = parms[8];

// тип модели: // 1=импульс // 2=пересечение // 3-пересечение с подтверждением // 4=пересечение с подтверждением и инверсией ordertype = parms[9];

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

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

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

// защитная остановка в единицах волатильности // Выполняем вычисления по всему объему данных, которые не подвержены // воздействию каких-либо параметров. Выполняется один раз для каждого // рынка, результаты сохраняются в таблицах для повторного использования. // Таким образом, значительно снижается время выполнения программы. mktindx = ts.modelf) ;

// индекс рынка if (exitatrtab[mktindx] == NOLL) { // размещен? exitatrtab[mktindx] = vector(1, nb);

// таблица exitatr savgtab[mktindx] = vector{1, nb);

// таблица savg AvgTrueRangeS(exitatrtab[mktindx], hi, lo, cls, 50, nb);

//50-дневный средний истинный // диапазон float *pchg = vector(1, nb);

// вспомогательный вектор pchg[l] = 0.0;

for(cb =2;

cb < = nb;

cb++) { tmp = cls [cb] - els [cb-1];

// изменение цены tmp /= exitatrtab[mktindx] [cb];

// нормирование pchg [cb] = clip(tmp, -2.0, 2.0);

// обрезание } LunarAvg(savgtab[mktindx], pchg, dt, 2, 60, nb);

// лунная сезонность free_vector(pchg, 1, nb);

printf {"Mkt: %d\n", mktindx};

// показывать прогресс } // выполняем вычисления для всех данных memcpy(exitatr, exitatrtab[mktindx], sizeof (float)*nb);

memcpy(savg, savgtab[mktindx], sizeof(float)*nb);

switch(modeltype) { case 1: // данные для импульсной модели MovAvg{savg,savg,matype,avglen,nb) ;

// сглаживающее среднее for(cb = 1;

cb <= nb;

cb++) ma2 [cb] = fabs(savg[cb]} ;

MovAvg (mal, ma2, 1, 100, nb) ;

// среднее отклонение break;

case 2: case 3: case 4: // данные для моделей пересечения for(cb = 2;

cb <= nb;

cb++) savg[cb] += savg [cb-1];

// интеграция MovAvg(mal,savg,matype,avglen,nb);

// сглаж. средн. MovAvg(ma2,mal,matype,avglen,nb};

// пересеч. средн. if (modeltype == 3 | | modeltype == 4) // стохастический осц.

ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ StochOsc(stoch,hi,lo,cls,1,9,nb);

// 9-дневный Быстрый %К break;

default: nrerror("TRAPSMOD: invalid modeltype");

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

cb <= nb;

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

continue;

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

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

eqcls[cb] = ts.currentequity{EQ_CLOSETOTAL);

/ / не проводим сделок в последние 3 0 дней выборки. // для того, чтобы оставить место в массивах для будущих сезонностей if(cb > nb-30) continue;

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

if(ncontracts < 1) ncontracts = 1;

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

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

switch(modeltype) { case 1: // основная модель входа на основе импульса с порогом k = cb + disp;

tmp = thresh * mal[k] ;

if(savg[k] > tmp && savg[k-l] <= tmp) signal = 1;

else if(savg[k] < -tmp && savg[k-l] >= -tmp) signal = -1;

break;

case 2 : // основная модель пересечения k = cb + disp;

if (CrossesAbove (mal, ma2, k) } signal = 1 ;

else if (CrossesBelow{mal, ma2, k)} signal = -1;

break;

case 3: // пересечение с подтверждением k = cb + disp;

if(CrossesAbove{mal, ma2, k)) { if(stoch[cb] < 25.0) signal = 1;

} else if {CrossesBelow(mal, ma2, k)) { if(stoch[cb] > 75.0} signal = -1;

} break;

case 4 : // пересечение с подтверждением и инверсией k = cb + disp;

if{CrossesAbove(mal, ma2, k)) { if (stoch[cb] < 25.0) signal = 1;

else if{stoch[cb] > 75.0} signal = -1;

} else if (CrossesBelow (rnal, ma2, k) } { if (stoch[cb] > 75.0) signal = -1;

else if (stoch[cb] < 25.0} signal = 1;

} break;

ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК limprice = 0.5 * (hi [cb] + lo [cb] ) ;

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

// входим в сделку, используя определенный тип приказа if (ts.position{) <= 0 && signal == 1) { switch(ordertype) { // select desired order type 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);

} // обрабатываем следующий день } Собственно коду предшествует ряд функций, необходимых для расчета лунных циклов на любом рынке с адаптивным подходом. Функция Model следует стандартным принципам: после объявления параметры копируются в местные переменные для простоты обращения. Комментарии указывают, что контролируют параметры. В следующем блоке рассчитывается средний истинный интервал за 50 дней (exitatrtab), используемый в выходах и при нормализации, а также лунные сезонные последовательности (savgtab) — прогнозируемые изменения цены для каждого дня. Эти ряды рассчитываются один раз для каждого рынка и заносятся в таблицы;

это допустимо, поскольку при повторных вызовах Model в последующих тестах никакие важные параметры не изменяются. Второй блок рассчитывает специфические для моделей временные последовательности, необходимые для получения сигналов входа. Если modeltype = 1, используется простая импульсная модель;

если modeltype = 2, то модель на основе пересечения;

если modeltype = 3, то модель на основе пересечения с подтверждением, и если modeltype = 4, то модель на основе пересечения с подтверждением и инверсией. Среди возможных серий есть такие варианты, как сглаженная последовательность лунных импульсов, интегрированные импульсы (ценоподобный ряд), скользящие средние для моделей на пересечении и Медленный %К для подтверждений и инверсий. В зависимости от modeltype могут приобретать значение некоторые другие параметры. Один из них, avglen, управляет периодом всех скользящих средних: в модели на основе импульса он ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ управляет длиной центрированного треугольного скользящего среднего, а в моделях на пересечении — длиной необходимых там средних. Другой параметр, disp, выставляет смещение, т.е. степень сдвига вперед для компенсации запаздывания скользящих средних. Параметр thresh означает величину порога, используемого в импульсной модели для длинных и коротких позиций (короткие используют отрицательное значение thresh). Переменная matype управляет видом скользящего среднего: 1 — простое, 2 — экспоненциальное, 6 — центрированное экспоненциальное, 7 — центрированное треугольное;

существуют и другие виды средних, не использованные в анализе. После расчета всех рядов данных запускается цикл, который перебирает рыночные цены день за днем для моделирования торговли. Этот цикл содержит код для обновления симулятора, определения количества контрактов, избежания дней с ограниченной торговлей и т.п. В следующем блоке, расположенном внутри блока перебора текущих дней, происходит генерация сигналов входа. Правила определяются параметром modeltype. Последний блок управляет отдачей соответствующих приказов согласно параметру ordertype: 1 — вход по цене открытия, 2 — по лимитному приказу, 3 — по стоп-приказу. Результаты тестирования лунных моделей Проводилось тестирование четырех моделей: на основе пересечения, импульса, пересечения с подтверждением и пересечения с подтвержде Таблица 9—1. Эффективность лунных моделей, распределенная по модели, виду приказа и выборке Модель В пределах выборки Открытие Лимитный Стопприказ приказ Лунное пересечение Лунный импульс Пересечение с подтвержд. Пересечение с подтвержд. и инверсией Среднее -9,3 -1287 -6,0 -406 -9,9 -1560 -6,6 -655 -5,6 -686 -8,1 -1288 1,8 234 -7,8 -998 -4,9 - Вне пределов выборки Открытие Лимитный приказ -14,3 -894 -14,8 -1316 -20,5 -3465 -20,6 -2937 -17,6 -2153 -10,2 -643 -19,7 -1942 -21,3 -3896 -20,9 -3203 -18,0 - Среднее Среднее Стопприказ -10,4 - -8,3 - В пределах -7.0 -793 -9,4 -1753 -4,3 -557 -9,1 -1207 -7,4 - Вне пределов -11, - -10,1 - -8,1 -1251 -9,4 -1546 -9,3 - -14,2 -1210 -20,1 -3270 -20.5 -3405 -16,6 - -18,6 -2449 -20,1 -2995 -14,4 - -10,0 - -8,1 - ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 9—2. Эффективность в пределах выборки по тестам и рынкам нием и инверсией. Каждая модель тестировалась с входами по цене открытия, по лимитному приказу и по стоп-приказу. В табл. 9-1 приведены все результаты, распределенные по виду выборки, приказу и модели. Для каждой модели даны ряд значений, содержащий годовую доходность портфеля, и ряд значений средней прибыли или убытка в сделке. В двух правых столбцах — средние по всем видам приказов в пределах и вне преде ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ Таблица 9—3. Эффективность вне пределов выборки по тестам и рынкам лов выборки, в двух нижних строках — средние по всем моделям для каждого вида приказов. В табл. 9-2 и 9-3 собрана информация по каждому из 12 тестов отдельных рынков, прибыльных и убыточных в пределах (табл. 9-2) и вне пределов (табл. 9-3) выборки. В первом столбце приведено обозначение рассматриваемого рынка, в последнем — количество рынков, где данная мо ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК дель была прибыльна. В табл. 9-2 и 9-3 степень прибыльности и убыточности рынков для каждой модели указана следующим образом: один минус ( — ) означает убыток в $2000 — 4000, два минуса ( ) — убыток более $4000;

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

пустая ячейка означает прибыль до $1000 или убыток до $1999 со сделки.

Тестирование базовой модели, основанной на пересечении Скользящее среднее mat рассчитывалось на основе интегрированной ценоподобной лунной серии. На его основе рассчитывалось второе скользящее среднее та2. Для тестирования использовались следующие правила: сигнал на покупку генерируется, когда mat поднимается выше та2. Сигнал на продажу генерируется, когда та! опускается ниже та2. Эта модель практически совпадает с моделью пересечения скользящих средних, описанной в предыдущих главах. Их единственное отличие состоит в том, что в данном случае используются «лунные» ряды данных, а не непосредственно цены. Входы производились по цене открытия (тест 1), по лимитному приказу (тест 2) и по стоп-приказу (тест 3). Оптимизация состояла в прогонке периода скользящих средних avglen от 5 до 15 с шагом 5 и смещения disp от 0 до 15 с шагом 1. Для входа по цене открытия наилучшая эффективность по показателю риска/прибыли в пределах выборки была достигнута при периоде скользящих средних 15 и смещении 8;

для входа по лимитному приказу — при периоде 15 и смещении 6;

для входа по стоп-приказу— при периоде 15 и смещении 12. Ни один из тестов ни в одной из выборок не принес прибылей. Наилучшая эффективность (т.е. наименьшие убытки) были обнаружены при входе по лимитному приказу, средние результаты были показаны при входе по стоп-приказу, а максимальные убытки — при входе по цене открытия. При использовании входа по лимитному приказу 43% из 1759 сделок были прибыльными. Вне выборки вход по лимитному приказу дал минимальный средний убыток со сделки, а вход по стоп-приказу — максимальный убыток.-В общем, система на целом портфеле работала плохо, относительная эффективность длинных и коротких сделок носила неустойчивый характер. В пределах выборки длинные позиции часто были более убыточны, чем короткие, в отличие от исследовавшихся ранее моделей. Капитал постоянно снижался на протяжении всего ряда данных при использовании входа по цене открытия. При входе по лимитному приказу капитал поднимался до сентября 1989 г. Затем наблюдались снижение до июля 1992 г., слабый подъем до февраля 1994 г. и новое падение до июля 1998 г., после чего наметился подъем. При использовании же входа по стопприказу отмечалось медленное снижение капитала на протяжении всего периода тестирования.

ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ В пределах выборки количество рынков, прибыльных при использовании входа по открытию, лимитному и стоп-приказу, составило 15, 8 и 7 соответственно. Вне пределов выборки больше всего рынков (17) принесли прибыль при использовании входа по лимитному приказу, 16 — при входе по цене открытия и 14 — при использовании стоп-приказа. Вне пределов выборки было больше прибыльных комбинаций рынков и видов входов, т.е. можно предположить, что в последнее время большее количество рынков испытывает воздействие лунных циклов. В пределах выборки только рынки немецкой марки и сырой нефти были прибыльными при использовании всех трех видов приказов. Вне пределов выборки рынок немецкой марки был высокоприбыльным при использовании всех трех видов приказов;

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

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

Тестирование модели на основе пересечения с подтверждением Эта модель идентична базовой модели на основе пересечения, но в ней входы производятся после подтверждения сигнала стохастическим осциллятором — Быстрым %К. Если лунный цикл давал сигнал к покупке, то приказ отдавался только в том случае, когда Быстрый %К был менее 25%. Это означает, что перед покупкой рынок должен был находиться в состоянии минимума или близком к нему. Подобным же образом сигнал на продажу принимался к исполнению только в тех случаях, когда Быстрый %К был выше 75%, т.е. рынок был близок к максимуму. Входы осуществлялись по цене открытия, по лимитному приказу и по стоп-приказу (тесты с 7 по 9 соответственно). Оптимизация состояла в прогонке периода скользящих средних avglen от 3 до 15с шагом 3, а смещения disp — от 0 до 15с шагом 1. Наилучшие результаты были достигнуты при значениях периода и смещения 15 и 12 соответственно (вход по цене открытия и по лимитному приказу), а также при значении периода 12 и смещения 5 для входа по стоп-приказу. В пределах выборки результаты были несколько лучше, чем для базовой модели, основанной на пересечении: при использовании входа по стопприказу модель с подтверждением принесла среднюю прибыль в сделке $234. Вне пределов выборки, впрочем, средний убыток в сделке был больше, чем для двух предыдущих моделей при любом виде входов. Вход по стоп-приказу был наилучшим и давал наименьшие убытки. Эта система также не была выгодна при работе с целым портфелем: графики изменения капитала для всех трех видов входов показывали только убытки. В пределах выборки на рынках иены, мазута, соевых бобов и соевой муки была получена прибыль для всех трех видов приказов;

вне преде ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ лов выборки на этих рынках были только убытки или в лучшем случае неприбыльная торговля. При торговле на рынке канзасской пшеницы при входе по цене открытия и по лимитному приказу были получены устойчивые прибыли, а при использования стоп-приказа — убытки. При использовании стоп-приказа прибыльными были рынки британского фунта, швейцарского франка, канадского доллара, евродоллара и свиной грудинки. Поскольку во всем портфеле количество сделок на большинстве рынков было очень маленьким, полученные результаты вряд ли заслуживают доверия. Тестирование модели на основе пересечения с подтверждением и инверсией Эта модель подобна предыдущей модели с подтверждением. Их разница состоит в том, что в моменты возможного разворота рынка проводятся дополнительные сделки. Если пересечение скользящих средних генерировало сигнал на покупку, но показатель Быстрого %К был более 75% (т.е. рынок был близок к максимуму), отдавался приказ на продажу, а не на покупку. Подобным же образом, если пересечение давало сигнал к продаже, но рынок был близок к минимуму, генерировался приказ к покупке. Эти сигналы подавались в дополнение к стандартным сигналам, подаваемым основанной на пересечении базовой моделью. Входы осуществлялись по цене открытия (тест 10), по лимитному приказу (тест И) и по стоп-приказу (тест 12). Оптимизация состояла в прогонке периода скользящих средних avglen от 3 до 15 с шагом 3, смещения disp от 0 до 15 с шагом 1. Наилучшие результаты были достигнуты при значениях периода и смещения 15 и 12 соответственно для входа по цене открытия, для входа по лимитному приказу — при периоде 15 и смещении 8, а для входа по стоп-приказу — при периоде 12 и смещении 15. Модель несла тяжелые убытки при всех сочетаниях выборок данных и входов. Как и в случае с сезонными моделями, инверсии не улучшили эффективность, и график изменения капитала являет собой удручающее зрелище. В пределах выборки рынок NYFE был прибыльным при всех входах, но рынок S&P 500 давал убытки для двух видов входов и нулевую прибыль для третьего. Рынок швейцарского франка также был прибыльным в пределах выборки для всех трех входов;

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

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

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

СОЛНЕЧНАЯ АКТИВНОСТЬ И ТОРГОВЛЯ Предыдущее исследование (Katz, McCormick, сентябрь 1997) было посвящено влиянию солнечных пятен на рынки S&P 500 и пшеницы. В пределах выборки простая модель на основе солнечной активности заработала $64 000 на рынке S&P 500 с 1984 г. по 1992 г. Было совершено 67 сделок, 31% из них были прибыльными. Средняя прибыльная сделка принесла $5304,76 — гораздо больше, чем было потеряно в средней убыточной сделке ( — $1030,43). Средняя прибыль в сделке составила $955,22. Это соответствует общей доходности 561% (не в годовом исчислении). Прибыль принесли и длинные, и короткие позиции, но прибыль, полученная в коротких позициях, была значительно больше. Это указывает на связь необычной солнечной активности с обвалами на рынке. Высокая эффективность коротких позиций особенно важна, поскольку рынок в рассматриваемый период находился в состоянии повышательного тренда. Эффективность системы не снизилась и вне пределов выборки. С 1993 г. по 1996 г. модель заработала 265%, проведя всего 23 сделки, причем прибыльными были 30% сделок. Средняя прибыль в сделке составила $891,30. Результаты на рынке пшеницы также были хороши в обеих выборках данных — в пределах выборки 57% из 84 сделок были прибыльны, средняя прибыль в сделке составила $203,27, а общая прибыль — 859%. Вне пределов выборки было проведено 29 сделок, причем 55% из них принесли прибыль. Средняя прибыль в сделке составила $260,78, а общая прибыль — 406%. Наши первоначальные исследования говорят о том, что данная тема является весьма перспективной. В приведенных ниже тестах исследуется влияние солнечной активности на стандартный портфель. Для генерации входов использованы ежедневные данные о количестве солнечных пятен с 1985 г. по 1999 г., полученные в Бельгийской Королевской Обсерватории.

ВХОДЫ, ОСНОВАННЫЕ НА СОЛНЕЧНОЙ АКТИВНОСТИ Существует много способов получать сигналы входа на основе солнечной активности. Ниже описан метод пробоя, где в качестве исходных дан ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК ных использованы не цены, а количество солнечных пятен. Правила таковы: если текущее количество солнечных пятен выше, чем текущий максимальный порог, и количество пятен за несколько (1b2) прошлых дней было ниже соответствующих порогов, то подается сигнал на продажу или покупку в зависимости от предыдущей реакции рынка на пробой порога. Если текущее количество пятен ниже текущего нижнего порога, а за несколько (1b2) предыдущих дней оно было выше соответствующего порога, то опять-таки подается сигнал на продажу или покупку в зависимости от предыдущей реакции рынка на пробой предела. Сигналы исполняются не мгновенно, а только спустя некоторое количество дней (disp). Пороги определяются следующим образом: верхний порог для данного дня — это максимальное количество пятен за некоторое количество предшествующих дней (1b1), а низший порог — минимальное количество пятен за такое же количество дней. «Предыдущее поведение рынка» означает положение рынка вблизи максимума или минимума ценового диапазона, который наблюдался в течение некоторого времени после пробоя. Если данное направление солнечных пробоев исторически ассоциируется с минимумами рынка, то подается сигнал на покупку, в обратном случае — на продажу. Как и лунные циклы, или сезонные явления, входы на основе солнечной активности основываются на предположении, что поведение рынка находится под влиянием неких внешних факторов и что независимая внешняя переменная имеет предсказательную ценность. Система, построенная на таком принципе, предсказывает поведение рынка, а не реагирует на него. Как и в случае любого предсказания, его точность может быть различной. Сделки, заключенные на основе неверных предсказаний, могут быть разрушительными, даже если многие сделки, основанные на удачных предсказаниях, принесли прибыль. Данные системы прогностичны по своей природе, и это их свойство позволяет вести торговлю против тренда, что обеспечивает лучшее выполнение приказов, меньшее проскальзывание и лучший контроль над риском, если использовать оптимальные защитные остановки (здесь это не использовано ввиду необходимости придерживаться стандартных выходов). Код для системы солнечных тестов подобен коду лунных тестов и здесь не приводится. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ СОЛНЕЧНЫХ МОДЕЛЕЙ Проводилось исследование эффективности модели, основанной на солнечных циклах с использованием входов по цене открытия (тест 1), по лимитному приказу (тест 2) и по стоп-приказу (тест 3). Параметр 1b1 прогонялся от 25 до 40 с шагом 5, параметр 1b2 — от 10 до 15с шагом 5 и смещение (disp) — от 0 до 2 с шагом 1. При входе по цене открытия наилучшая эф ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ фективность была достигнута при 1b1 = 35, 1b2 = 15 и смещении 2. При входе по лимитному приказу наилучшая эффективность была достигнута при 1b1 = 40,1b2 = 15 и смещении 0. При входе по стоп-приказу наилучшая эффективность была достигнута при 1b1 = 35,1b2 = 15 и смещении 2. В табл. 9-4 изображена эффективность системы на различных рынках в пределах и вне пределов выборки. В столбцах и строках данные расположены таким же образом, как и в табл. 9-2 и 9-3. Солнечная модель работала примерно так же, как и лунная. В пределах выборки лучше всего работал вход по стоп-приказу;

наихудшим был вход по цене открытия (— $1631 со сделки), несколько лучше был вход по лимитному приказу ( — $1519), особенно в случае ограничения только длинными позициями. Лучшим был вход по стоп-приказу, приносивший убыток всего в $52 со сделки;

если бы не транзакционные расходы, этот вход в пределах выборки был бы прибыльным. Модель включала параметр смещения. Наилучшим значением смещения для входа по лимитному приказу был 0, что резонно для входа, требующего быстрого реагирования на «солнечный» сигнал, чтобы войти до того, как рынок развернется. При использовании входа по стоп-сигналу оптимальным было смещение 2: чтобы сработал стоп-сигнал, запускающий вход, необходимо некоторое движение рынка. Когда смещение отклонялось всего на один-два дня от оптимума, средние убытки в сделке возрастали с $52 до $2000. Это указывает на связь между временем рыночных событий и солнечной активности — в противном случае столь небольшие изменения смещения не приводили бы к таким значительным изменениям эффективности торговой системы. При использовании входа по стоп-приказу в пределах выборки был достигнут высокий процент выгодных сделок, и длинные позиции принесли прибыль. Вне пределов выборки вход по стоп-приказу опять-таки был наилучшим, но средняя сделка приносила значительный убыток — $1329. График изменения капитала был построен только для входа по стопприказу, поскольку другие входы работали слишком плохо для рассмотрения. Капитал очень быстро возрастал до июня 1988 г., затем практически не менялся до октября 1990 г., после чего резко падал до июня 1994 г., а затем колебался с тенденцией к понижению. Интересно, что подтвердились некоторые наши предыдущие данные (Katz, McCormick, сентябрь 1997). При использовании входа по стоп-приказу (наилучшего при торговле целым портфелем) рынок S&P 500 был очень прибыльным и в пределах, и вне пределов выборки. Средняя сделка приносила прибыль $4991 в пределах выборки, с годовой прибылью 20,4%;

t-критерий показывает, что вероятность подлинности этого эффекта и потенциальной устойчивости прибыли превышает 80%. Прибыльными были и короткие, и длинные позиции. В пределах выборки было проведено 37 сделок (40% прибыльных). Вне пределов выборки и длинные, и короткие позиции были прибыльны;

удивительно, что прибыльными были ЧАСТЬ II ИССЛЕДОВАНИЕ входов в РЫНОК Таблица 9—4. Эффективность по выборкам, тестам и рынкам ГЛАВА ЛУННЫЕ и СОЛНЕЧНЫЕ РИТМЫ короткие позиции, так как в течение большей части этого периода времени рынок находился в состоянии повышательного тренда. Вне пределов выборки годовая прибыль составляла 39,5% (вероятность подлинности данного результата равна 80%);

было проведено 11 сделок (45% прибыльных) со средней прибылью $5640. Подобные результаты нельзя не считать выдающимися. Подтвердилось наблюдение, что после солнечных вспышек могут происходить резкие снижения цен. При использовании входа по стопприказу прибыль в пределах и вне пределов выборки также была получена на рынках миннесотской пшеницы, соевых бобов и хлопка. На рынке миннесотской пшеницы в пределах выборки годовая прибыль составила 13,5%, опять-таки с вероятностью подлинности результатов, превышающей 80%. Вне пределов выборки данные показатели составили 30,5 и 85% соответственно. Интересно, что рынки мазута и сырой нефти в пределах выборки были высокоприбыльны, но вне пределов выборки принесли умеренные убытки. Несколько других рынков были выгодными, но без устойчивых связей между рынком, частью выборки и использовавшимся входом.

ЗАКЛЮЧЕНИЕ Подобно сезонным явлениям и фазам луны, солнечная активность, видимо, оказывает реальное влияние на ряд рынков, особенно на S&P 500 и миннесотскую пшеницу. Как и в случае с лунными циклами, это влияние недостаточно сильно или постоянно, чтобы служить основным элементом в системе портфельной торговли, но как компонент системы, включающей другие факторы, солнечная активность заслуживает внимания. Мы подозреваем, что солнечные явления не влияют на рынок напрямую, но запускают события, которые ждут своего часа или же синхронизируют уже существующие циклы рыночной активности, имеющие близкую периодичность. Например, если цены на рынке сильно завышены и нестабильны, как это было с S&P 500 в октябре 1987 г., для запуска неизбежного обвала вполне достаточно могло быть и солнечной вспышки.

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

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

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

ГЛАВА Входы на основе циклов Цикл— это ритмическое колебание, имеющее определимую частоту (0,1 цикла в день, например) или же, по-другому, периодичность (10 дней на цикл, например). В предыдущих двух главах рассматривались циклические по природе явления. Эти процессы имели внешнюю по отношению к рынку природу и известную, если не фиксированную периодичность. Сезонные явления, например, вызваны сменой времен года, и, следовательно, привязаны к внешней действующей силе. Таким образом, все сезонные явления цикличны, но не все цикличные явления сезонны. В этой главе будут рассматриваться циклы, существующие исключительно в ценовых данных и не обязательно имеющие какие-либо внешние причины. Некоторые из таких циклов могут объясняться еще неизвестными влияниями, другие могут происходить из резонансных колебаний рынков. Какова бы ни была причина, при рассмотрении практически любого графика можно обнаружить циклические явления. В старину трейдеры использовали для поиска регулярных максимумов и минимумов инструмент в форме гребня, который прикладывали к графику. Сейчас применяются компьютерные программы, позволяющие легко наблюдать и анализировать циклы. В отношении механического обнаружения и анализа циклов наиболее используемой техникой является спектральный анализ на основе метода максимальной энтропии (MESA).

ОБНАРУЖЕНИЕ ЦИКЛОВ С ИСПОЛЬЗОВАНИЕМ MESA В настоящее время предлагается не меньше трех крупных программных пакетов для трейдеров с возможностью применения метода максимальной энтропии для анализа рыночных циклов. Это Cycle Trader от Bresset, MESA от Ehlers (800-633-6372) и TradeCycles (Scientific Consultant Services, 516-696-3333 и Ruggiero Associates, 800-211-9785). Такой анализ используется многими специалистами, например Ружжиеро (Ruggiero, октябрь 1996) сообщает, что адаптивные системы на основе пробоя работают лучше при использовании метода максимальной энтропии (MEM) при анализе циклов, чем без него.

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

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

ОБНАРУЖЕНИЕ ЦИКЛОВ ПРИ ПОМОЩИ ГРУПП ФИЛЬТРОВ Мы потратили много времени на поиск другого метода обнаружения и извлечения полезной информации о циклах. Помимо избежания проблем, связанных с методом максимальной энтропии, мы также хотели использовать принципиально новый метод: при работе на рынке новые методы порой имеют преимущество просто потому, что отличаются от методов других трейдеров. Одним из таких подходов является использование групп специально разработанных полосовых фильтров. Этот метод известен из электроники, где группы фильтров часто применяются для спектрального анализа. Использование группы фильтров позволяет подбирать ширину пропускания и другие характеристики фильтра, а также накладывать друг на друга различные фильтры в составе группы. Этот метод позволяет получить быстрый и адаптивный ответ на рыночную ситуацию. В проведенном нами исследовании рыночных циклов при помощи групп фильтров (Katz, McCormick, май 1997) с 3 января 1990 г. по 1 ноября 1996 г. разработанная нами модель (на принципе покупки на минимумах и продажи на максимумах) вела торговлю на рынке S&P 500 и принесла $114 950 прибыли. Было проведено 204 сделки, из них 50% прибыльных. Общая прибыль составила 651%. И длинные, и короткие позиции имели примерно равную доходность и процент выгодных сделок. Различные параметры модели подверглись оптимизации, но почти все значения пара ГЛАВА Входы НА ОСНОВЕ циклов метров вели к прибыльным результатам. Использованные на рынке S&P500 параметры были без изменений применены для торговли на рынке казначейских облигаций и принесли 254% прибыли. Учитывая относительную простоту использованных фильтров, эти результаты весьма обнадеживают. В этом исследовании ставилась цель разработать систему фильтров с нулевым запаздыванием. Фильтры были аналогичны резонаторам или настроенным цепям, которые позволяют проходить сигналам определенной частоты, при этом останавливая сигналы с другими частотами. Чтобы понять идею использования фильтров, представьте себе поток ценовых данных рынка как аналог колебаний напряжения, возникающих в радиоантенне. Этот поток содержит шум, а также модулированные сигналы от радиостанций. Когда приемник настраивают на диапазон, меняют частоту резонанса или центральную частоту полосы пропускания фильтра. На многих частотах слышен только шум. Это означает, что в отсутствие сигнала в приемной системе не возникает резонанса. На других частотах встречается слабый сигнал, а когда находят частоту, соответствующую резонансной, то передача становится четко слышна;

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

ФИЛЬТРЫ БАТТЕРУОРТА Фильтры Баттеруорта достаточно просты для понимания. Фильтр Баттеруорта для низких частот подобен скользящему среднему;

он сглаживает высокочастотный сигнал (или шум) и пропускает низкочастотные колебания (т.е. колебания с длинным периодом). Если у экспоненциального скользящего среднего отсечка составляет 6 дБ на октаву (т.е. выход с частотой выше отсечки снижается вдвое при двойном снижении периода сигнала), то у четырехполюсного фильтра Баттеруорта (использованного в нашей работе от мая 1997 г.) снижение составляет 18 дБ на октаву (выход с частотой выше отсечки снижается в 8 раз при уменьшении периода сигнала вдвое). Такое резкое снижение ненужного высокочастотного сигнала имеет свою цену: при этом возрастает запаздывание и возникают искажающие фазовые сдвиги. Фильтр Баттеруорта для высоких частот подобен осциллятору, основанному на разности скользящих средних (например, X— МА(Х), где X — входящий сигнал, а МА(Х) — его скользящее среднее). Оба процесса обеспечивают ослабление низкочастотных сигналов (например, трендов), пропуская высокочастотный сигнал без изменений. Фильтр Баттеруорта обеспечивает более сильное сглаживание, чем осциллятор скользящего ГЛАВА Входы НА ОСНОВЕ циклов среднего (18 дБ против б дБ на октаву). И осциллятор, и высокочастотный фильтр вызывают сдвиг вперед, а не запаздывание, но при этом возникают искажающие высокочастотные шумы и фазовые сдвиги. Если соединить высокочастотный и низкочастотный фильтры, подав выход первого на вход второго, получится полосовой фильтр, блокирующий частоты выше и ниже желаемой. Сигнал с частотой (или периодом), соответствующим центру полосы пропускания, будет пропущен без искажений (с минимальным сглаживанием) и без запаздывания. Фазовые сдвиги высокочастотного компонента (смещение вперед) и низкочастотного (запаздывание) компенсируют друг друга, как и в случае с вибрирующим камертоном или с осциллятором MACD, который на самом деле является примитивным полосовым фильтром на основе скользящих средних. Сглаживание, обеспечиваемое осциллятором MACD, как и в случае со скользящими средними, невелико по сравнению со сглаживанием фильтров Баттеруорта. Поскольку фильтр пропускает только небольшую часть спектра, выходной сигнал очень сглажен и близок к синусоиде. Более того, поскольку запаздывание и смещение вперед компенсируют друг друга, сигнал не запаздывает. Можно ли назвать такой фильтр идеальным осциллятором? Можно, но с одним условием: использовать только фильтр с центральной частотой, соответствующей частоте рыночных циклических процессов. Выход должным образом настроенного фильтра должен быть синхронным с циклической активностью рынка в текущий момент. Такой выход будет очень сильно сглаженным;

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

ВОЛНОВЫЕ ФИЛЬТРЫ Фильтры Баттеруорта нельзя назвать единственными оптимальными фильтрами для анализа рыночных циклов. Недостатки фильтров Баттеруорта включают довольно низкую скорость принятия решений, не всегда достаточную для реальной торговли, а также проблемы с измерением мгновенной амплитуды данного цикла. Как было указано ранее, фильтры Баттеруорта могут вносить сильные фазовые искажения. Альтернативой им могут быть волновые фильтры.

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 7 |



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

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