Д.Катс.Д.Маккормик.Энциклопедия торговых стратегий. Донна л. Маккормик
Скачать 5.96 Mb.
|
ГЛАВА 2 СИМУЛЯТОРЫ 39 Отчеты для каждой сделки Примеры отчетов для каждой сделки были созданы с использованием си- муляторов TradeStation (табл. 2-3) и C-Trader toolkit (табл. 2-4). Оба отчета описывают упоминавшуюся ранее систему пересечения скользящей сред- ней. Так как рассматривался период с сотнями сделок, и полный отчет слишком длинный, из таблиц удалены большие объемы текста, помечен- ные многоточиями. Поскольку данные отчеты представлены только как иллюстрации, такие пропуски вполне допустимы. В отличие от отчета об эффективности, дающего общий обзор поведе- ния торговой системы, детальный отчет, или отчет для каждой сделки, рассматривает в подробностях каждую из сделок, проведенную с модели- руемым счетом. Минимальный отчет сопровождает каждую из сделок, включая даты входа и выхода (и время, если используются внутридневные данные), цены входа и выхода, позиции (длинные или короткие, количе- ство контрактов) и прибыль или убыток от каждой сделки. Более обшир- ный отчет для каждой сделки также будет включать информацию по виду использованного приказа (стоп-приказ, лимитный или рыночный приказ), по какой цене торгового дня приказ был исполнен (в начале, при закрытии или посередине), количество дней в каждой сделке, состояние счета на на- чало каждой сделки, максимальные благоприятные и неблагоприятные дви- жения за каждую сделку и состояние счета при выходе из каждой сделки. Таблица 2—3. Отчет для каждой сделки, выданный TradeStation для системы пересечения скользящей средней (фрагмент) BOOK_CH5 SP.LNG-Daily 910103 - 960103 Дата Вид Кол-во Цена Назв. сигнала Приб./убыт. входа Всего 03/13/91 Продаж. 1 511,75 В 03/14/91 К. вых. 1 516,75 А $ -2500.00 $ -2500.00 03/14/91 Покуп. 1 516,75 А 03/18/91 Дл. вых. 1 511,95 В $ -2400.00 $ -4900.00 03/18/91 Продаж. 1 511,95 В 03/25/91 К. вых. 1 507,45 А $ 2250.00 $ -2650.00 03/25/91 Покуп. 1 507,45 А 03/29/91 Дл. вых. 1 517,10 В $ 4825.00 $ 2175.00 03/29/91 Продаж. 1 517,10 В 04/03/91 К. вых. 1 519,85 А $ -1375.00 $ 800.00 04/03/91 Покуп. 1 519,85 А 04/08/91 Дл. вых. 1 514,60 В $ -2625.00 $ -1825.00 04/08/91 Продаж. 1 514,60 В 04/09/91 К. вых. 1 517,75 А $ -1575.00 $ -3400.00 04/09/91 Покуп. 1 517,75 А 04/10/91 Дл. вых. 1 513,15 В $ -2300.00 $ -5700.00 04/10/91 Продаж. 1 513,15 В 04/12/91 К. вых. 1 519,35 А $ -3100.00 $ -8800.00 04/12/91 Покуп. 1 519,35 А 04/22/91 Дл. вых. 1 523,10 В $ 1875.00 $ -6925.00 04/22/91 Продаж. 1 523,10 В 05/02/91 К. вых. 1 519,65 А $ 1725.00 $ -5200.00 Таблица 2—4. Отчет для каждой сделки, выданный С-Trader Toolkit для системы пересечения скользящей средней (фрагмент) СДЕЛКИ В ПРЕДЕЛАХ ВЫБОРКИ Дата Поз. Цена Когда вид Опред. Дата Цена Когда Вид Опред. Баров Приб./убыт Благопр. Неблагопр. Всего входа входа ордера входа выхода выхода ордера выхода сделки сделки макс. макс. 910527 910528 910607 910613 9 1 0 6 1 4 9 1 0 6 1 8 9 1 0 6 2 0 9 5 1 2 2 5 -1 1 -1 1 -1 1 -1 1 4 9 2 . 1 5 0 4 9 2 . 1 5 0 501.250 495.30 492.200 496.900 491.800 691.500 О О О О О О О О м м м м м м м м В: А: В: А : В: А : В: А : 910528 910607 910613 910614 910618 910620 910625 960101 4 9 2 . 1 5 0 501.250 4 9 5 . 3 0 0 4 9 2 . 2 0 0 4 9 6 . 9 0 0 491.800 4 9 0 . 6 5 0 6 9 2 . 6 0 0 О О О О О О О О м м м м м м м м А : В: А: В: А : В: А : В: 2 11 7 2 5 3 6 8 0 4550 2 9 7 5 -1550 -2350 -2550 575 550 500 6900 4025 0 525 400 1650 1725 1250 500 400 3100 2825 2550 500 325 0 4550 7525 5975 3 6 2 5 1075 1650 -15625 СДЕЛКИ ВНЕ ВЫБОРКИ 9 6 0 1 0 1 9 6 0 1 0 4 9 6 0 1 0 8 960110 9 6 0 1 1 1 960118 9 6 0 2 1 6 9 6 0 2 2 3 9 6 0 2 2 8 9 6 0 3 0 5 9 6 0 3 0 8 -1 1 -1 1 -1 1 -1 1 -1 1 -1 692.600 700.700 691.600 697.600 681.000 683.000 729.300 727.500 724.750 722.900 725.900 О О О О О О О О О О О м м м м м м м м м м м В: А : В: А : В: А : В: А : В: А : В: 960104 960108 960110 960111 960118 960216 9 6 0 2 2 3 9 6 0 2 2 8 9 6 0 3 0 5 960308 960311 7 0 0 . 7 0 0 6 9 1 . 6 0 0 697 .600 6 8 1 . 0 0 0 6 8 3 . 0 0 0 7 2 9 . 3 0 0 7 2 7 . 5 0 0 724.750 722.900 7 2 5 . 9 0 0 716.150 О О О О О О О О О О О м м м м м м м м м м м А : В: А : В: А : В: А : В: А : В: А : 4 5 3 2 8 30 8 6 7 4 4 -4050 -4550 -3000 -8300 -1000 23150 900 -1375 925 1500 4875 1200 1675 1450 0 4300 29050 8400 5 7 2 5 8125 4475 4875 4050 5100 3000 8800 2 3 2 5 1450 1875 2750 2525 1275 1300 -19675 -24225 -27225 -35525 -36525 -13375 -12475 -13850 -12925 -11425 -6550 ГЛАВА 2 СИМУЛЯТОРЫ 41 Как и отчеты об эффективности, отчеты для каждой сделки могут быть представлены по-разному и могут основываться на различных определе- ниях вычисляемых показателей. Если отчет об эффективности обеспечивает обзор всего «леса», то от- чет о каждой сделке заостряет внимание на отдельных «деревьях»: в хо- рошем отчете каждая сделка рассматривается детально. Каковы были максимальные отрицательные переоценки открытой позиции, какова была бы прибыль при идеальном выходе и какова была «настоящая» при- быль (или убыток) моделируемой сделки, была ли торговля достаточно пос- ледовательной, были ли новые сделки лучше или хуже более старых, как можно использовать опыт худших сделок для улучшения системы — вот вопросы, на которые нельзя ответить при обзоре только общей эффек- тивности системы. Кроме того, отчет по каждой сделке может быть до- полнительно обработан в виде таблицы, например для построения гисто- грамм (Sweeney, 1993). Гистограммы могут показать, какая часть потен- циальных прибылей фиксируется при использовании данной стратегии выхода, и полезны при определении целей прибыли. Кроме того, тщатель- ное изучение лучших и худших сделок может дать результаты, полезные для улучшения системы. ЭФФЕКТИВНОСТЬ СИМУЛЯТОРА Торговые симуляторы могут сильно различаться по таким показателям, как мощность, емкость и скорость. Скорость важна при выполнении многих тестов или проведении сложных оптимизаций, например генетических. Скорость также важна при разработке систем для портфельной торговли или при использовании длинных внутридневных серий данных с тысяча- ми сделок и сотнями тысяч числовых данных. В некоторых случаях от ско- рости симулятора зависит сама возможность проведения анализа: ряд за- дач требует поистине огромного объема расчетов, недоступного для «мед- ленных» программ. Емкость симуляторов определяет ограничения объе- ма задач (количество баров данных, которое может загружаться или объем кода самой системы). Мощность симулятора — показатель, определяющий, как сложные тесты и задания могут выполняться на базах данных цен то- варов или на целых портфелях, что важно для серьезной профессиональ- ной торговли. Достаточно мощный симулятор требуется, например, для использования многих торговых моделей, приведенных в этой книге. Скорость Наиболее важный фактор, влияющий на скорость работы системы, — при- рода используемого языка: скриптовый или программный, т.е. определе- Рисунок 2-1. Гистограмма неблагоприятных движений. ГЛАВА 2 СИМУЛЯТОРЫ 43 ние, является ли программа скриптом или используется в интерпретато- ре. Современные компиляторы языков общего назначения, таких как C++, FORTRAN и Pascal/Delphi, переводят написанную пользователем программу в высокоэффективный машинный код, пригодный для прямо- го исполнения процессором; это делает пакеты с использованием таких языков и компиляторов весьма быстрыми. С другой стороны, собствен- ные интерпретируемые языки, такие как Visual Basic for Applications и Easy Language, должны переводиться и подаваться в процессор построчно при исполнении сложного, насыщенного циклами исходного кода. Каков же возможный выигрыш в скорости для компилируемого языка по сравне- нию с интерпретируемым? Мы слышали о системах, которые после пере- вода с собственного языка на C++ стали работать в 50 раз быстрее! Емкость Если скорость в основном зависит от работы с языком (интерпретируе- мым или компилируемым), то емкость главным образом от используемого 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. Любой симулятор, работающий на основе таких компиляторов, способен работать с огромными объемами данных без труда. Поскольку большинство программных пакетов постоянно совершенствуется, пробле- ма емкости становится все менее и менее принципиальной. Мощность Различия в мощности симуляторов главным образом зависят от языка программирования. Для начала рассмотрим язык, но не в аспекте скорос- ти компилируемых и интерпретируемых языков, а в аспекте его возмож- ностей. Можно ли изящно и обстоятельно запрограммировать самую 44 ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ сложную торговую идею? Как правило, примитивные языки не дают всех возможностей, необходимых для кодирования наиболее сложных торго- вых стратегий. К сожалению, наиболее мощные языки сложнее всего изу- чать. Но если человеку удалось овладеть таким языком, как 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 (язык, разработанный для написания экспертных систем). Еще одно важное свойство симуляторов, не связанное с языками про- граммирования, — способность симулятора работать не только с индиви- дуальными финансовыми инструментами, но и с портфелями. Многие про- дукты не имеют возможности выполнять оптимизацию целых портфелей, хотя порой это достижимо при помощи дополнительных модулей. С другой стороны, хорошо организованный симулятор, как правило, позволяет мо- делировать торговлю портфелем различных финансовых инструментов. ГЛАВА 2 СИМУЛЯТОРЫ 45 НАДЕЖНОСТЬ СИМУЛЯТОРОВ Разные торговые симуляторы имеют разную степень надежности и досто- верности. Не существует компьютерных программ, полностью гарантиро- ванных от ошибок, даже если ее производитель — знаменитая фирма ми- рового уровня. Кроме того, проблемы возникают при принятии решений в состоянии неустойчивого равновесия — когда в пределах одного и того же бара возникают условия для исполнения различных приказов. Некоторые из этих состояний, например так называемый прыгающий тик (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. Остере- 46 ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ гайтесь продуктов, нацеленных в основном на построение графиков и с ограниченными возможностями программирования, если вы собираетесь разрабатывать, тестировать на исторических данных и использовать в торговле механические торговые системы, значительно отличающиеся от традиционных индикаторов. СИМУЛЯТОРЫ, ИСПОЛЬЗОВАННЫЕ В ЭТОЙ КНИГЕ Мы предпочитаем использовать симуляторы, основанные на практике современного объектно-ориентированного программирования. Одна из причин такого выбора состоит в том, что объектное ориентирование упро- щает создание нужного количества моделируемых счетов, каким бы оно ни было. Это в особенности полезно при моделировании торговой систе- мы, управляющей целым портфелем товаров или акций, как это сделано в большинстве тестов в данной книге. Объектно-ориентированные симу- ляторы также хороши для построения адаптивных самооптимизирующих- ся систем, в которых иногда требуется использовать внутреннее модели- рование. Кроме того, такие программы позволяют достаточно просто со- здавать метасистемы (системы, принимающие решения на основе графи- ков изменения капитала других систем). Например, метасистемами мож- но считать модели распределения активов, поскольку они динамически меняют распределение средств между отдельными торговыми система- ми или счетами. Хороший объектно-ориентированный симулятор может генерировать графики изменения капитала портфелей и другую инфор- мацию для создания и тестирования на исторических данных систем рас- пределения активов, работающих на основе множественных торговых систем. Из этих соображений, а также в силу привычки большинство те- стов в этой книге проведены с использованием C-Trader tookit. Для того чтобы почерпнуть полезные знания из этой книги, не требуются позна- ния в C++ и программировании. Логика любой системы или элемента системы будет подробно рассматриваться в тексте. |