Джеффри Оуэн Кац и Донна Л. МакКормик. Энциклопедия торговых стратегий

FXWizard

Гуру форума
Джеффри Оуэн Кац Донна Л Маккормик. Энциклопедия торговых стратегий

ПРЕДИСЛОВИЕ

В этой книге собрана информация, необходимая каждому трейдеру, же- лающему повысить свою квалификацию. Как источник справочного ма- териала и руководство по разработке систем книга описывает много из- вестных методик, а также предлагает новые способы получения прибыли на рынке и преимущества в торговле. Кроме того, в книге содержатся рекомендации по улучшенным методам контроля риска, показаны рис- кованные и потенциально убыточные методики, способные привести к разорению. Освещены даже самые основы: как приобретать и представ- лять информацию, как вести тестирование систем на исторических дан- ных с помощью симуляторов, как безопасно проводить оптимизацию и как оценивать результаты всестороннего статистического анализа. В книге показаны преимущества хорошей механической торговой системы над другими торговыми методами.
Для всех трейдеров, за исключением немногих, системная торговля дает лучшие результаты, чем интуитивная торговля. Торговля по интуи- ции включает субъективные решения, которые часто бывают пристраст- ными и ведут к убыткам. Аффект, неуверенность, жадность и страх легко вытесняют знание и разум в роли ведущей торговлю силы. Кроме того, очень трудно протестировать торговый метод, где отсутствуют жесткие правила принятия решений. С другой стороны, системная торговля объек- тивна. В ней нет места эмоциям. При помощи запрограммированной ло- гики и представлений механические системы следуют действиям трейде- ра. Самое лучшее в них — возможность простого тестирования: плохую систему можно отбросить или скорректировать, а хорошую — улучшить. В этой книге приведена ценная информация, чрезвычайно полезная при проектировании, создании и тестировании прибыльной механической торговой системы. Хотя основной упор сделан на глубокий критический анализ различных факторов, которые, как считается, влияют на успех системы, рассмотрены и проанализированы также основные элементы полной механической торговой системы.
Чтобы считаться полными, механические торговые системы должны иметь методики входа и выхода. Методика входа должна определять под- ходящие моменты для входа в рынок, когда высока вероятность сделок с высоким соотношением риска и прибыли. Методика выхода должна за- щищать от излишних потерь капитала при неудачной сделке или разво- роте рынка, а также эффективно фиксировать прибыль при благоприят- ном движении рынка. В книге уделено достаточно внимания системати- ческому тестированию на исторических данных и оценке систем, мето- дов и стратегий выхода. Даже трейдер, уже имеющий приемлемую стра- тегию или систему, возможно, сумеет найти нечто полезное для ее улуч- шения, увеличения прибылей и снижения рисков.
Кроме того, в книге приведены результаты тестов торговых систем для портфелей, состоящих из нескольких финансовых инструментов. Как показано, анализ портфельных торговых систем не представляет значи- тельной сложности, хотя и не так прост, как анализ одного торгового ин- струмента. Показана и доказана простота вычисления графиков роста капитала, максимальных падений капитала, соотношений риска и прибы- ли, доходности системы, количества сделок и других показателей, важ- ных для оценки системы управления портфелем акций или товаров. Так- же описан процесс проведения тестирования и оптимизации со смеще- нием вперед и других методов испытания и оптимизации портфелей. На- пример, приводится инструкция по поиску параметров, которые улучша- ют прибыль (или лучшее отношение Шарпа, или любой другой показа- тель эффективности пакета) по каждому инструменту в отдельности и по всему портфелю в целом. Особенно полезен этот материал будет для не- больших институциональных трейдеров, желающих вести системную тор- говлю несколькими инструментами в целях увеличения диверсификации, снижения риска и повышения ликвидности.
Кроме того, чтобы сохранить объективность и полную беспристраст- ность всех методов тестирования разнообразных систем, мы применили наш академический и научный опыт для исследования методик входа и выхода. Для подтверждения результатов тестов использовались статисти- ческие методы, на которых основываются успешные торговые стратегии.
Чтобы сделать наши исследования полезными для всех, детально об- суждаются все логические построения, лежащие в основе каждой стра- тегии входа или выхода. Для тех, кто желает повторить и расширить наши разработки, приведены коды программ.
Поскольку основа торговой системы всегда состоит из двух компонен- тов, книга, естественно, включает две части: «Исследование входов» и «Исследование выходов». Рассмотрение отдельных технологий входов и выходов, например нейронных сетей, проводится в контексте разработ- ки конкретных стратегий входа или выхода. Введение содержит указа- ния по фундаментальным принципам использования научного подхода при разработке торговых систем. Первая часть книги — «Рабочие инст- рументы» — содержит основную информацию, необходимую всем сис- темным трейдерам. В Заключении подводятся итоги исследований всех систем, даются советы по их оптимальному применению, что кладет на- чало дальнейшим исследованиям. В конце книги приведены ссылки и ре- комендуемые материалы.
Мы хотели бы пояснить, что данная книга является продолжением и развитием цикла статей, написанных нами для журнала Technical Analysis of Stocks and Commodities начиная с 1996 г.

Джеффри Оуэн Кац и Донна Л. МакКормик
 
Последнее редактирование модератором:

FXWizard

Гуру форума
ВВЕДЕНИЕ

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

FXWizard

Гуру форума
ЧТО ТАКОЕ ПОЛНОСТЬЮ МЕХАНИЧЕСКАЯ ТОРГОВАЯ СИСТЕМА?

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

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

FXWizard

Гуру форума
КАКИЕ ВХОДЫ И ВЫХОДЫ СЧИТАТЬ ОПТИМАЛЬНЫМИ?

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

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

FXWizard

Гуру форума
НАУЧНЫЙ ПОДХОД К РАЗРАБОТКЕ СИСТЕМ

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

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

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

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

FXWizard

Гуру форума
МАТЕРИАЛЫ И МЕТОДЫ, НЕОБХОДИМЫЕ ДЛЯ НАУЧНОГО ПОДХОДА

Прежде чем применять научный подход к изучению рынков, следует рас- смотреть ряд факторов. Во-первых, требуется целая вселенная достоверных данных для исторического тестирования и статистического анализа. Поскольку эта книга концентрируется на товарных биржах, в основе использованы данные по ценам на конец дня, поставляемые Pinnacle Data Corporation, которые включают сельскохозяйственные продукты, метал- лы, энергетические ресурсы, облигации, валюты и рыночные индексы. В книге не рассматривается внутридневная торговля, хотя это — одна из основных областей наших интересов, которая, возможно, станет темой следующей книги. Помимо стандартных ценовых данных исследование влияния различных внешних факторов на рынок может потребовать весь- ма необычных данных. Например, данные об активности солнечных пятен (солнечное излучение влияет на ряд рынков, в частности на сельскохозяйственный) получены от Бельгийской Королевской Обсерватории.
Мало иметь огромное количество данных — необходимо моделирование одного или нескольких торговых счетов для проведения тестов. Для этого требуется торговый симулятор, т.е. пакет программ для создания счетов и ведения торговли на компьютере. Наиболее широко использовался торговый симулятор от Scientific Consultant Services, написанный на языке C+ +, рассчитанный на работу с портфелями акций и хорошо известный авторам. Кроме того, разнообразные возможности тестирования и построения графиков заложены в такие программы, как TradeStation фирмы Omega Research или SystemWriter Plus. Мы использовали в нашем анализе не только эти программы, но и MS Excel, которой пользуются очень многие.
Еще один важный момент — оптимизация параметров моделей. При проведении тестов часто необходимо настраивать параметры некоторых компонентов (например, модели входа, выхода или их частей), чтобы об- наружить наилучший набор параметров и/или увидеть, как поведение модели меняется со сменой параметров. Возможно проведение нескольких видов оптимизации параметров модели. При ручной оптимизации пользователь задает параметр, который будет варьироваться, и пределы его изменения; причем пользователь может одновременно управлять двумя или более параметрами, получая результаты в виде таблицы, показывающий влияние значений параметров на показатели системы. Другой метод — «лобовая» оптимизация, существующая в нескольких разновидностях: наиболее часто — это прогонка каждого из параметров через все возможные значения. Если параметров много и их границы широки, про- гонка может растянуться на годы. При этом лобовая оптимизация может быть вполне приемлема при малом количестве параметров и узких пределах их значений. Другие методы лобовой оптимизации не столь полны и не всегда способны найти оптимальный набор параметров, но работают гораздо быстрее. Последний из методов, используемый для мощной оп- тимизации (а в неумелых руках — для подгонки параметров под выигрыш в прошлом), — это генетические алгоритмы. Подходящий генетический алгоритм может быстро обнаружить хороший ответ (пусть даже не об- щий оптимум) даже из большого числа параметров с широкими предела- ми значений. Генетический оптимизатор — важный инструмент в арсенале разработчика торговых систем, но использоваться он должен осторожно, поскольку существует возможность «подгонки», т.е. получения на- бора параметров, «подогнанного» под исторические данные, который имеет небольшую ценность для торговли в будущем. В данной книге приведены методики статистической оценки результатов, тесты за пределами выборки и методики, фокусирующиеся на анализе целых портфелей, которые обеспечивают защиту от «подгонки» вне зависимости от используемого метода оптимизации.

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

FXWizard

Гуру форума
ЧАСТЬ I
Рабочие инструменты
Введение

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

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

ВИДЫ ДАННЫХ

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

FXWizard

Гуру форума
ВРЕМЕННЫЕ МАСШТАБЫ ДАННЫХ

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

FXWizard

Гуру форума
КАЧЕСТВО ДАННЫХ

Плохие данные могут привести любой анализ в состояние полного хаоса, дать потенциально убыточные заключения и привести к потере драгоценного времени. Поэтому для проведения тестов требуется применять только лучшие из доступных данных. Некоторые прогностические системы, например основанные на нейронных сетях, могут быть чрезвычайно чувствительны к нескольким отклонениями, ошибочным данным; в таких случаях необходимость в чистых данных особенно высока. Время, потраченное на поиск и окончательную чистку хороших данных, не будет потеряно.
Ошибки данных принимают много различных форм, и некоторые из них весьма заметны. При торговле в реальном времени порой попадаются тики с откровенно ошибочными, попросту невозможными ценами. В течение секунды индекс 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—1. Результаты программы по проверке данных непрерывных
фьючерсов на S&P 500 от Pinnacle

attachment.php

Таблица 1—2. Результаты программы по проверке данных постоянных
контрактов AAPL

attachment.php

В отличие от предыдущей выборки, здесь данные за два дня были по- мечены как имеющие необъяснимые логические ошибки. В одном случае цена открытия равнялась нулю и была ниже минимальной цены. В другом случае обнаружилась аномальная величина дневного диапазона цен (что может быть как ошибкой, так и последствием аномальной торговли). В нескольких случаях отмечалось сильное отклонение цены закрытия, возможно ввиду нескорректированных дроблений акций. Повторяющихся или перепутанных дат не обнаружено, но немало дней было пропущено. В данном случае пропущенные точки соответствуют праздникам и, следовательно, просто указывают на разный подход к работе с данными; мы обычно по ряду причин заполняем праздничные дни данными предыдущего дня. При том что последовательность включает котировки только с 1/2/97 по 11/6/98 (котировки S&P 500 — с 1/3/83 по 5/21/98), обнаружение ряда серьезных ошибок с помощью довольно простой процедуры не может не настораживать.
Суть в том, что на этих примерах показана важность приобретения качественных данных от поставщика, имеющего хорошую репутацию и ведущего серьезную работу. Это сэкономит время, обеспечит надежные, чистые данные для разработки и тестирования систем и для торговли в дальнейшем. Более глубокий обзор проблем качества данных, в том числе и то, как, собственно, создаются рыночные котировки, как их передают и хранят, можно найти у Джурика (Jurik, 1999).
 

Вложения

  • pic1_1.png
    pic1_1.png
    78,7 КБ · Просмотры: 348
  • pic1_2.jpg
    pic1_2.jpg
    31,5 КБ · Просмотры: 349

FXWizard

Гуру форума
ПОСТАВЩИКИ И ИСТОЧНИКИ ДАННЫХ

Сегодня существует множество источников для получения данных. Дан- ные можно получать от поставщиков за отдельную плату, скачивать с различных бирж, получать из различных баз данных, доступных в Интернете и на компакт-дисках.
Поставщики, взимающие дополнительную плату, такие как 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).
Данные не обязательно покупать у коммерческих поставщиков. Иног- да их можно получить непосредственно с места событий — различные биржи порой поставляют данные потребителям напрямую. Данные по опционам можно найти в Интернете на сайте Чикагской торговой биржи (СВОТ). Когда вводится новый контракт, биржа публикует всю актуальную информацию по данному контракту. В некоторых случаях это — единственный способ получить доступ к данным быстро и дешево.
В конце концов необъятное количество баз данных может быть най- дено в Интернете с помощью броузера или ftp-клиента. Сейчас практически все доступно в онлайне: например, министерства финансов поддерживают базы данных по экономическим показателям и индикаторам циклов деловой активности. NASA — замечательный источник для всевозможных солнечных и астрономических данных. Национальный центр климатических данных (NCDC) и Национальный центр геофизических данных (NGDC) предлагают данные о погоде и геофизические показатели. Для любителя путешествовать по Сети найдется необъятное изоби- лие данных в самых разнообразных форматах. Здесь, впрочем, лежит другая проблема — для поиска нужен некоторый уровень умения и, возможно, навыки в программировании и написании скриптов, а также много времени на поиск, переформатирование и очистку данных. Поскольку «время — деньги», лучше всего положиться на поставщика данных с хорошей репутацией для приобретения основных котировок и использовать Интернет и другие источники для получения более экзотических и труднодоступных данных.
Дополнительные источники данных также включают базы, доступные в библиотеках и на компакт-дисках. ProQuest и другие профессиональные базы с возможностью получения полного текстового содержания часто бывают доступны в общественных библиотеках, так что данные можно скопировать на принесенную с собой дискету. Не забывайте о периодических изданиях, таких как Investor's Business Daily, Barton's и The Wall Street Journal; они могут быть замечательными источниками не- которых видов информации и во многих библиотеках доступны в виде микрофильмов.
Наиболее удобно хранить данные в ASCII-текстовом формате. Этот формат легко конвертируется и читается разнообразными приложениями — от текстовых редакторов до программ построения графиков.
 

FXWizard

Гуру форума
ГЛАВА 2
Симуляторы

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

ВИДЫ СИМУЛЯТОРОВ

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

ПРОГРАММИРОВАНИЕ СИМУЛЯТОРА

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

{Простая система пересечения скользящей средней в Easy Language}
Inputs: Len(4); {параметр длины скользящей средней)
If If
{Close > Average{Close, Len)) And {Close[1] <= Average(Close, Len)[1]} Then
Buy ("A") 1 Contract At Market; {покупает на открытии следующего дня} (Close <= Average(Close, Len)) And
(Close[1] > Average{Close, Len}[1]) Then
Sell ("B") 1 Contract At Market; {продает на открытии следующего дня}


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

//простая система пересечения скользящих средних в C++
len = parms[l]; // параметр длины скользящей средней if (cls [cb] > Average(cls, len, cb} &&
cls[cb-1] <= Average(cls, len, cb-1))
ts.buyopen ('A', 1); // покупает на открытии следующего дня
if (cls[cb] <= Average(cls, len, cb) && cls[cb-1] > Average(cls, len, cb-1))
ts.sellopen ('B', 1); // продает на открытии следующего дня


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

FXWizard

Гуру форума
ВЫХОДНЫЕ ДАННЫЕ СИМУЛЯТОРА

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

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

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

Таблица 2—1. Отчет о эффективности системы пересечения скользящей
средней (TradeStation)

attachment.php

аблица 2—2. Отчет об эффективности системы пересечения скользящей
средней (C-Trader)

attachment.php

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

Вложения

  • table2_1.jpg
    table2_1.jpg
    66,3 КБ · Просмотры: 326
  • table2_2.jpg
    table2_2.jpg
    69,5 КБ · Просмотры: 334
Последнее редактирование:

FXWizard

Гуру форума
Отчеты для каждой сделки

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

Таблица 2—3. Отчет для каждой сделки, выданный TradeStation для системы пересечения скользящей средней (фрагмент)

attachment.php

Таблица 2—4. Отчет для каждой сделки, выданный С-Trader Toolkit для системы пересечения скользящей средней (фрагмент)

attachment.php

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

Вложения

  • tab2_3.png
    tab2_3.png
    64,3 КБ · Просмотры: 326
  • tab2_4.png
    tab2_4.png
    135,4 КБ · Просмотры: 330

FXWizard

Гуру форума
ЭФФЕКТИВНОСТЬ СИМУЛЯТОРА


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

Скорость

Наиболее важный фактор, влияющий на скорость работы системы, — природа используемого языка: скриптовый или программный, т.е. определение,

attachment.php


Рисунок 2-1. Гистограмма неблагоприятных движений.​

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

Вложения

  • pic2_1.png
    pic2_1.png
    71,2 КБ · Просмотры: 335

FXWizard

Гуру форума
Емкость

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

Мощность

Различия в мощности симуляторов главным образом зависят от языка программирования. Для начала рассмотрим язык, но не в аспекте скорости компилируемых и интерпретируемых языков, а в аспекте его возможностей. Можно ли изящно и обстоятельно запрограммировать самую сложную торговую идею? Как правило, примитивные языки не дают всех возможностей, необходимых для кодирования наиболее сложных торговых стратегий. К сожалению, наиболее мощные языки сложнее всего изучать. Но если человеку удалось овладеть таким языком, как C++, возмож- ным становится практически все. Ваш текстовый процессор, программа работы с таблицами, броузер и сама операционная система, скорее всего, были исходно написаны на C++ или его предшественнике — Си. Такие языки, как C++ и Object Pascal (основа Borland Delphi), расширяемы и могут легко быть приведены в соответствие с требованиями разработки торговых систем с помощью использования библиотек и дополнительных компонентов. Языки Visual Basic и Easy Language, хотя и не обладают мощностью многоцелевых объектно-ориентированных языков вроде C++ и Object Pascal, более легки в изучении и имеют большинство необходимых возможностей. Гораздо слабее и не вполне достаточны для разработчика продвинутых систем макроязыки, встроенные в ряд популярных программ построения графиков, например MetaStock. Как правило, чем мощнее используемый язык, тем мощнее симулятор.
Вопросы оформления также влияют на мощность симулятора, особен- но важна модульность и расширяемость. Симуляторы, использующие C++ или Delphi (Object Pascal) как основной язык, чрезвычайно расширяемы и модульны, поскольку таковы сами языки, спроектированные «снизу вверх». Библиотеки классов позволяют определять новые типы данных и операторов. Компоненты могут обеспечивать функции в готовых блоках, например управление базами данных или построение графиков. Даже «старинные» библиотеки, такие как Numerical Algorithms Group Library, International Mathematics and Statistics Library и Numerical Recipes Library, могут обеспечить самые разнообразные потребности. Модули, называемые User Functions могут быть написаны на Easy Language, а функции, написанные на других языках (включая C++), могут быть вызваны, если они записаны в виде DLL (динамической библиотеки ссылок). Макроязыки, с другой стороны, не столь гибки, что сильно лимитирует их эффек- тивность для разработки продвинутых систем. С нашей точки зрения, возможность использования модулей, написанных на другом языке, аб- солютно необходима: у разных языков разные «акценты», и даже при ис- пользовании мощного языка вроде C++ имеет порой смысл обратиться к модулям, созданным на другом языке, например таком, как Prolog (язык, разработанный для написания экспертных систем).
Еще одно важное свойство симуляторов, не связанное с языками программирования, — способность симулятора работать не только с индивидуальными финансовыми инструментами, но и с портфелями. Многие продукты не имеют возможности выполнять оптимизацию целых портфелей, хотя порой это достижимо при помощи дополнительных модулей. С другой стороны, хорошо организованный симулятор, как правило, позволяет мо- делировать торговлю портфелем различных финансовых инструментов.
 

FXWizard

Гуру форума
НАДЕЖНОСТЬ СИМУЛЯТОРОВ

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

ВЫБОР ПРАВИЛЬНОГО СИМУЛЯТОРА

Если вы серьезно хотите заниматься разработкой продвинутых торговых систем, торговать сильно диверсифицированными портфелями, проводить тестирование индивидуальных контрактов или опционов, вам нужно собраться с силами для изучения программирования — вам нужен симулятор, созданный с помощью языков программирования общего назначения, таких как C++ или Object Pascal. Такие симуляторы имеют открытую архитектуру, позволяющую использовать множество дополнений и библиотек: библиотеки по техническому анализу, например от FM Labs (609-261-7357) и Scientific Consultant Services (516-696-3333); библиотеки общих числовых алгоритмов, например от Numerical Recipes (800-872- 7423), Numerical Algorithms Group (NAG) (44-1865-511-245) и International Mathematics and Statistics Library (IMSL), в которых хорошо освещена статистика, линейная алгебра, спектральный анализ, дифференциальные уравнения и другие математические приложения. Продвинутые симуляторы с использованием общих языков программирования также доступны целому миру компонентов и графических средств управления, покрывающих все аспекты от сложного построения графиков и представления данных до продвинутого управления базами данных, и при этом совместимы с C++ Builder и Delphi, а также с Visual Basic и Visual C++.
Если же вам нужно нечто менее трудоемкое, выбирайте полные интегрированные решения. Убедитесь, что язык симулятора позволяет ис- пользовать процедуры, вызываемые по необходимости из DLL. Остерегайтесь продуктов, нацеленных в основном на построение графиков и с ограниченными возможностями программирования, если вы собираетесь разрабатывать, тестировать на исторических данных и использовать в торговле механические торговые системы, значительно отличающиеся от традиционных индикаторов.

СИМУЛЯТОРЫ, ИСПОЛЬЗОВАННЫЕ В ЭТОЙ КНИГЕ

Мы предпочитаем использовать симуляторы, основанные на практике современного объектно-ориентированного программирования. Одна из причин такого выбора состоит в том, что объектное ориентирование упрощает создание нужного количества моделируемых счетов, каким бы оно ни было. Это в особенности полезно при моделировании торговой системы, управляющей целым портфелем товаров или акций, как это сделано в большинстве тестов в данной книге. Объектно-ориентированные симуляторы также хороши для построения адаптивных самооптимизирующихся систем, в которых иногда требуется использовать внутреннее моделирование. Кроме того, такие программы позволяют достаточно просто создавать метасистемы (системы, принимающие решения на основе графи- ков изменения капитала других систем). Например, метасистемами мож- но считать модели распределения активов, поскольку они динамически меняют распределение средств между отдельными торговыми система- ми или счетами. Хороший объектно-ориентированный симулятор может генерировать графики изменения капитала портфелей и другую информацию для создания и тестирования на исторических данных систем распределения активов, работающих на основе множественных торговых систем. Из этих соображений, а также в силу привычки большинство тестов в этой книге проведены с использованием C-Trader tookit. Для того чтобы почерпнуть полезные знания из этой книги, не требуются познания в C++ и программировании. Логика любой системы или элемента системы будет подробно рассматриваться в тексте.
 
Последнее редактирование:

FXWizard

Гуру форума
ГЛАВА 3
Оптимизаторы и оптимизация

Прекрасно разрабатывать торговые системы, не задумываясь об оптимизации. Но в реальности создание надежной системы — путь проб и оши- бок, на котором какие-либо формы оптимизации неизбежны. Оптимизатор присутствует всегда — если не на поверхности, то в глубине процесса.
Оптимизатор как таковой — это программа или алгоритм, пытающийся найти лучшее из возможных решений задачи; оптимизация — процесс поиска, подбора этого решения. Оптимизатор может быть отдельной программой, возможно, выполненной в виде класса C++, объекта Delphi или функции ActiveX. Мощные продвинутые оптимизаторы часто создаются в виде компонентов, встраиваемых в программы, которые будет разрабатывать пользователь. Менее сложные оптимизаторы, например встреча- емые в программах построения графиков высокого уровня, — обычно простые алгоритмы, занимающие несколько строчек программного кода. Поскольку любое решение, приводящее к оптимизации, является оптимизатором, «оптимизация» не обязательно связывается с компьютерами — оптимизатором может быть и человек, занятый решением задачи! Надо сказать, что человеческий мозг — одна из наилучших эвристических систем на земле!

ЧТО ДЕЛАЮТ ОПТИМИЗАТОРЫ

Оптимизаторы существуют для поиска лучшего возможного решения задачи. Что под этим понимается? Прежде чем ответить на этот вопрос, давайте сначала проясним, что же является решением. В торговле на бирже под решением понимается некий набор правил торговли и, возможно, системных параметров.
У всех торговых систем есть не менее двух правил (правило входа и правило выхода), и у большинства имеется один или несколько параметров. Правила содержат логику системы и обычно имеют вид команд типа «если-то» на языке, на котором написана торговая система. Параметры определяют поведение описанной в правилах логики; они могут включать длины скользящих средних, важности связей в нейронной сети, пороги сравнений, уровни защитных остановок и цели фиксации прибыли и т.д. Простая система пересечения скользящей средней, использованная как пример в предыдущей главе, имеет два правила: одно — для приказа на покупку, другое — для приказа на продажу. У нее также был один параметр — длина скользящего среднего. Правила и параметры полностью определяют систему и ее поведение. Для получения лучшего эффекта от торговой системы может потребоваться изменение параметров и формулировок правил.
Нет сомнения, что одни сочетания правил и параметров, которые определяют системы, работают хорошо, а другие — плохо; т.е. решения бывают разного качества. Хорошее качество модели или решения, измеренное относительно некоего стандарта, называется пригодностью. Противоположность пригодности, т.е. показатель неадекватности решения, называется расходом.
На практике пригодность определяется функцией пригодности — блоком программы, который рассчитывает показатель относительной «привлекательности» решения. Функция может быть запрограммирована для определения пригодности именно так, как пожелает трейдер: например, пригодность можно определять как общую прибыль за вычетом максимального падения капитала. Функция расходов устроена аналогично, но чем выше ее значение, тем хуже работает система. Сумма квадратов оши- бок, часто вычисляемая при использовании систем с нейронными сетями или линейной регрессией, может служить примером функции расходов.
Теперь можно определить наилучшее возможное решение задачи: это решение, имеющее максимальную пригодность или минимальный рас- ход. Оптимизаторы пытаются найти лучшее решение проблемы с помо- щью поиска максимума функции пригодности или минимума функции расхода.
Лучшее возможное решение задачи может быть найдено разнообразными способами. В некоторых случаях задача может быть решена простым методом проб и ошибок, особенно если поиск решения не полностью автоматизирован, а проводится «вручную». В других случаях могут потребоваться сложные процедуры и алгоритмы. Например, симуляция процесса эволюции (в генетическом оптимизаторе) — очень мощный метод поиска качественных решений для сложных задач. В некоторых случаях лучшее решение — аналитическая (вычислительная) процедура, например метод сопряженных градиентов. Аналитическая оптимизация — эффективный подход для задач с гладкими (дифференцируемыми) функциями пригодности, например задач, встречающихся при обучении нейронных сетей или разработке множественных моделей линейной регрессии.
 

FXWizard

Гуру форума
КАК ИСПОЛЬЗУЮТСЯ ОПТИМИЗАТОРЫ

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

ВИДЫ ОПТИМИЗАТОРОВ

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

Скрытые оптимизаторы

Бывает, что нельзя кликнуть мышкой на кнопку с надписью «Оптимизировать». Нет команды, которую можно было бы отдать программе — да нет ни самой программы, ни компьютера вообще. Значит ли это, что оп- тимизации не происходит? Нет. Даже при отсутствии видимого оптимизатора и признаков оптимизации процесс идет сам по себе — это называется скрытой оптимизацией. Все происходит таким образом: трейдер испытывает набор правил, основанный на некоторых идеях, касающихся рынка. Результаты системы неудовлетворительны, и трейдер перерабатывает идеи, меняет правила и снова тестирует систему, получая лучший результат. Повторив свои действия несколько раз, он получает систему, которой можно доверить реальную торговлю. Можно ли считать эту сис- тему оптимизированной? Поскольку никакие правила или параметры не подвергались модификации с помощью компьютерных программ, кажется, что трейдер с успехом разработал неоптимизированную систему. Но при этом испытывалось более одного варианта параметров, что привело к выбору оптимального решения — следовательно, система все-таки была оптимизирована! Любая форма решения задачи, где рассматриваются множественные варианты, из которых выбирается один, дефакто может считаться оптимизацией. Мозг трейдера, использующий мысленные алгоритмы решения задач, например эвристические алгоритмы проб и оши- бок, является мощнейшим оптимизатором. Это означает, что оптимизация присутствует всегда и всегда работает; другого выхода просто не существует!
 

FXWizard

Гуру форума
Оптимизаторы с лобовым подходом

Оптимизатор с лобовым подходом определяет оптимальное решение путем систематического перебора всех потенциальных вариантов, т.е. сочетаний правил, параметров или того и другого вместе. Поскольку требуется проверить все варианты, оптимизация может быть чрезвычайно медленной, и, тем медленнее она идет, чем больше комбинаций подлежит рассмотрению. Таким образом, оптимизация с лобовым подходом подвержена действию правил «комбинаторного взрыва». Насколько же медленна оптимизация с лобовым подходом? Рассмотрим случай, когда у нас есть четыре параметра и каждый из них может принимать одно из 50 значений. Лобовая оптимизация потребует перебрать в тестах 504 (около б миллионов) сочетаний параметров для поиска одного идеального; если (как, например, характерно для TradeStation) каждый тест займет 1,62 с, то весь процесс займет около 4 месяцев. Этот подход не очень практичен, особенно при большом количестве параметров и их значений, а также в том случае, если, кроме оптимизации, у вас есть и другие интересы в этой жизни. Тем не менее оптимизация с лобовым подходом полезна и эффективна; при правильном использовании она всегда находит самый лучший вариант, так что лобовой подход предпочтителен для задач, где количество комбинаций можно перебрать за несколько минут, а не за месяцы и годы.
Для оптимизации с лобовым подходом не требуется длинных программ, обычно используются простые циклы. Параметры изменяются от начального до конечного значения с определенным шагом при помощи оператора For loop (С, C++, Бейсик, Pascal/Delphi) или Do loop (FORTRAN). Оптимизатор с лобовым подходом для двух параметров, написанный на современном диалекте Бейсика, может выглядеть примерно так:

BestFitness = -1.0E30
For Parml = Parm1Start To Parm1Stop By Parm1lncr
For Parm2 = Parm2Start To Parm2Stop2 By Parm2Incr RunSystem (Parm1, Parm2, GlobalData) CurrentFitness = CalcFitness (GlobalData) WriteProgressLine (GlobalData)
If CurrentFitness > BestFitness Then
End If Next Parm2
Next Parm1
CurrentFitness = BestFitness BestParm1 = Parm1
BestParm2 = Parm2


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

{ Система пересечения двух скользящих средних в Easy Language } Inputs: LenA(4), LenB(l0);
If (Average(Close, LenA) > Average(Close, LenB)) And
(Average(Close, LenA)[1] <= Average(Close, LenB)[1] ) Then Buy ("A") 1 Contract at Market;
If (Average(Close, LenA) <= Average (Close, LenB)) And (Average(Close, LenA)[1] > Average (Close, LenB)[1]) Then
Sell ("B") 1 Contract at Market;


Система была оптимизирована изменением периода первой скользящей средней (LenA) от 2 до 10 с шагом в 2. Период второй скользящей средней (LenB) оптимизировался от 2 до 50 с тем же шагом. Шаг был принят бо- лее 1, чтобы испытывалось менее 200 сочетаний параметров (TradeStation может хранить данные не более чем о 200 оптимизационных тестах). Поскольку были исследованы не все возможные сочетания параметров, оптимизация не была проведена идеально; лучшее значение могло оказаться пропущенным при поиске. Таким образом, оптимизация проходила в 125 тестов, что заняло 3 мин. 24 с времени для обработки данных за 5 лет исторических данных на конец дня на компьютере с процессором Intel 486 частотой 66 МГц. Полученные результаты были загружены в таблицу Excel и сортировались по общей прибыли. В табл. 3-1 приведены различные показатели эффективности для 25 лучших вариантов.
В таблице: LENA означает период короткой скользящей средней, LENB — период длинной скользящей средней, ЧИСТ. — чистую прибыль, Д.ПРИБ, — чистую прибыль для длинных позиций, К.ПРИБ. — чистую при- быль для коротких позиций, Ф.ПРИБ. — фактор прибыли, ДОХ — общую (не годовую) доходность счета, МаксПК — максимальное падение капи- тала, СДЕЛ — общее количество совершенных сделок, ПРИБ % — процент прибыльных сделок.
Поскольку оптимизация — проблема поиска и нахождения решений, то порой найденные решения оказываются неожиданными, как случилось и в данном примере. Привычная трейдерская мудрость гласит: «Тренд— твой друг». При этом если вторая скользящая средняя имеет период меньше первого, то наиболее выгодные сделки в табл. 1-3 совершены против тренда. Эти выгодные контртрендовые сделки могли быть не обнаружены, если бы для поиска не использовалась оптимизационная процедура.

Таблица 3—1. Лучшие 25 решений при оптимизации с лобовым подходом с
использованием TradeStation

attachment.php
 

Вложения

  • tab3_1.jpg
    tab3_1.jpg
    65,6 КБ · Просмотры: 305

FXWizard

Гуру форума
Оптимизация под управлением пользователя

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