Компьютерный анализ фьючерсных рынков - ЛеБо Ч., Лукас Д.В. Компьютерный анализ фьючерсных рынков - ЛеБо Ч., Лукас Д. Computer analysis of the futures market
Скачать 3.28 Mb.
|
Глава 3 Тестирование системы Основы Зачем тестировать? Нас часто спрашивают: "Зачем тестировать торговую систему? Ведь вы получите только гипотетические данные. Каким образом вы узнаете, как система будет работать в реальном времени?" Истинный ответ на последний вопрос состоит в том, что вы никогда не узнаете наверняка, будет ли ваша система работать в будущем, но существует только два способа выяснить, имеет ли она хоть какой-то потенциал. Первым способом является торговля по этой системе в реальном времени, а вторым - ее тестирование. Так как непомерная стоимость и длительное время тестирования новой торговой системы в реальном времени являются недопустимыми, то компьютерное тестирование дает простую возможность увидеть, как проект вашей системы работал бы на данных прошлого. Вы узнаете ее положительные и отрицательные черты и, если тестируете правильно, узнаете, чего можно ожидать при торговле в реальном времени. Кроме того, вы добиваетесь двух вещей. Во-первых, для тестирования системы вы должны сделать ее механической, и единственным элементом, требующим вашего вмешательства, будет вопрос: "Войду я в следующие торги или нет?", Мы думаем, что механические торговые системы лучше всего подходят подавляющему большинству трейдеров. Во-вторых, вы выясните, обладает ли ваша система тем, что Ральф Вайнс в своей книге "Portfolio Management Formulas" (смотрите рекомендуемую литературу в конце этой главы) называл положительным ожиданием. Другие называют это "преимуществом трейдера". Это может звучать упрощенно, но, если при ч естиро-вании ваша система не прибыльна, она не будет прибыльной в реальном времени. Если вы понадеетесь только на грамотное управление денежными средствами, может сложиться иллюзия, что посредственную торговую систему можно превратить в выигрышную путем различного управления торгами и наличностью. Это неправда. Никакие варианты Управления денежными средствами не превратят проигрышную систему в выигрышную. Вы можете использовать любую стратегию азартных игр, и, если у вас нет положительного ожидания на продолжительном промежутке времени, то управление денежными средствами не повлияет на ваши результаты. Вы должны обла- дать преимуществом изначально. Единственным способом убедиться, что вы обладаете этим преимуществом, является тестирование вашей системы. Не ожидайте получения исчерпывающих результатов, говорящих о том, что та или иная торговая система или исследование превосходит все прочие. Мы также надеемся, что вы не будете чрезмерно разочарованы, если, несмотря на следование всем правилам и корректное тестирование, не добьетесь успеха. Каждый из когда-либо проводившихся тестов обладает весом только в контексте своей внутренней структуры и по отношению к данным, включенным в тест. Если мы тестируем торговую систему на 20 различных рынках с 1980 года по сегодняшний день, то результаты ничего не •скажут о 1975 годе. Что еще более важно, они ограничены в том, что они могут сказать о будущем. Мы ничего не "доказали", и не следует ожидать, что докажем. Лучшее, что мы можем сделать, это быть точными и внимательными в нашем тестировании. Не существует простых ответов. В торговле фьючерсами нет ничего определенного. Программное обеспечение Компьютерное тестирование механических торговых систем витало в воздухе на протяжение 20 лет, но приобрело популярность только за последние несколько лет, когда были представлены пакеты программного обеспечения для ПК, которые сделали этот процесс возможным без обязательного наличия обширных навыков программирования. Практически любой сейчас может создать "прибыльную" торговую систему, демонстрирующую фантастические гипотетические результаты на исторических данных. Большинство торговых систем, продававшихся за большие деньги в последние 20 с чем-то лет, были созданы таким способом. К несчастью, как могут свидетельствовать тысячи разочарованных инвесторов, коммерческие системы - "черные ящики" редко, если вообще когда-то работают так, как от них ожидают. Насколько нам известно, то же можно сказать о подавляющем^ большинстве торговых систем, созданных с помощью тестирующего программного обеспечения. Причины этих очевидных неудач лежат не в тестирующем программном обеспечении, а в методах тестирования и оценки. Для нашего тестирования мы используем System Writer Plus и Computrac/SNAP. Оба продукта являются отличными программами, которые мы можем рекомендовать без колебания. Ни одна из них не демонстрирует погрешности или недостатка гибкости, которые могли бы вынудить исследователя применять неадекватные методы тестирования. Проблема, как мы подчеркивали, заключается в методах тестирования, а не в программном обеспечении. Мы понимаем, что не у каждого есть программное обеспечение для тестирования. Оно дорогое и сложное, требует продолжительного ознакомления. Для создания жизнеспособной торговой системы не обязательно обладать такой программой. Элементы торговой системы будут схожими вне зависимости от того, есть ли у вас дорогостоящее программное обеспечение, или вы программируете самостоятельно. Можно даже тестировать торговую систему без привлечения дорогостоящего программного обеспечения, если просто сесть напротив компьютерного монитора и объективно торговать по вашей системе на прошлых данных. На самом деле, у такого подхода есть преимущества. Одно из них заключается в том, что без обширных возможностей оптимизации, свойственных программным пакетам, ваша система с меньшей вероятностью окажется чрезмерно подогнанной под кривую цен. Однако преимущества программных пакетов значительно перевешивают их недостатки. Мы настоятельно рекомендуем вам либо приобрести программное обеспечение для тестирования систем,либо написать собственное, если у вас есть необходимые навыки и твердое убеждение, что коммерческие системы не удовлетворяют вашим специфическим потребностям. Элементы торговой системы Возможно мы повторяемся, но все равно хотели бы перечислить атрибуты, которыми должна обладать торговая система, чтобы успешно тестироваться. Некоторые (или все) из этих элементов могут показаться очевидными, но мы в процессе издания нашего листка и написания этой книги за последние два года общались буквально с тысячами трейдеров и можем с некоторой степенью уверенности сказать, что многие люди не полностью понимают, что должна и чего не должна делать торговая система. Первым необходимым качеством торговой системы для проведения серьезного тестирования должен быть ее абсолютный автоматизм. Единственным элементом, требующим вмешательства, должно быть решение торговать ли полностью по этой системе или нет. Все прочие решения должны быть встроены в систему. Мы понимаем, что многие, если не большинство спекулянтов в настоящее время торгуют по системам, которые по крайней мере отчасти требуют ручного вмешательства. Также мы знаем, что большая часть по-настоящему успешных трейдеров рассматривает личное вмешательство как необходимый компонент торговли. Мы не собираемся оспаривать такую позицию, но подобную систему совершенно невозможно тестировать, потому что она безнадежно субъективна. Элементам личного вмешательства трейдера нет места в механической торговой системе, которая подготавливается к тестированию. Ожидайте худшего Система, которую вы разрабатываете для тестирования, должна пытаться учесть все неожиданности. Мы очень часто слышим о трейдерах, оправдывающих отсутствие некоторых элементов в их любимых торговых системах. Типичный ответ таков: "Со мной такого никогда не случалось, так зачем к этому готовиться? Зачем мне использовать остановки, если моя система всегда ловит пики и впадины, и еще не было убытка, который я не мог бы себе позволить?" Это не просто наивно, но опасно. Всегда предполагайте: то, что может случиться , обязательно произойдет. Система должна всегда ожидать худшего и быть готовой с этим справиться. Вы должны всегда стремиться достигнуть полного контроля рисков. Не думайте, что, если это не случилось в прошлом, то не произойдет и в будущем. Вот типичный пример. Многие трейдеры предпочитают испольувать остановки только на закрытии» чтобы избежать потерь на дерганиях при остановках внутри-дневной торговли. Это может быть объяснено тем, что внутридневное ценовое движение непоследовательно, и только закрытия имеют значение. (На самом деле, остановки только на закрытии обычно применяются трейдерами, которые были остановлены на потенциально прибыльных торгах, и считающими, что такого больше не повторится.) Можете ли вы представить себе такого глупца, который был в на длинной позиции на S&P 16 или 19 октября 1987 с остановками только на закрытии?! Одна только вероятность таких ситуаций должна убедить любого в том, что лучше иметь обычные остановки и стратегию повторного вхождения. Ожидайте наихудшего, тогда вы не будете застигнуты врасплох. Опасности оптимизации К сожалению, каким-то образом исказившейся целью многих тестирующих проектов становится разработка торговых стратегий, выжимающих максимум возможных доходов из исторических данных. Предположение состоит в том, что, чем лучше они работали в прошлом, тем лучше они будут функционировать в будущем. Если бы это было правдой, то каждый, кто разработал бы историческую модель, хорошо работавшую в прошлом (подразумевая практически каждого, кто когда-либо использовал программное обеспечение для тестирования систем), был бы к сегодняшнему дню очень богат. Очевидно, этого не произошло с большинством трейдеров. Как правило, тестирование происходит следующим образом. Трейдер покупает самое современное программное обеспечение и необходимые данные. Он складывает вместе несколько любимых технических исследований или графических фигур, которые хорошо себя показали в прошлом, и гоняет компьютер час за часом в поисках точных значений для каждого параметра, которые давали бы наибольший доход. Под впечатлением фантастических результатов побеждает жадность, и он или она начинают сразу же торговать- Неизбежно трейдер попадает в полосу потерь и решает, что что-то не так с его торговыми методами. Наиболее очевидным выходом будет оптимизировать систему снова и избавиться от проигрышных компонентов. Трейдер оптимизирует заново и с удовлетворением замечает, что изменения удалили большую часть проигрышных торгов. Снова уверенный, несмотря на предыдущие потери, он возобновляет торговлю только для того, чтобы получить новую неожиданную серию потерь. Многие трейдеры продолжают такие попытки до тех пор, пока не закончатся либо их деньги, либо терпение. Обычно подводят деньги, приводя их к убеждению, что они непременно добились бы успеха, если бы только могли себе позволить переоптимизировать систему и войти в торговлю еще разок. Другие трейдеры заключают, что ошибка кроется в использовании механических торговых систем, и они переклго- чаются на субъективные торговые методы, которые никак нельзя протестировать. Потери, разумеется, продолжаются, но сейчас они являются просто результатом невезения, плохого исполнения приказов, срабатывания остановок, манипуляций инсай-деров или недостаточного внимания брокера. Что действительно не так? Полезно разобрать вышеуказанный процесс и посмотреть, в чем ошибка, и почему это произошло. Первым и наиболее очевидным моментом является сомнительная ценность оптимизаций практически в любой форме. Любой индикатор или набор индикаторов покажут огромный доход, будучи оптимизированы для получения лучшей комбинации параметров, даже при использовании случайного набора данных. Компьютер анализирует миллионы комбинаций, поэтому существует очень большая вероятность, что некоторые из них, по крайней мере задним числом, будут делать деньги. При столкновении с соблазном практически мгновенного обогащения, о чем свидетельствуют вдохновляющие результаты оптимизации, искушение немедленно начать торговлю становится непреодолимым. Вера в процесс оптимизации настолько сильна, что трейдеры будут оптимизировать снова и снова, хотя состояние их торговых счетов должно было бы подсказать им, что они делают что-то не так. Это произошло с нашим трейдером в предыдущем примере. Вы можете услышать, как трейдер говорит: "Только еще одна оптимизация, и я это сделаю." К сожалению, еще одна оптимизация никогда не решит проблемы. Оптимизировать или не оптимизировать Любому, кто верит, что полная оптимизация работает так же хорошо, как пропагандируется некоторыми поставщиками систем, не помешало бы прочитать "The Usefulness of Historical Data in System Parameters for Technical Trading Systems" Луиса Б. Лукаса и Б. Уэйд Брорсена. Их работа систематичная и полная. Они тестировали системы следования за трендом, прорыв канала и систему направленного движения Уайлдера, используя 20-летние данные. Единственной переменной, подвергавшейся оптимизации, было количество дней, использовавшееся в каждом вычислении. Этот параметр проходил через временной период от 2 до 60 дней с шагом в 5 дней. Они сравнивали три различные схемы оптимизации со случайным тестом, который использовал случайные значения параметра из набора от 5 до 60 дней. Наиболее значительным открытием было то, что стратегии повторной оптимизации ничего не давали в смысле производительности системы. Каждый из методов оптимизации давал результаты, незначительно отличающиеся от результатов случайного теста. С использованием оптимизации или без, доходы были в районе от 50 до 60 процентов для системы прорыва канала и от 30 до 54 процентов для системы направленного движения Уайлдера. Они сформулировали следующее: "Результаты всех тестов гово- рят, что предугадывающие возможности оптимизации ограничены. Оптимизация была не в состоянии прогнозировать набор параметров, который давал бы доход на портфеле лучший, чем стратегия случайного выбора." Позвольте нам особо подчеркнуть, что это был строго формальный тест, проведенный с большим вниманием к деталям. Любой, кто утверждает, что полная оптимизация работает лучше, чем простое слепое моделирование, столкнется с прямо противоположными результатами, которые были только что продемонстрированы. Как избежать подстраивания под кривую Некоторое подстраивание под кривую неизбежно. Было бы сложно и нежелательно разрабатывать техническое исследование без этого. Когда трейдер сверлит глазами график и видит, что 9-дневный RSI, кажется, лучше подходит для этого конкретного рынка, чем стандартный 14-дневный, он подстраивается под кривую. Так как это кажется простым и эффективным, остается только один шаг до тестирования каждого параметра RSI. Как только этот процесс начинает давать прибыльные результаты, перестановки становятся практически бесконечными: "Нам лучше добавить еще несколько технических исследований, чтобы быть уверенными, что мы ничего не пропустили. Пока мы пользуемся этой системой, давайте оптимизируем ее для правильного начального риска и лучших следящих остановок, чтобы она стала максимально полной." Конечным продуктом является система, заключающая в себе все лучшие побуждения и подогнанная под кривую в п-нои степени. Несмотря на то, что она хорошо выглядит на бумаге, шансы против того, что она будет работать в будущем, становятся астрономическими. Результаты оптимизации оказываются прямо противоположными тем, которые казались бы очевидными. Чем лучше выглядит система и чем более полной и сложной является, тем с меньшей вероятностью она добьется успеха. Существует строгое объяснение того, почему оптимизация и подстраивание под кривую дают плохие результаты. Откровенно говоря, это настолько простая концепция, что мы не можем понять, почему многие трейдеры не уделяют ей большее внимание. Каждому статистику известно понятие потери свободы. В терминах непрофессионала это значит, что каждый параметр,добавляющийся к торговой системе, представляет собой потерю степени контроля над конечной отдачей процедуры тестирования. Чем больше технических исследований или торговых правил вы вводите, тем менее здоровыми и надежными будут результаты. Чем больше вы стараетесь улучшить систему, тем с меньшей вероятностью она будет работать так же, как при тестировании. Вам следует иметь от двух до пяти переменных. Чем меньше переменных, тем более надежны результаты. Интересное следствие такого подхода заключается в том, что он позволяет вам оглянуться на собственную проделанную работу и быстро понять, является ли она подгонкой под кривую. Вероятность того, что система окажется подогнанной под кривую, напрямую зависит от количества переменных, использовавшихся при тестировании. Чем большее количество технических исследований и правил (особенно исключений из правил), тем больше модель подогнана под кривую. Остерегайтесь систем, которые настолько сложны, что требуют компьютера для того, чтобы с ними работать. Другой путь избежать подстраивания под кривую - отказ от создания систем, настроенных на специфические рынки. Это ловушка, в которую просто попасть, и это также основной принцип подстраивания под кривую. Хорошая система не обязана исторически работать на всех рынках, чтобы быть успешной, но она должна работать на большинстве рынков с небольшим количеством изменений от рынка к рынку. Если вы должны изменять систему с тем, чтобы адаптировать ее к каждому рынку, то есть серьезный изъян в основной системе. Нам хорошо знаком тот аргумент, что каждый рынок обладает своим уникальным характером, но мы также помним времена, когда валютные фьючерсы практически не были волатильными, и времена, когда они демонстрировали колебания стоимости контрактов на тысячи долларов в день. Рынки меняются, и лучшим способом добиться уверенности, что ваша система будет идти с ними в ногу, будет ее тестирование в неизменной форме на возможно большем количестве разнообразных рынков. Прежде, чем мы оставим этот предмет, отметим еще одну более тонкую форму оптимизации. Мы говорим о практике прогонки исторических данных через компьютер для нахождения "сезонности". Существует горстка известных трейдеров/авторов, которые предоставляют данные тестирования, демонстрирующие, что, если бы вы покупали конкретный товар в конкретный день каждый год и продавали его в другой конкретный день, вы бы увеличили свой доход в х раз. Это просто нонсенс, который не имеет абсолютно никакого статистического смысла или применения в торговле. Если мы захотим, аналитические возможности компьютера позволят нам оптимизировать данные вместо системы. Данные рассматриваются очень маленькими сегментами для получения точных дат, которые лучше всего подходили бы системе. Вместо подгонки под кривую системы, мы можем подогнать под кривую данные. Конечно, существует множество очевидно логичных и иногда пригодных для использования долгосрочных сезонностей (например, ежегодные падения цен во время сбора урожая), но остерегайтесь доводить следование сезонностям до абсурда. Любая сезонная рекомендация по торговле, более специфичная, чем указание лучшего месяца для торговли, должна восприниматься с большим подозрением. |