Джеффри Оуэн Кац и Донна Л. Маккормик

Часть I. Рабочие инструменты

Введение

   Для объективной оценки поведения механических торговых систем требуются различные аналитические инструменты и данные.
   Для моделирования поведения некоторого метода входа или выхода требуется проведение тестов с использованием этого метода на данных о прошлом поведении рынка. Следовательно, для начала требуются чистые, надежные исторические данные.
   При наличии данных нужна программа для моделирования торгового счета. Такие программы позволяют давать различные торговые приказы и должны эмулировать торговлю с реального счета за интересующий нас исторический период. Такие программы называются торговыми симуляторами.
   Модель (будь то модель входа, выхода или полная система) может иметь ряд параметров, которые необходимо настраивать для достижения наилучшей отдачи от системы и ее элементов, или ряд опций, которые можно включать или отключать. Для определения оптимальной конфигурации системы используется оптимизатор, и его надо выбрать среди разнообразия существующих видов оптимизаторов.
   Моделирование и оптимизация дают огромное количество результатов. Система может провести сотни тысяч тестов, каждый со своим показателем прибыли/убытков, максимального благоприятного и неблагоприятного движения. Кроме того, будут построены графики изменения общего капитала, соотношения риска/прибыли, доходности и других показателей моделируемого торгового счета. Необходим подход к оценке значимости этих результатов. Является ли высокая доходность результатом излишней оптимизации? Может ли система быть прибыльной чисто случайно или дело в достоверной торговой стратегии? Если система обоснованна, будет ли она столь же успешна в будущем при реальной торговле, как и в прошлом? Ответы на такие вопросы достижимы при помощи статистических методов.
   В следующих главах будут рассмотрены данные, симуляторы, оптимизаторы и статистика. Эти понятия будут использоваться в дальнейшем при исследовании методов входа и выхода и при попытке объединить входы и выходы в полную торговую систему.

Глава 1. Данные

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

Виды данных

   Исторические ценовые данные по фьючерсным рынкам поставляются как для индивидуальных контрактов, так и для непрерывных фьючерсов. Данные по индивидуальным контрактам – это ценовая история отдельных фьючерсных контрактов. На фьючерсных рынках в каждый момент времени могут проходить торги по нескольким контрактам. Большинство спекулянтов на бирже торгует контрактами на ближайший месяц – наиболее ликвидными и близкими к исполнению, но еще не прошедшими дату первого уведомления. Когда каждый из контрактов приближается к истечению или проходит дата первого уведомления, трейдер «переносит» любую открытую позицию в следующий контракт. Таким образом, использование индивидуальных контрактов может значительно усложнить тесты. Необходимо учитывать не только сделки, создаваемые системой, но и переводы позиций и выбор соответствующих контрактов.
   Для упрощения системы и тестирования были изобретены непрерывные фьючерсы, состоящие из индивидуальных контрактов, связанных в непрерывную последовательность. При истечении старого контракта и открытии нового производится несложная обработка данных, закрывающая ценовые разрывы между двумя контрактами. Простая обратная настройка, видимо, является самым осмысленным и популярным методом закрытия разрывов (Schwager, 1992). Она проводится с помощью вычитания из ценовых данных постоянного числа, что позволяет сохранить все линейные отношения (изменения цены со временем, уровни волатильности, торговые диапазоны). Моделирование торговой активности, проводимое с использованием обратной настройки, зачастую требует только коррекции стоимости переноса позиции при обработке полученных результатов. После этой коррекции полученные при моделировании данные будут идентичны показателям, которые были бы получены при использовании индивидуальных контрактов. Впрочем, поскольку торговые решения зависят от абсолютных ценовых уровней, процентных или других соотношений цен, то для проведения тестов будут необходимы дополнительные серии данных (помимо постоянных контрактов с обратной настройкой).
   Данные о ценах на конец дня как для индивидуальных, так и для постоянных контрактов представляют собой серию дневных котировок. Каждая котировка, каждый день или точка данных обычно включают семь показателей: дата, цена открытия, максимальная цена, минимальная цена, цена закрытия, объем и открытый интерес. Объем и открытый интерес обычно не сообщаются до закрытия следующего дня. Поэтому при тестировании торговых методов, основанных только на исторических значениях этих показателей, можно получить великолепную, но совершенно неработоспособную систему! Цены открытия и закрытия (или расчетная цена), максимальная и минимальная цены публикуются каждый день вскоре после закрытия рынка.
   Внутридневные ценовые данные состоят из последовательности баров, каждый их которых отражает фиксированный временной интервал, или из индивидуальных тиков. Показатели точки данных включают дату, время, цену открытия, максимальную цену, минимальную цену, цену закрытия и тиковый объем. Тиковый объем отличается от объема дневных торгов: для внутридневных данных – это количество тиков, происходящих в пределах бара, вне зависимости от количества контрактов или сделок в каждом из этих тиков. Для индивидуальных тиков сообщается только дата, время и цена, но не объем. Внутридневные тиковые данные могут быть легко конвертированы в данные с фиксированным временным интервалом при помощи доступных программ, которые часто предоставляются поставщиком данных без дополнительной оплаты.
   Кроме данных о ценах товаров существуют другие ценные данные. Например, долговременные данные об активности солнечных пятен, полученные из Бельгийской королевской обсерватории, использованные в главах о влиянии Солнца и Луны. Изменения температуры и осадков оказывают влияние на рынок сельскохозяйственных продуктов. Различные данные из самых разных областей экономики – от уровня инфляции до цен на жилье – могут помочь в успешной торговле на товарной бирже. Не забывайте просматривать сводки, отражающие настроения участников рынка, такие как обзоры «Взгляды трейдеров» (Commitment of Traders), опросы, отражающие преобладание бычьих или медвежьих настроений, соотношения опционов пут и колл. Кроме того, при тестировании систем можно использовать и нечисленные данные, например новости в прессе. Поиск необычных данных часто открывает интересные и выгодные возможности – зачастую, чем более необычны и труднодоступны данные, тем они ценнее!

Временные масштабы данных

   Данные могут использоваться в своих естественных временных рамках или пересчитываться в другой масштаб. В зависимости от используемого масштаба при торговле и особенностей торговой системы могут потребоваться тиковые, 5– и 20-минутные, часовые, недельные, двухнедельные, месячные, квартальные и даже годовые данные. Обычно источник данных имеет естественные временные ограничения; для внутридневных данных – это тик. Тик не является постоянной единицей времени: иногда тики бывают очень частыми, иногда спорадическими с длинными интервалами между ними. День – естественная единица шкалы для дневных данных. Для некоторых других данных естественный масштаб может быть двухмесячным, как, например, для сводок обзоров «Взгляды трейдеров», или квартальным, как бывает с отчетами о прибыли компаний.
   Хотя от длинных временных периодов нельзя перейти к коротким (нельзя создать отсутствующие данные), обратный переход легко достижим при соответствующей обработке. Например, несложно создать серию 1-минутных штрихов на основе тиков. Конверсия обычно проводится автоматически при использовании аналитических программ или графических пакетов, а также при помощи особых утилит, часто предоставляемых поставщиком данных. Если данные скачиваются из Интернета по протоколу ftp или при помощи стандартного броузера, может потребоваться небольшая дополнительная программа или скрипт для перевода скачиваемых данных в желаемый формат и сохранения в приемлемом для других программ формате.
   Какой временной масштаб лучше? Это зависит от трейдера. Для тех, кто предпочитает быструю обратную связь, частые сделки, близкие защитные остановки и ежедневную фиксацию прибыли, идеальный выбор – внутридневной масштаб. Чем больше сделок, тем быстрее трейдер учится и выбирает наиболее приемлемые для него торговые методы. Кроме того, при ежедневном закрытии всех позиций вечером трейдер может полностью избежать риска изменений рынка за ночь. Еще одна полезная характеристика краткосрочной торговли – возможность использовать близкие защитные остановки, снижая убытки при неудачных сделках. В конце концов любители статистики будут очарованы представительными выборками данных, содержащими сотни тысяч показателей и тысячи сделок, которые легко накопить при использовании коротких временных масштабов. Большие выборки снижают риск подгонки системы под прошлые данные, дают более стабильные статистические результаты и увеличивают вероятность того, что прогностические модели будут работать в будущем так, как работали в прошлом.
   Недостатками краткосрочных временных масштабов являются необходимость получения данных в реальном времени, накопления исторических тиковых данных, применения высокопроизводительной аппаратуры с огромным объемом памяти, использования специальных программ и большое количество времени на занятия собственно торговлей. Необходимость в производительном компьютере с большим объемом памяти возникает по двум причинам: (1) при тестировании системы будут использоваться колоссальные объемы данных; (2) программы, управляющие системой, ведущие сбор данных и строящие графики, должны работать в реальном времени, не пропуская ни одного тика. И база исторических данных, и программы, способные справиться с такими объемами, необходимы для разработки и тестирования систем. Реальная работа требует поступления данных в реальном времени, и хотя сейчас мощные компьютеры вполне доступны по цене, специализированные программы и банки исторических тиковых данных недешевы. Оплата данных в реальном времени – также заметный и постоянный расход.
   С другой стороны, стоимость данных и затраты времени на торговлю минимальны для работающих на дневных и более длительных временных масштабах. Для большинства финансовых инструментов в Интернете доступны бесплатные данные, программы также, скорее всего, будут дешевле, и торговля потребует меньше времени: систему можно запускать после закрытия рынков и передавать брокеру приказы до открытия рынков утром. Таким образом, на торговлю можно тратить около 15 минут в день, оставляя больше времени на разработку системы и, естественно, на отдых.
   Еще одно преимущество больших временных масштабов – возможность вести торговлю на большом количестве рынков. Поскольку не на многих рынках уровень ликвидности и волатильности достаточен для дневной торговли, а человек не способен успевать делать все сразу, внутридневной трейдер может осуществлять диверсификацию только с помощью нескольких торговых систем на одном рынке. Трейдер, работающий по данным на конец дня, имеет более широкий выбор рынков и больше свободного времени, что дает ему возможность работать на нескольких рынках одновременно. Распределение капитала – замечательный способ снижения риска и повышения прибылей. Кроме того, длительные временные масштабы позволяют получать большие прибыли при следовании за сильными, продолжительными трендами; такие прибыли могут превратить позицию $50 000 в миллион менее чем за год. В конце концов средне– и долгосрочный трейдер может найти больше внешних параметров, имеющих потенциальные прогностические качества.
   Впрочем, длительные временные масштабы не лишены недостатков. Трейдер должен мириться с запоздалой реакцией на текущие ценовые изменения, с «далекими» защитными остановками, с риском ночных изменений. Удерживание непрерывных позиций – психологическая нагрузка, способная довести до бессонницы. При работе системы, основанной на дневных, недельных или месячных данных, могут возникнуть проблемы статистической достоверности. Одним из способов обойти проблемы малых выборок данных является работа с портфелями, а не с индивидуальными позициями.
   Какой временной масштаб лучше? Это зависит от вас, трейдера! На разнообразных временных масштабах возможна выгодная торговля. Надеемся, эта дискуссия пояснила ряд проблем и вариантов выбора.

Качество данных

   Плохие данные могут привести любой анализ в состояние полного хаоса, дать потенциально убыточные заключения и привести к потере драгоценного времени. Поэтому для проведения тестов требуется применять только лучшие из доступных данных. Некоторые прогностические системы, например основанные на нейронных сетях, могут быть чрезвычайно чувствительны к нескольким отклонениями, ошибочным данным; в таких случаях необходимость в чистых данных особенно высока. Время, потраченное на поиск и окончательную чистку хороших данных, не будет потеряно.
   Ошибки данных принимают много различных форм, и некоторые из них весьма заметны. При торговле в реальном времени порой попадаются тики с откровенно ошибочными, попросту невозможными ценами. В течение секунды индекс S&P 500 может «упасть» с уровня 952,00 до 250,50! Это что – гигантский обвал рынка? Нет: спустя пару секунд в следующем тике индекс опять будет на уровне 952,00 или где-то рядом. Что случилось? Плохой тик – «шумовой выброс» в данных. Такие ошибки, если они не будут обнаружены и исправлены, могут погубить результаты самой лучшей механической торговой модели. Более опасны, хотя чаще встречаются и труднее обнаруживаются, обычные мелкие ошибки в уровнях цен и других показателях, попадающих к трейдеру от поставщиков данных. Лучшие из поставщиков неоднократно проверяют свои данные и сообщают о поправках в случае обнаружения ошибок. Например, почти каждый день Pinnacle Data автоматически сообщает о программных коррекциях ошибок. Многие из этих мелких обычных ошибок не очень опасны для тестирования систем, но заранее этого знать нельзя.
   В зависимости от чувствительности испытываемой торговой или прогностической модели и таких факторов, как доступность программ для проверки данных, может иметь смысл проводить различные статистические исследования для поиска подозрительных данных. Для обнаружения этих точек, или выбросов, как их иногда называют статистики, существует ряд методов. Порой встречаются пропущенные, лишние и несоответствующие рыночным реалиям точки данных; их следует находить и корректировать. Как пример проверки данных в табл. 1–1 и 1–2 приведены случаи обработки данных с помощью программы, ищущей выбросы, пропуски и ошибочные значения.
   Табл. 1–1 изображает результат программы, проверявшей данные по непрерывным фьючерсам на индекс S&P 500 (дневные данные от Pinnacle Data Corporation (800-724-4903)). Программа не обнаружила неадекватных цен или объемов в этом наборе данных; не было примеров максимальной цены, меньшей, чем цена закрытия, минимальной, большей, чем цена открытия, отрицательного объема и других ложных данных. Два дня, впрочем, имели подозрительно высокие значения: один – на 10/19/87 (в отчете 871019), а другой – на 10/13/89. Аномальное значение на 10/19/87 не представляет собой ошибки, а связано с волатильностью, вызванной крупным падением рынка; значение на 10/13/89 также не является ошибкой, а связано с так называемым юбилейным эффектом. Поскольку эти два значения не были ошибочными, коррекции не потребовалось. При этом наличие таких значений в данных должно привлечь внимание к тому факту, что на рынке случаются события, когда изменения цены достигают экстремальных пропорций, и система должна быть способна справляться с такими случаями. Все значения в табл. 1–1 стандартизованы, т. е. вычислены путем деления ценового интервала данного дня на усредненный интервал 20 предыдущих дней. Как часто бывает с рыночными данными, распределение таких стандартизованных показателей более «растянуто», чем можно было бы ожидать при нормальном распределении, но тем не менее статистически события 10/19/87 и 10/13/89 – исключения. Во всех остальных случаях распределение давало упорядоченную картину: стандартизованные данные изменялись от 0 до 7 и лишь в отдельных случаях превышали 10.
   Утилита также пометила 5 дней как имеющие сильные отклонения цены закрытия. Как и ценовой диапазон дня, отклонение измерялось в виде распределения значений, с использованием стандартизованного соотношения цен закрытия. В данном случае стандартизованное соотношение вычислялось путем деления абсолютного значения разности цены закрытия и предшествующей цены на среднее от 20 предыдущих таких разностей.
   При исключении 5 дней с наибольшими отклонениями наблюдается подобное растянутое распределение изменений цен закрытия от 0 до 7 стандартизованных единиц. Значения, близкие к отклонению, равному 8, отмечались три раза, а значения 10 – только два раза. Рассмотрение данных торговых дней показывает, что в них имела место аномальная активность рынка, а не ошибка. Неудивительно, что два из пяти помеченных дней – те же самые, что выделялись при рассмотрении величины дневного диапазона цен. В конце концов программа не обнаружила пропущенных дней, данных, приходящихся на нерабочие дни, а также данных с повторными или перепутанными датами. Единственные проблемные моменты являются следствием аномалии рынка, а не ошибок. В общем, набор данных по S&P можно считать чрезвычайно чистым, что и неудивительно, зная о высокой репутации поставщика – Pinnacle Data Corporation.
   Как пример низкого качества данных рассмотрим последовательность котировок компании Apple Computer (AAPL), полученных авторами от одного знакомого. Результаты проверки приведены в табл. 1–2.
   В отличие от предыдущей выборки, здесь данные за два дня были помечены как имеющие необъяснимые логические ошибки. В одном случае цена открытия равнялась нулю и была ниже минимальной цены. В другом случае обнаружилась аномальная величина дневного диапазона цен (что может быть как ошибкой, так и последствием аномальной торговли). В нескольких случаях отмечалось сильное отклонение цены закрытия, возможно, ввиду нескорректированных дроблений акций. Повторяющихся или перепутанных дат не обнаружено, но немало дней было пропущено. В этом случае пропущенные точки соответствуют праздникам и, следовательно, просто указывают на разный подход к работе с данными; мы обычно по ряду причин заполняем праздничные дни данными предыдущего дня. Притом что последовательность включает котировки только с 1/2/97 по 11/6/98 (котировки S&P 500 – с 1/3/83 по 5/21/98), обнаружение ряда серьезных ошибок с помощью довольно простой процедуры не может не настораживать.
   Суть в том, что на этих примерах показана важность приобретения качественных данных от поставщика, имеющего хорошую репутацию и ведущего серьезную работу. Это сэкономит время, обеспечит надежные, чистые данные для разработки и тестирования систем и для торговли в дальнейшем. Более глубокий обзор проблем качества данных, в том числе и то, как, собственно, создаются рыночные котировки, как их передают и хранят, можно найти у Джурика (Jurik, 1999).

Поставщики и источники данных

   Сегодня существует множество источников для получения данных. Данные можно получать от поставщиков за отдельную плату, скачивать с различных бирж, получать из различных баз данных, доступных в Интернете и на компакт-дисках.
   Поставщики, взимающие дополнительную плату, такие как Tick Data и Pinnacle, данные которых широко использовались в работе над книгой, могут снабжать трейдеров достаточно чистыми данными в удобном для использования формате. Они также предлагают удобные службы обновления и, по крайней мере Pinnacle, обеспечивают автоматическую коррекцию ошибок, что облегчает хранение надежной большой базы данных. Среди известных поставщиков данных на конец дня с товарных бирж можно отметить Pinnacle Data Corporation (800-724-4903), Prophet Financial Systems (650-322-4183), Commodities Systems Incorporated (CSI, 800-274-4727) и Technical Tools (800-231-8005). Внутридневные исторические данные, необходимые для тестирования систем, можно приобрести у Tick Data (800-822-8425) и Genesis Financial Data Services (800-621-2628). Трейдерам, ведущим дневную торговлю, следует также обратить внимание на Data Transmission Network (DTN, 800-485-4000), Data Broadcasting Corporation (DBC, 800-367-4670), Bonneville Market Information (BMI, 800-532-3400) и FutureSource-Bridge (800-621-2628); эти поставщики предлагают быстрые котировки в реальном времени, необходимые для успешной дневной торговли. Данные о других источниках котировок можно найти у Мэрдера (Marder, 1999), сравнительный обзор поставщиков данных на конец дня есть у Найта (Knight, 1999).
   Данные не обязательно покупать у коммерческих поставщиков. Иногда их можно получить непосредственно с места событий – различные биржи порой поставляют данные потребителям напрямую. Данные по опционам можно найти в Интернете на сайте Чикагской торговой биржи (CBOT). Когда вводится новый контракт, биржа публикует всю актуальную информацию по данному контракту. В некоторых случаях это единственный способ получить доступ к данным быстро и дешево.
   В конце концов необъятное количество баз данных может быть найдено в Интернете с помощью броузера или ftp-клиента. Сейчас практически все доступно в онлайне: например, министерства финансов поддерживают базы данных по экономическим показателям и индикаторам циклов деловой активности. NASA – замечательный источник для всевозможных солнечных и астрономических данных. Национальный центр климатических данных (NCDC) и Национальный центр геофизических данных (NGDC) предлагают данные о погоде и геофизические показатели. Для любителя путешествовать по Сети найдется необъятное изобилие данных в самых разнообразных форматах. Здесь, впрочем, лежит другая проблема – для поиска нужен некоторый уровень умения и, возможно, навыки в программировании и написании скриптов, а также много времени на поиск, переформатирование и очистку данных. Поскольку «время – деньги», лучше всего положиться на поставщика данных с хорошей репутацией для приобретения основных котировок и использовать Интернет и другие источники для получения более экзотических и труднодоступных данных.
   Дополнительные источники данных также включают базы, доступные в библиотеках и на компакт-дисках. ProQuest и другие профессиональные базы с возможностью получения полного текстового содержания часто бывают доступны в общественных библиотеках, так что данные можно скопировать на принесенную с собой дискету. Не забывайте о периодических изданиях, таких как Investor’s Business Daily, Barton’s и The Wall Street Journal; они могут быть замечательными источниками некоторых видов информации и во многих библиотеках доступны в виде микрофильмов.
   Наиболее удобно хранить данные в ASCII-текстовом формате. Этот формат легко конвертируется и читается разнообразными приложениями – от текстовых редакторов до программ построения графиков.

Глава 2. Симуляторы

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

Виды симуляторов

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