Мюррей А. Рухеро мл.
(Примечание переводчика: Так как многие термины по теории торговли еще не были озвучены официально на русском языке, то во избежание разночтения при переводе статей о фьючерсных контрактах я использовал следующие термины:
Ratio-adjusted contracts – Контракты, упорядоченные на основе пропорционального смещения.
Back-adjusted contracts – Упорядоченные (склеенные) контракты на основе изменения цен прошлого.
Forward-adjusted contracts – Упорядоченные (склеенные) контракты на основе изменения текущих цен.)
Для того, чтобы дать оценку надежности работы торговой системы в будущем, мы тестируем ее на основе информации о торговых сделках прошлого. Эти действия подразумевают под собой применение определенного набора правил к имеющимся данным, чтобы увидеть, как бы они работали, если бы мы реально их использовали для своей торговли. Получаемые при этом удовлетворительные результаты отнюдь не гарантируют прибыли в будущем, в то время как неважные результаты практически полностью отрицают возможность использования тестируемой системы в реальной торговле.
Осознанная ценность тестирования зиждется на вере в то, что ситуации на рынке повторяются. Трейдеры проверяют различные стратегии на данных из прошлого на протяжении поколений. Однако эта практика приобрела широкую популярность лишь с приходом персональных компьютеров и специализированного аналитического программного обеспечения, такого как, например, System Writer, позднее переросшего в TradeStation. Все это позволило рядовому пользователю, не имеющему навыков программирования, проводить тесты на предмет использования новых идей. Более глубокое понимание и приятие торговых систем, наряду с недовольством многих насчет неудачных попыток создания собственных разработок, стало причиной развития профессионального рынка торговых систем в 90-е годы прошлого столетия.
Одной из компаний, занимающейся коммерческими поставками таких систем, является компания Futures Truth, работающая на рынке с 80-х годов. Сейчас на ее счету находится более 500 продуктов. Метод работы компании заключается в тестировании систем на основе текущих торгов, а не торгов прошлого, что позволяет со временем избегать ненужных переделок и повышает коэффициент отдачи в реальных рыночных ситуациях, например, в период повышенной волатильности. Согласно статистике компании Futures Truth, только 45% из имеющихся систем приносят прибыль в долгосрочном плане и только 20% могут показать приемлемое соотношение рисков к прибыли. И эти цифры даже лучше, чем в целом по отрасли, потому что в Futures Truth приходят только уверенные в себе трейдеры, стремящиеся к трезвой оценке положения вещей.
Многие системы терпят крах в силу неправильности исходных положений: и входные, и выходные данные получают из архивов, а затем на их основе выводят правила, которые срабатывали в прошлом. И очень часто получается, что прекрасно работающие в прошлом установки на текущий момент оказываются ничуть не лучше простого выбора вслепую. Разработка торговой системы должна начинаться с теории, которая может быть протестирована, проанализирована и отлажена для использования в приложениях. Такая концепция подразумевает и совершенно другой подход к самому тестированию: его целью становится не просто сбор гипотетических данных о прибылях и убытках, а подтверждение жизнеспособности теории и точности в выборе исходного положения.
Тестирование системы – это многогранный процесс. Здесь учитываются данные рынка и время; механизм открытия позиции и особенности контрактов; контроль рисков. Ошибка в одном элементе может повлечь за собой провал правильного в целом теста, а их подтасовка – получение результатов более оптимистичных, чем они будут на самом деле. Так что если делать, то делать правильно.
Инструменты торговли
Есть два элемента прогонки: главные инструменты – данные и программное обеспечение, и научный подход к разработке систем при помощи этих инструментов. Давайте остановимся на них подробнее.
Существует множество путей поверки правильности Ваших идей. Они различаются по легкости преобразования в рабочие коды и тому, как обрабатываются отдельные части, что может оказать существенное воздействие на конечный результат. Например, при установке лимит ордера, некоторые программы его исполняют, если происходит касание цены. Однако в условиях реальной торговли вряд ли можно с уверенностью такое гарантировать, равно как и противоположное. Установка стоп ордера гарантирует срабатывание, но не цену.
Другая проблема кроется в записи реальных цен. Хотя большинство профессионально написанных программ уже преодолели эту проблему, она до сих пор вызывает озабоченность у тех, кто проводит тесты вручную, особенно при использовании баз данных, таких как Microsoft Excel. Например, если в системе срабатывает стоп ордер на покупку, равный цене закрытия плюс одна треть от среднего разброса за последние три периода, и такой разброс равен 10, то ценой покупки станет величина 3.333. В E-mini S&P 500 торговля идет по четвертям размера тика. Это означает, что отклонение от ордера будет доходить до 3.50. Начинающий трейдер может этого не заметить, особенно когда вводит цифры вручную. Но совсем еще недавно и многие профессиональные программы делали эту же ошибку, которая со временем могла бы сильно исказить реальное положение вещей.
По большому счету, однако, такие процедурные детали – мелочь. Наибольшее беспокойство вызывают исходные данные.
Понимание исходных данных
Первое и наиболее важное, на что следует обратить внимание при проведении тестирования системы – это исходные данные. Фьючерсные контракты заслуживают отдельного внимания, так как они ограничены во времени. Тестирование системы на основе данных по фьючерсам за определенный период времени требует совмещения контрактов для создания более длительных серий данных. Это необходимо и для анализа, и для сделок, охватывающих два отдельных контракта. Процесс усложняется тем, что существует разница между двумя соседствующими контрактами, появляющаяся в результате различия процентных ставок и других факторов между физическими товарами и фьючерсными контрактами на них. Этот разрыв означает невозможность простого совмещения данных по контрактам: первый, второй или даже оба должны пройти подгонку для того, чтобы разрыв был убран.
В этих откорректированных непрерывных контрактах подвергается оценке и удаляется каждый из возникших ценовых разрывов. Этого можно достичь двумя путями: либо от начала цепочки в конец, либо наоборот. Второй метод, получивший название «Склеенные» контракты на основе изменения цен прошлого», более популярен в силу того, что путем изменения прошлого контракта, цены нынешнего остаются неизменными и соответствуют текущему моменту.
Например, 11.09.2006 мы закрыли сентябрьский E-mini S&P 500 контракт по цене 1300,4 и декабрьский – по цене 1311,6 (см. график «Движение рынка», внизу). Разница в 11,6 пунктов – это разрыв между контрактами, возникающий при перенесении сделки. Разрыв восходящий, так как разница положительна. Для того чтобы его удалить, нам нужно перенести все предыдущие данные на 11,6 пунктов вверх. При нисходящем разрыве мы производим обратные действия. Здесь важно уяснить, что процесс «склеивания» непрерывен, и его необходимо повторять всякий раз, когда мы добавляем новый контракт.
У «склеенных» контрактов на основе изменения цен прошлого есть свои моменты: действующие уровни цен могут исчезать, а цены могут принимать отрицательные значения. Соотношения цен (например, золото/серебро) нельзя рассчитывать, основываясь на ценах до переноса; данные о волатильности, представленной в виде процента от цены, искажаются. Стопы можно рассчитывать только в виде пунктов; алгоритмы призванные отслеживать появление ценовых моделей, могут не срабатывать вследствие того, что процесс «склеивания» данных изменяет форму этих моделей на графиках торгов прошлого.
Несмотря на это, непрерывные данные, получаемые при использовании метода «склеивания», являются достоверными. Их разница абсолютна, что дает возможность ее выразить в долларовом эквиваленте на единицу изменения цены. И, конечно же, Вы должны убедиться в том, что получаемые сигналы основываются на правильных ценах.
Реалии торговли
Каковым было бы использование цен в «склеенных» контрактах на основе изменения цен прошлого, если бы они не соответствовали реальности? Предположим, что мы заключили сделку по свинине в первый день контракта и держали ее до конца. Далее мы переносим позицию с одного месяца поставки на другой. Если мы не будем учитывать комиссионные и проскальзывание, точную величину позиции мы можем рассчитать, используя «склеенный» график, так как «склеенные» контракты на основе изменения цен прошлого – гарантированный метод отображение реалий, а если быть точнее, то торговых реалий. Они описывают положение трейдера, удерживающего непрерывную позицию на любом из рынков. Таким образом, этот тип контрактов является оптимальным источником данных для систем автоматического тестирования.
Следующее, на что стоит обратить внимание в ситуации при переносе контрактов, - это механизм запуска переноса. Он определяет, когда именно происходит переход непрерывного фьючерсного контракта от одного месяца к другому. Детали могут варьироваться от программы к программе, но в CSI Unfair Advantage, в зависимости от условий, механизм запуска может базироваться на следующем: сумме открытых позиций, объемах, каких-либо специфических данных или их комбинации.
Каждый трейдер, который держит торговые позиции открытыми на протяжении длительного периода времени, должен иметь план по переходу на другой месяц.
Открытый интерес: когда большая часть открытого интереса переходит на новый месяц
Торговый объем: когда большая часть объема переходит на новый месяц
Открытый интерес и Торговый объем: оба параметра переходят на следующий месяц
Открытый интерес или Торговый объем: один из параметров переходит на следующий месяц
Фиксированная дата: когда по торговому календарю наступает определенная дата.
Перенос данных сказывается и на границах рынка, и на его ликвидности, так что время этой операции очень важно для трейдинга. И правда, использование механизмов на основе разных логических построений может сильно сказаться на работе системы и при тестировании, и в режиме реальной торговли. Например, можно наблюдать разброс в 20-30%, если выбрать момент переноса в первом случае по сумме открытых позиций, а во втором – фиксированной дате.
Вдобавок, перенос по сумме открытых позиций и объемам на некоторых рынках может быть рискованным, так как первый день уведомления может прийтись (и часто приходится) на дату до переноса. Для некоторых систем, например, трендовых, это может свести на нет все прибыли.
Другим моментом, на который стоит обратить внимание, является попытка переноса до опубликования данных по индексам. Объем денег, питающих S&P Goldman Sachs Commodity Index и другие подобные долгосрочные индексы, вырос в геометрической прогрессии за последние шесть лет. По некоторым подсчетам на данный момент эта сумма составляет 300 млрд. долларов. Эта информация изменила природу спредов по опционам текущего и следующего месяцев исполнения. Некоторые трейдеры и программы пытаются извлечь выгоду из объемов этих переносов, что выражается в стремлении спредов сравняться с полной стоимостью переноса физического товара контракта гораздо раньше, чем при обычных условиях. Другими словами, громадные позиции, задействованные при переносе, должны учитываться наравне с более традиционными факторами.
Контракты, упорядоченные на основе пропорционального смещения
Предположим, компания проводит сплит 10 к 1. Это означает, что на каждую имеющуюся у Вас акцию Вы получаете десять новых. После операции цена акций уменьшается в 10 раз. В результате этого образуется весьма значительный разрыв. Чтобы избежать его появления на графике, все данные ранее прошедших торгов также делятся на 10, так что цены прошлого будут отображены в той же самой манере, что и сегодняшние цены. В результате данные до сплита были упорядочены на основе пропорционального смещения.
Мы можем проводить такие действия с любым переносом контрактов по фьючерсам. Для этого нам необходимо рассчитать коэффициент пропорционального смещения (цена нового контракта/цена старого контракта) с целью обеспечения относительной стабильности процентного соотношения цен любого из периодов торгов. Например, если цена закрытия старого контракта на момент переноса составляла 1000, а нового контракта после – 990, то нам нужно умножить все старые цены на величину 990/1000 для того, чтобы избавиться от разрыва.
Остаются еще несколько нерешенных вопросов, среди которых: что лучше использовать относительно тиков максимального размера - тики реального размера, или тики рассчитанного (на этот параметр стоит обратить внимание при разработке стратегии торгов и ее тестировании). Также необходимо учесть, что цены исходного диапазона данных не изменяются вместе с подгонкой тиков; так как изменениям подвергаются цены всей серии, то расчет соотношения прибыль/убыток в долларовом эквиваленте по этим контрактам невозможен, даже если они и выражены в долларах. В этом случае, для выявления торговых результатов и стопов, можно пользоваться расчетами на основе процентных соотношений.
Еще одним методом может стать упорядочение контракта на основе изменения текущих цен. Здесь модификации подвергается лишь незначительная часть цен; цены прошлых торгов остаются неизменными. Такая подгонка осуществляется вручную по каждой цене отдельного элемента, а не по всем данным скопом.
История повторяется не всегда. Но это все, что у нас есть. Модели и характеристики остаются, но, как и ребенок не является точной копией своих родителей, так и движения рынка фьючерсов не всегда следуют тем же путем, что и ранее. Но основные моменты этого движения мы можем предсказать, если наши суждения базируются на логических выкладках, а не на сиюминутных выводах. Построение и проверка таких выкладок в условиях максимально приближенных к реальности – вот ключ к созданию настоящей торговой системы. В следующей статье мы более подробно остановимся на специфике выкладок и не том, как убедиться в том, что они правильно сформулированы.
Примечание: Мюррей А. Рухеро мл. – автор работы «Автоматизированные торговые стратегии»
Комментирует статью руководитель кафедры Анализа Объемов Максим Ган: Перенос контракта очень часто влечет за собой погрешность в цене фьючерса и базового актива. Например разрыв между фьючерсом евро 6E и парой EUR/USD может составлять от нескольких пунктов до нескольких десятков пунктов. Это нормальная ситуация. При тестировании различных ТС, и уж тем более при торговле надо учитывать данную погрешность.