Энциклопедия торговых стратегий
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Энциклопедия торговых стратегий

Эту книгу я посвящаю Розалин Анкер Кац

 

Благодарю тебя за любовь и поддержку

Издано при содействии Международного Финансового Холдинга FIBO Group, Ltd.

 

Перевод П. Глоба

Научный редактор А. Дзюра

Технический редактор Н. Лисицына

Компьютерная верстка А. Фоминов

Корректоры М. Савина, О. Ильинская

Дизайн обложки DesignDepot

 

© The McGraw-Hill Companies, Inc. 2000

All rights reserved.

© Издание на русском языке, перевод, оформление. ООО «Альпина Бизнес Букс», 2006

© Электронное издание. ООО «Альпина Паблишер», 2012

 

Кац Дж.

Энциклопедия торговых стратегий / Джеффри Оуэн Кац, Донна Л. Маккормик; Пер. с англ. — 4-е изд. — М.: Альпина Паблишер, 2011.

 

ISBN 978-5-9614-2669-4

 

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

Предисловие

 

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

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

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

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

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

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

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

Мы хотели бы пояснить, что данная книга является продолжением и развитием цикла статей, написанных нами для журнала Technical Аnalysis of Stocks and Commodities начиная с 1996 г.

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

Введение

 

У большинства трейдеров есть общая черта: они взялись предсказывать движение финансовых рынков, на которых торгуют, взялись искать островки прибыльной «неэффективности» в огромном океане эффективного рынка. Для одного из авторов, Джеффри Каца, эта деятельность сначала была способом потакать своей любви к математике. Более десяти лет назад он разработал модель, дававшую сигналы входа для Standard & Poor’s 500 (S&P 500) и ОЕХ. Хотя эти сигналы были верны примерно в 80% случаев, Кац часто принимал торговые решения, не основанные на сигналах системы. Он полагался на собственные решения в выборе видов приказов для входа, выхода и установки стопов. Эти решения принимались скорее под влиянием страха и жадности, составляющих суть интуитивной торговли, чем на основе знаний и разума. В результате Кац колебался, принимал ошибочные решения и терял деньги чаще, чем выигрывал. Как и для большинства трейдеров, для Каца торговля без жестких «механических» правил принятия решений была неэффективна.

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

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

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

Что такое полностью механическая торговая система?

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

  1. Когда, как и по какой цене входить в рынок.
  2. Когда, как и по какой цене выходить из рынка с убытком.
  3. Когда, как и по какой цене выходить из рынка с прибылью.

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

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

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

Какие входы и выходы считать оптимальными?

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

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

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

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

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

Научный подход к разработке систем

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

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

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

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

Также следует отметить, что немногие авторы проводят тестирование входов и выходов независимо друг от друга. Существует ряд интересных способов, позволяющих проводить тестирование изолированных компонентов системы. Один из них — использование набора стандартных стратегий входа и выхода, которые остаются фиксированными, в то время как данный вход, выход или другой компонент меняется. Например, при изучении моделей входа используется стандартизованная модель выхода без изменений для различных входов и их модификаций, и таким же образом для изучения выходов будет использоваться стандартизованная модель входа. Для трейдера будет немалым шоком использование для исследования входов генератора случайных чисел, спонтанно открывающего длинные и короткие позиции на различных рынках! Большинство трейдеров впали бы в панику от одной мысли о модели, основанной на выпадении кубиков, но на самом деле такие входы великолепны для жесткого тестирования стратегий выхода. Стратегия, способная выжать прибыль из случайных сделок, как ни странно, вполне может быть разработана, по крайней мере для индекса S&P 500 (Katz and McCormick, March, 1998, April, 1998). Испытания следует проводить так, чтобы разные методы входа и выхода можно было осмысленно сравнивать.

В общем, основные элементы научного подхода включают:

  1. Изолированные исследования различных элементов системы.
  2. Использование стандартных методик, позволяющих проводить достоверные сравнения.
  3. Статистическую оценку результатов.

Материалы и методы, необходимые для научного подхода

Прежде чем применять научный подход к изучению рынков, следует рассмотреть ряд факторов. Прежде всего, требуется целая вселенная достоверных данных для исторического тестирования и статистического анализа. Поскольку эта книга концентрируется на товарных биржах, в основе использованы данные по ценам на конец дня, поставляемые Pinnacle Data Corporation, которые включают сельскохозяйственные продукты, металлы, энергетические ресурсы, облигации, валюты и рыночные индексы. В книге не рассматривается внутридневная торговля, хотя это одна из основных областей наших интересов, которая, возможно, станет темой следующей книги. Помимо стандартных ценовых данных исследование влияния различных внешних факторов на рынок может потребовать весьма необычных данных. Например, данные об активности солнечных пятен (солнечное излучение влияет на ряд рынков, в частности на сельскохозяйственный) получены от Бельгийской королевской обсерватории.

Мало иметь огромное количество данных — необходимо моделирование одного или нескольких торговых счетов для проведения тестов. Для этого требуется торговый симулятор, т.е. пакет программ для создания счетов и ведения торговли на компьютере. Наиболее широко использовался торговый симулятор от Scientific Consultant Services, написанный на языке С++, рассчитанный на работу с портфелями акций и хорошо известный авторам. Кроме того, разнообразные возможности тестирования и построения графиков заложены в такие программы, как TradeStation фирмы Omega Research или SystemWriter Plus. Мы использовали в нашем анализе не только эти программы, но и MS Excel, которой пользуются очень многие.

Еще один важный момент — оптимизация параметров моделей. При проведении тестов часто необходимо настраивать параметры некоторых компонентов (например, модели входа, выхода или их частей), чтобы обнаружить наилучший набор параметров и/или увидеть, как поведение модели меняется со сменой параметров. Возможно проведение нескольких видов оптимизации параметров модели. При ручной оптимизации пользователь задает параметр, который будет варьироваться, и пределы его изменения; причем пользователь может одновременно управлять двумя или более параметрами, получая результаты в виде таблицы, показывающий влияние значений параметров на показатели системы. Другой метод — лобовая оптимизация, существующая в нескольких разновидностях: наиболее часто это прогонка каждого из параметров через все возможные значения. Если параметров много и их границы широки, прогонка может растянуться на годы. При этом лобовая оптимизация может быть вполне приемлема при малом количестве параметров и узких пределах их значений. Другие методы лобовой оптимизации не столь полны и не всегда способны найти оптимальный набор параметров, но работают гораздо быстрее. Последний из методов, используемый для мощной оптимизации (а в неумелых руках — для подгонки параметров под выигрыш в прошлом), — это генетические алгоритмы. Подходящий генетический алгоритм может быстро обнаружить хороший ответ (пусть даже не общий оптимум) даже из большого числа параметров с широкими пределами значений. Генетический оптимизатор — важный инструмент в арсенале разработчика торговых систем, но использоваться он должен осторожно, поскольку существует возможность «подгонки», т.е. получения набора параметров, «подогнанного» под исторические данные, который имеет небольшую ценность для торговли в будущем. В данной книге приведены методики статистической оценки результатов, тесты за пределами выборки и методики, фокусирующиеся на анализе целых портфелей, которые обеспечивают защиту от «подгонки» вне зависимости от используемого метода оптимизации.

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

Часть 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 

Симуляторы

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

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

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

Программирование симулятора

Вне зависимости от устройства (интегрированный или основанный на компонентах симулятор) в него должна быть введена логика системы, используемой пользователем. Язык программирования может быть или многоцелевым языком программирования, как С++ или FORTRAN, или собственным языком скриптов программы. Без содействия формального языка невозможно выразить торговые правила системы с достаточной для симуляции точностью. Необходимость в программировании того или иного вида не следует рассматривать как неизбежное зло — пользователь может приобрести много опыта, поскольку программирование заставляет выражать свои идеи упорядоченно и целенаправленно.

В качестве примера программирования логики торговой системы рассмотрим TradeStation, популярный интегрированный пакет от Omega Research, содержащий интерпретатор для собственного языка программирования, называемого Easy Language, обеспечивающий проведение тестов на исторических данных. Easy Language — собственный язык фирмы, основанный на Pascal (многоцелевом языке программирования). Как выглядит простая торговая система, запрограммированная на Easy Language? В качестве примера предлагаем код для системы простого пересечения скользящей средней:

Эта система открывает длинную позицию (один контракт) при открытии на следующий день, когда цена закрытия пересекает скользящую среднюю вверх, и короткую позицию (один контракт), когда цена закрытия пересекает скользящую среднюю вниз. Каждому приказу присваивается имя или идентификатор: А — на покупку, В — на продажу. Длина скользящей средней (Len) может задаваться пользователем или оптимизироваться программой.

Ниже та же система, запрограммированная на языке С++ с помощью набора инструментов C-Trader от Scientific Consultant Services, в состав которого входит торговый симулятор C++:

За исключением синтаксиса и обозначений, различия в применении С++ и Easy Language невелики. Наиболее важны сноски на текущий бар (cb) и на данный симулируемый торговый счет или ссылку на класс симулятора (ts) в версии на С++. Так, на C++ можно использовать любое количество симулируемых счетов; это важно при работе с портфелями и метасистемами (системами, управляющими счетами другой системы) и при разработке моделей, включающих скрытую адаптацию с движением вперед.

Выходные данные симулятора

Все хорошие торговые симуляторы создают выходные данные, содержащие разнообразную информацию о поведении моделируемого счета. Можно ожидать получения данных по чистой прибыли, количеству прибыльных и убыточных сделок, максимальным падениям капитала и прочим характеристикам системы даже при использовании самых простых симуляторов. Более продвинутые программы предлагают отчеты по максимальному росту капитала, среднему благоприятному и неблагоприятному движению рынка, статистическим оценкам и т.д. и т.п., не говоря уже о детальном анализе индивидуальных сделок. Высокоуровневые симуляторы могут также включать какие-либо показатели соотношения прибыли и риска, например годовое соотношение риска/прибыли (ARRR) или отношение Шарпа — важный показатель, широко используемый для сравнения эффективности различных портфелей, систем или фондов (Sharpe, 1994).

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

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

Отчеты об эффективности системы

В качестве примера итогового отчета об эффективности системы, мы приготовили два отчета, полученные при тестировании уже упоминавшейся системы пересечения скользящей средней. Табл. 2-1 представляет собой отчет о системе, написанной и проработанной на TradeStation, а табл. 2-2 — отчет о системе, созданной с помощью С-Trader. В обоих случаях параметр длины скользящей средней был установлен равным 4.

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

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

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

Различия в формате менее важны, чем в собственно заключениях. Эти различия возникают из-за разнообразия подходов и определений, заложенных в системах. Например, количество прибыльных сделок может по-разному определяться на одних и тех же данных различными системами ввиду разного определения прибыльности. Некоторые симуляторы считают выгодной сделку, в которой прибыль/убыток равны нулю; другие считают выгодными только сделки с положительным балансом. Это различие и влияет на подсчет сделок, и на значение средней прибыльной сделки, и на соотношение прибыльных/убыточных сделок. Подобным же образом среднее количество дней в сделке может меняться в зависимости от метода подсчета дней. Некоторые симуляторы включают в подсчеты входной день, другие — нет. Данные по доходности счета также могут различаться — например, они могут приводиться к процентам годовых или даваться в абсолютном виде.

Разница в содержании отчетов может быть и более значительной. Некоторые программы просто разбивают данные на результаты коротких позиций, длинных позиций и общие. Другие ведут анализ отдельно по сделкам в пределах выборки данных и вне ее. Дополнительное разделение проясняет картину; становится видно, как система, оптимизированная на одной выборке данных, будет себя вести за ее пределами. Проверка на данных, взятых из другого периода, обязательна для оптимизированных на некотором периоде систем. В некоторых отчетах присутствуют и другие важные показатели, такие как общее количество баров, максимальный подъем (показатель, противоположный максимальному падению капитала), максимальные благоприятное и неблагоприятное движения, максимальное и минимальное значения капитала на счете, прибыль в долларах за год, изменчивость торговли (в виде стандартного отклонения) и годовое соотношение риска/прибыли (вариант отношения Шарпа). Расчет статистических показателей, например т-критерия и его ассоциируемой вероятности, для отдельных тестов либо для множественных тестов и оптимизаций также является желательной чертой симулятора. Статистические функции, такие как т-тест и вероятности, важны потому, что помогают определить, действительно ли система отражает деятельность реального рынка или успех обусловлен случаем либо излишней подгонкой параметров системы под прошлые данные. Могут применяться многие дополнительные и, возможно, полезные методики анализа на основе информации, содержащейся в отчетах. Среди этих методов (Stendahl, 1999) — общие позитивные аутсайдеры, общие негативные аутсайдеры, селективная общая прибыль (за исключением выбросов), отношение убытков (максимальный убыток, деленный на общую прибыль), соотношение подъем/падение капитала, максимальный период простоя системы и прибыль стратегии «купи и держи» для сравнения с результатами торговой системы. Кроме того, в некоторых отчетах создается график состояния счета в зависимости от времени.

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

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

Отчеты для каждой сделки

Примеры отчетов для каждой сделки были созданы с использованием симуляторов TradeStation (табл. 2-3) и C-Trader toolkit (табл. 2-4). Оба отчета описывают упоминавшуюся ранее систему пересечения скользящей средней. Так как рассматривался период с сотнями сделок и полный отчет слишком длинный, из таблиц удалены большие объемы текста, помеченные многоточиями. Поскольку данные отчеты представлены только как иллюстрации, такие пропуски вполне допустимы.

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

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

Если отчет об эффективности обеспечивает обзор всего «леса», то отчет о каждой сделке заостряет внимание на отдельных «деревьях»: в хорошем отчете каждая сделка рассматривается детально. Каковы были максимальные отрицательные переоценки открытой позиции, какова была бы прибыль при идеальном выходе и какова была «настоящая» прибыль (или убыток) моделируемой сделки, была ли торговля достаточно последовательной, были ли новые сделки лучше или хуже более старых, как можно использовать опыт худших сделок для улучшения системы — вот вопросы, на которые нельзя ответить при обзоре только общей эффективности системы. Кроме того, отчет по каждой сделке может быть дополнительно обработан в виде таблицы, например для построения гистограмм (Sweeney, 1993). Гистограммы могут показать, какая часть потенциальных прибылей фиксируется при использовании данной стратегии выхода, и полезны при определении целей прибыли. Кроме того, тщательное изучение лучших и худших сделок может дать результаты, полезные для улучшения системы.

Эффективность симулятора

Торговые симуляторы могут сильно различаться по таким показателям, как мощность, емкость и скорость. Скорость важна при выполнении многих тестов или проведении сложных оптимизаций, например генетических. Скорость также важна при разработке систем для портфельной торговли или при использовании длинных внутридневных серий данных с тысячами сделок и сотнями тысяч числовых данных. В некоторых случаях от скорости симулятора зависит сама возможность проведения анализа: ряд задач требует поистине огромного объема расчетов, недоступного для «медленных» программ. Емкость симуляторов определяет ограничения объема задач (количество баров данных, которое может загружаться или объем кода самой системы). Мощность симулятора — показатель, определяющий, как сложные тесты и задания могут выполняться на базах данных цен товаров или на целых портфелях, что важно для серьезной профессиональной торговли. Достаточно мощный симулятор требуется, например, для использования многих торговых моделей, приведенных в этой книге.

Скорость

Наиболее важный фактор, влияющий на скорость работы системы, — природа используемого языка: скриптовый или программный, т.е. определение, является ли программа скриптом или используется в интерпретаторе. Современные компиляторы языков общего назначения, таких как С++, FORTRAN и Pascal/Delphi, переводят написанную пользователем программу в высокоэффективный машинный код, пригодный для прямого исполнения процессором; это делает пакеты с использованием таких языков и компиляторов весьма быстрыми. С другой стороны, собственные интерпретируемые языки, такие как Visual Basic for Applications и Easy Language, должны переводиться и подаваться в процессор построчно при исполнении сложного, насыщенного циклами исходного кода. Каков же возможный выигрыш в скорости для компилируемого языка по сравнению с интерпретируемым? Мы слышали о системах, которые после перевода с собственного языка на С++ стали работать в 50 раз быстрее!

Емкость

Если скорость в основном зависит от работы с языком (интерпретируемым или компилируемым), то емкость главным образом от используемого 16- или 32-битного программного обеспечения. Старые 16-битные программы часто зависят от предела в 64 кбайт, т.е. практически для тестирования системы может быть загружено не более 15 000 баров данных (около 4 дней тиковых или 7 недель 5-минутных данных S&P 500). Кроме того, если у системы код большого объема, будьте готовы получить сообщение, что программа с ней не может справиться. Современные продукты, написанные на FORTRAN или С++, работают с соответствующими компиляторами, что позволяет, например, загрузить для тестирования всю историю тиков S&P 500 c появления индекса в 1983 г., если, конечно, у компьютера достаточно памяти. Кроме того, практически нет ограничений на количество сделок, принимаемых системой, или на сложность и размер самой системы. Все современные компиляторы для FORTRAN, С++, Pascal/Delphi — полностью 32-битные программы, работающие под 32-битными операционными системами, такими как Windows 95, Windows NT или LINUX/UNIX. Любой симулятор, работающий на основе таких компиляторов, способен работать с огромными объемами данных без труда. Поскольку большинство программных пакетов постоянно совершенствуется, проблема емкости становится все менее и менее принципиальной.

Мощность

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

...