Многоликость подстройки ч.2
AlgoFoxПричины подстройки
Причина подстройки — в нарушении правил тестирования и оптимизации. Есть шесть типов таких нарушений:
1. Слишком много правил и условий, ограничивающих число степеней свободы.
2. Выборка данных слишком мала.
3. Неполный анализ статистической характеристики торговой системы.
4. Неполный анализ результатов оптимизации.
5. Неправильные методы оптимизации.
6. Отсутствие постоптимизационной проверки.
Степени свободы
Главное правило статистического моделирования состоит в том, что слишком большое число ограничений приводит к неправильным результатам. Другими словами, если переменные торговой модели задействуют слишком много ценовых данных, или если существует слишком мало сделок по сравнению с количеством правил и объемом данных, то результаты оптимизации сомнительны. Степени свободы неразрывно взаимосвязаны с размером выборки. Наложение на ценовые данные слишком многих ограничений — основная причина подстройки.
Вообще говоря, степени свободы в тестировании в значительной степени представляют собой попытку выразить количественно связь между размером выборки и налагаемым условием. Есть два способа рассмотрения степеней свободы.
Степени свободы с точки зрения объема данных
Для того чтобы использовать степени свободы применительно к данным, считайте, что каждый элемент данных, требующий каких-либо вычислений, представляет одну степень свободы. Каждое правило торговой модели использует как минимум одну степень свободы.
Рассмотрим два примера, в которых используется выборка данных двухлетней ценовой истории по четырем элементам цены — открытиям, максимумам, минимумам и закрытиям, или в общей сложности 2080 элементов данных.
Сначала система применяет 10-дневную среднюю максимумов и 50- дневную среднюю минимумов. Средняя 1 использует 11 степеней свободы: 10 максимумов плюс одно правило. Средняя 2 использует 51 степень свободы: 50 минимумов плюс одно правило. Всего использовано 62 степени свободы.
Вторая система применяет 10-дневную среднюю закрытий и 50- дневную среднюю закрытий. Средняя I использует 11 степеней свободы; 10 закрытий плюс одно правило. Средняя 2 использует всего 41 степень свободы: 40 дополнительных закрытий плюс одно правило. Всего использовано 52 степени свободы. Заметьте, что элементы данных, использовавшиеся дважды, считаются один раз.
Степени свободы и уверенность
Неотъемлемая заповедь статистического моделирования — слишком большое число правил и ограничений приводит к ненадежным результатам. Другими словами, если в торговой модели слишком много переменных (по отношению к числу выбранных сделок или даже к объему данных), то оптимизационные результаты сомнительны. Это кратко обсуждалось в Главе 4.
Наложение на ценовые данные слишком многих ограничений — основная причина подстройки. Но для разработчика моделей не всегда очевидно, что в этом виноват он (или она). Например, в каждый новый день система стоит перед выбором, какое правило из 250 применить. Правило может быть очень конкретным, например, «Купить и держать до получения прибыли $250». С помощью многократного компьютерного тестирования, может быть найден правильный вариант для получения прибыли, исходя из ежедневных ценовых движений прошлого года. Тогда мы имеем следующее выражение:
Однако это было бы очевидно каждому. Использование всего двух правил (покупки и продажи) применительно к каждому дню также принесет большую прибыль — но не такую большую, как в случае (1). Такая модель будет выглядеть следующим образом:
Поскольку правила не были достаточно конкретны, чтобы улавливать прибыли на уровне их дневных максимумов, нам придется удовлетвориться субоптимальными гипотетическими прибылями. Но это еще один случай выяснения правила, которое следует применять, путем «заскакивания» вперед данных и выбора действительно работавшего правила. В реальной торговле такого выбора нет.
На практике оптимизация часто содержит менее заметные формы подстройки. Это может быть:
- Поочередное (по одному за раз) добавление правил, для наблюдения повышения эффективности (и исключение неработающих правил);
- Тестирование многих вариантов одного и того же правила (на пример, скорости скользящей средней).
Поиск прибылей неизбежно предполагает анализ предыдущего тестового прогона (или набора тестов), нахождение неприемли- мых сделок и формулирование новых правил для корректировки результата. Иногда эти правила улучшают результаты, но часто они вызывают такие же сложные проблемы в другом временном периоде.
Каждое протестированное новое правило, как применяемое, так и исключенное, является одной из тех потерянных степеней свободы, которые никогда не будут восполнены. Если вы находите одно работающее правило путем тестирования 250, нашли ли вы истинный рыночный образец?
Рассмотрим следующее: вы обнаружили, что производство кофе в Бразилии в точности предсказывало последующий (двумя месяцами позже) урожай зерновых в Северной Африке в течение всех последних 20 лет. Это важная информация, поскольку она позволяет определить спрос на зерновые. Дальнейшее исследование показывает, что эту связь можно объяснить климатическим влиянием Гольфстрима, протекающего от Восточного побережья Южной Америки к Среднему Востоку. Сможете ли вы извлечь преимущество из этой зависимости? Не исключено.
Но что если вам сообщили, что для нахождения этих 20 успешных испытаний из 20 возможных исследовались 100 разных стран, и лишь в одной из них испытания оказались успешными? Что если данная зависимость не подтвердилась на данных за 5 лет, предшествующих 20- летнему периоду испытания? То, чего вы не знаете, может нанести вам ущерб. Аналогично, тестирование слишком большого количества правил и условий, сокращение периода данных и сужение диапазонов переменных, — все это неявные способы самообмана.
Степени свободы — это способ ведения учета данных огрехов. Рассмотрим два крайних случая. Первое, посредством правил вы задаете систему: покупать, когда сегодняшнее закрытие выше трех предыдущих закрытий и сегодняшний минимум выше вчерашнего, и закрывать эту позицию, когда сегодняшнее открытие или минимум ниже вчерашнего минимума.
Возможно, это отражает некоторые наблюдения, сделанные вами в течение нескольких прошлых лет слежения за рынком. Вы прогоняете эту модель на 5 годах дневных данных, и она оказывается прибыльной в 4 годах из 5, принося 30% годовых. Это подтверждает вашу теорию. Вы применили 2 правила и один тест данных за 1250 дней, получив 350 сделок. Это удовлетворяет всем критериям.
Другой трейдер полагает, что система основанная на скользящих средних будет работать, пока контролируется риск. На данных за 1 250 дней он тестирует 49 скользящих средних, в диапазоне от 2 до 50, и 20 стоп-лоссов, от $50 до $1,000 с шагом $50, то есть в общей сложности 980 комбинаций. Результаты показывают, что 20% этих тестов прибыльны и лучший вариант дает годовую доходность 70%. Но 980 тестов проводились на 1250 элементах данных. Это должно существенным образом снизить ваше доверие к полученным результатам и поставить вопрос — «Правильна ли эта система, или она является очередным подтверждением эффекта Гольфстрима?»
Первый случай был явно идеализирован. Подтверждение теории с первой попытки вызывает много вопросов. Но важен принцип. Тщательно подумайте, прежде чем добавлять и тестировать новое правило. По возможности старайтесь сделать каждое правило последним, поскольку каждое правило уменьшает число степеней свободы, а вместе с ней и вашу уверенность в модели. Думайте об этом как о съемке кинофильма, каждый кадр которого стоит $100,000.
Для обеспечения статистической валидности как минимум 90% степеней свободы должно остаться после вычета всех правил, индикаторов и затрат для выхода системы на рабочий режим. Степени свободы могут быть чрезмерно ограничены:
1. Слишком маленькой выборкой данных.
2. Слишком большими затратами при выходе системы на рабочий режим.
3. Слишком большим количеством правил.
4. Слишком большим числом переменных (любых элементов модели, использующих данные).
К сожалению, большинство программных пакетов для трейдинга не вычисляют степени свободы. Но знать их необходимо, поскольку они представляют очень важную составляющую разработки процесса тестирования. Недостаточное число степеней свободы — одна из наиболее распространенных причин подстройки.
К счастью, здравый смысл и осторожное обращение с разработкой и организацией процесса тестирования и оптимизации помогают легко исправить эту оплошность. Используйте достаточно большую тестовую выборку. Делайте допуск на пусковые затраты. Всегда, когда есть возможность, проводите тестирование с числом степеней свободы, превышающим 90%. В отношении степеней свободы «больше» определенно означает «лучше».
Объем выборки
Объем тестовой выборки оказывает большое влияние на другую область, крайне важную для правильного тестирования. Объем выборки должен быть достаточно большим, позволяющим системе генерировать статистически значимую выборку сделок. Выборка из одной сделки определенно не является значимой, в то время как выборка из 50 или более сделок будет, как правило, адекватной. Тем не менее, ограничения, накладываемые торговой системой, или ограничения на доступ к данным могут иногда вынуждать принимать решения на основе выборки менее чем из 30 сделок. В таком случае аналитик должен оценивать каждую из остальных категорий с повышенной осторожностью.
Здесь полезно руководствоваться формулой стандартной ошибки. Следующие четыре примера показывают слишком маленькую выборку, выборку из 50, 100 и 300 элементов:
Стандартная ошибка = 1/квадратный корень из размера выборки

Скорость торговли у разных систем разная. Например, долгосрочная торговая система, торгующая, скажем, от 2 до 4 раз в год, для получения 50 сделок потребует очень много данных. Кроме того, она будет содержать индикаторы, использующие много степеней свободы, и будет привносить много пусковых расходов. Наоборот, краткосрочной системе, торгующей дважды в неделю, для генерации 50 сделок потребуется меньше данных, она будет использовать гораздо меньше степеней свободы и будет иметь незначительные пусковые расходы данных.
Оценка сделок
Хотя неправильная оценка сделок не является прямой причиной подстройки, но ее неверное применение является распространенной причиной неудач. Поэтому в порядке повторения стоит уделить ей особое внимание. Как детально описывалось в Главе 8, неправильная оценка выборки сделок может приводить к провалу модели в реальной торговле.
На одну сделку не должно приходиться более 30% общей прибыли, особенно, если размер торговой выборки превышает два или три года. Выигрышные сделки должны быть распределены по выборке равномерно, и чем равномернее, тем лучше. Это указывает на более жизнеспособную торговую модель. Проигрышные сделки тоже должны быть распределены равномерно. Опять же, чем равномернее, тем лучше.
Следует стремиться к равномерному распределению прибылей и убытков от периода к периоду, например, от месяца к месяцу, или от квартала к кварталу. Чем это распределение равномернее, тем лучше. Любая избыточная концентрация подозрительна. Чем равномернее распределение торговой модели, тем она более жизнестойка, а следовательно — более надежна.
Оценка оптимизации
Неправильная оценка результатов оптимизации может приводить к подстройке. Помните, что оптимизация есть инструмент нахождения устойчивой торговой стратегии, а значит, результаты последовательности оптимизационных тестов должны подтверждать надежность данного метола. Это возможно в случае, когда большой процент тестов был прибыльным, независимо от конкретных параметров (то есть, длины скользящей средней или величины стоп -лосса), используемых в этих тестах.
Первое, тесты должны включать широкий диапазон параметров, которые вы считаете подходящей вводной информацией. Это могут быть скорости скользящих средних от 2 до 100 дней и максимальные убытки от $50 до $5,000. Распределение тестов должно быть таким, чтобы при переходе к другой скорости скользящей средней число сделок менялось равномерно. Это означает тестирование более широких интервалов по мере возрастания периода скользящей средней.
Устойчивый тестовый результат — это такой результат, когда средняя всех тестов положительна. И все же еще лучше, когда средняя всех тестов положительна на 1 стандартное отклонение. Это равнозначно тому, что 67% всех тестов являются прибыльными.
Результаты с более низкими доходностями допустимы, если все прибыльные тесты сгруппированы и продолжают демонстрировать стабильные положительные результаты по мере увеличения или уменьшения параметров в направлениях границ тестирования (to the extremes tested). Например, скользящие средние от 2 до 20 дней не были прибыльными, но улучшали показатели по мере увеличения их периода. Прибыли появились, когда тестовый период превысил 20 дней, пик прибылей наблюдался на уровне 35 дней иот35до 100 дней модель оставалась прибыльной.
Беспорядочные результаты, то есть результаты, не имеющие различимого паттерна, должны отвергаться. Изолированные области успеха, независимо от величины прибыли, представляют специфическую комбинацию параметров, работающих на конкретном рыночном паттерне, и не являются признаком устойчивой стратегии; наоборот, это следует считать «точной настройкой».
Изменения правил и модификация торговой стратегии должны улучшать среднюю всех тестов без увеличения стандартного отклонения. Это показатель всеобщего улучшения, а не настройки на специфические иеновые паттерны.
Всплеск прибыли
Другая типичная причина подстройки — выбор в качестве топ- модели всплеска прибыли. Вспомните, что всплеск прибыли - это прибыльная модель, соседи которой либо гораздо менее прибыльны, либо убыточны (см. Рис. 7-2). Это серьезная проблема, поскольку большинство коммерческих программ для трейдинга будут допускать всплеск прибыли в качестве приемлемой модели. Некоторые методы оценивания направлены на минимизацию этой проблемы. Рассмотрение более чем одной топ-модели — один из способов решения данной проблемы. Другой способ — рассматривать среднюю топ-модели и ее соседей.

Выбор всплеска прибыли — плохой выбор. Это статистическая аномалия, образованная набором параметров торговли, отступление от которого всего на один шаг приводит почти к пагубному падению результатов. Например, допустим, что при периоде 10 дней модель скользящей средней дает прибыль $20,000. 9-дневная средняя показывает прибыль $3,000, а 11-дневная — убыток ($2,000). Это из рук вон плохо. Данная 10-дневная средняя демонстрирует плохую эффективность при удалении всего на один шаг в любую сторону. Эта модель 10-дневной средней есть неприемлемый всплеск прибыли и является, по всей видимости, статистическим выбросом.
В отличие от этого, рассмотрим ту же модель 10-дневной средней с прибылью $20,000. 9-дневная средняя показывает теперь прибыль $18,000, а 11-дневная — прибыль $19,000. Данная торговая модель более устойчива.
Всплеск прибыли — не лучший выбор для целей трейдинга. Оценка топ-модели вместе с ее соседями — более хороший способ выделения устойчивой торговой модели.
Чрезмерное сканирование
Другая прямая причина подстройки — неподходящий метод оптимизации, называемый чрезмерным сканированием, который возникает в двух случаях. Первый — это проведение сканирования переменной с шагом, который изначально слишком мал и несообразен оптимизации. Второй случай — когда выделен прибыльный диапазон переменных, который затем опять же сканируется недостаточно большим шагом.
Для иллюстрации первого вида нарушения рассмотрим систему двух скользящих средних. Первая средняя отслеживает изменения краткосрочного тренда. Такие тренды будут варьироваться по длине от 2 до 10 дней. 3-дневный тренд сильно отличается от 4-дневного, поскольку использует на 1/3 больше данных. Поэтому целесообразно оптимизировать эту среднюю от 2 до 10 дней с шагом 1 день.
Вторая средняя тестирует изменения долгосрочного тренда. Такие тренды могут варьироваться по длине от 30 до 100 дней. Поскольку вторая средняя измеряет долгосрочные тренды, результаты 90-дневной средней очень близки к результатам 91дневной средней, которая по объему используемых данных отличается от нее всего на 1/90. Следовательно, оптимизация данной средней от 30 до 100 дней с шагом I день была бы чересчур точной; это не согласуется с размером шага первой скользящей средней.
Снова обратившись к теории, лежащей в основе данной торговой системы, мы видим, что изменение от 90- до 95-дневной скользящей средней представляет собой изменение, согласующееся с остальным тестовым пространством. Следовательно, подходящей будет оптимизация этой средней от 30 до 100 дней с шагом 5.
Последствия чрезмерного сканирования из-за использования постоянного или неправильного размера шага заключаются в том, что тестовые результаты не дают правильного представления о стратегии. В самом общем случае выявляются более долгосрочные тренды, при этом полностью выпадают «быстрые» модели.
Сужение диапазона сканирования
Как только прибыльное подмножество исходных диапазонов сканирования выделено, неизбежно возникает желание провести более точные сканирования. Мы намерены дойти до самой прибыльной комбинации параметров. Хотя эта процедура в определенной степени значима, она может вносить ошибку.
Сужение диапазона сканирования до известной прибыльной области будет, по определению, повышать среднюю эффективность всей серии новых тестов. Что это дает? При правильном использовании это показывает:
- стабильность на тестируемых диапазонах;
- неустойчивость, свидетельствующее о подстройке или о не стабильных результатах, и
- распределение результатов, позволяющее выбрать лучший параметр.
Как только этот ограниченный тест выполнен и результаты проанализированны, возникает тенденция изменить стратегию для устранения проблем или повышения прибылей. Перезапуск тестов на этом же узком диапазоне сканирования будет подтверждать успешность сделанных изменений на конкретном рыночном паттерне. Но насколько надежны эти изменения? Узнать это можно лишь путем перезапуска сканирования исходного широкого диапазона, позволяющего увидеть, действительно ли произошло улучшение средней всех тестовых результатов. Изменения, улучшающие только небольшую группу тестов, являются точной настройкой на данные или подстройкой. Эта техника приводит к улучшению результатов, но она не имеет прогностической способности. Сужение диапазона сканирования — ценный метод выявления проблем, но не следует его использовать для тестирования новых правил и условий.
Форвардный тест
Роль форвардного теста в борьбе с подстройкой невозможно переоценить. При каждом без исключения проведении тестирования или оптимизации необходимо взять за правило принятие необходимых мер предосторожности. Однако форвардный анализ — это принципиально важная часть тестирования. Независимо от того, насколько хорошую эффективность показывает торговая система при тестировании и оптимизации, если она не «идет вперед» (то есть, нс показывает такую же эффективность во вневыборочном постоптимизационном трейдинге), то эта торговая модель не работает. Данный вопрос обсуждался в Главе 7.
Стоит повторить, что благодаря подстройке, плохая модель может казаться превосходной. И наоборот, избыточная оптимизация может приводить к тому, что при форвардном анализе торговая модель будет выглядеть плохо. Вычисление форвардного показателя эффективности — одно из основных достоинств форвардного анализа.
Как форвардный анализ раскрывает избыточность оптимизации? Самый важный показатель — приносит ли модель прибыль при движении вперед. Вторичный показатель — ритм или уровень эффективности, с которым модель приносит форвардную прибыль. Первое очевидно и не требует дальнейшего обсуждения.
Вопрос форвардной эффективности — менее известный и более тонкий. Как говорилось в Главе 7, правильно оптимизированная модель будет приносить форвардные прибыли способом, в общем согласующимся с ее торговлей в течение оптимизации. Другими словами, предположим, что торговая модель имеет следующий оптимизационный профиль:
- Прибыли $10,000 в год.
- 12 сделок в год.
- 65% выигрышей и 35% проигрышей.
- Проседание на $4,000 из 4 сделок.
- Средняя выигрышная серия — 2 сделки на сумму $2,500.
- Средняя проигрышная серия — 3 сделки на сумму $1,500.
Напомним, что этот оптимизационный профиль представляет среднюю многих разных оптимизаций. Если модель оптимизирована правильно и рыночные условия остаются в рамках граничных условий, включенных в оптимизационные данные, то на протяжении какого-то периода времени постоптимизационная или форвардная эффективность должна быть достаточно близка к оптимизационному профилю.
Вспомните, что показатель форвардной эффективности (WFE), полученный в процессе форвардного теста — это отношений среднегодовой форвардной прибыли к среднегодовой оптимизационной прибыли. Формула следующая:
WFE : Форвардная эффективность
ААОР : Среднегодовая оптимизационная прибыль
AAWFP : Среднегодовая форвардная прибыль
WFE = AAWFP/AAOP
Этот показатель делает процесс оценки очень простым. Хорошо, когда форвардный тест показывает прибыль и WFE как минимум 50%. Чем ближе форвардная эффективность к 100%, тем лучше. Есть наблюдения, согласно которым надлежащим образом оптимизированная торговая модель может приносить форвардные и реальные прибыли, на коротком периоде превышающие результаты оптимизации. Такое может возникнуть у системы построенной на трендследящих скользящих средних, когда на рынке сильный тренд с хорошей свинговой волатильностью и возросшей ликвидностью. Другими словами, торговая модель может превосходить свой оптимизационный профиль, когда она начинает торговать на очень благоприятном для нее рынке.
Рассмотрим ситуацию, отличную от только что описанной идеальной ситуации, в которой торговая модель в течение оптимизации была исключительно эффективной. При форвардном тестировании она дает очень скромную прибыль при очень низкой форвардной эффективности, составляющей 10%. Что это значит? Модель работает, поскольку демонстрирует постоптимизационную прибыль. Однако этот уровень эффективности очень низок.
Это может быть по трем причинам. Модель могла просто быть слабой; устойчивой, но по какой-то причине не очень эффективной. В данном случае от модели следует отказаться или рассмотреть вопрос о модификации ее структуры. Второе, модель могла быть чрезмерно оптимизирована при недостаточном внимании к степеням свободы, размеру выборки, диапазонам сканирования и т.д. Если установлено, что причина именно в этом, решением может быть новый форвардный тест, после должных исправлений. Третья и наиболее тонкая причина — в том, что размер окна форвардного теста мог быть слишком мал, вследствие чего модель оказалась зажатой и не смогла показать должной результативности. Решением может быть эксперимент с разными размерами оценочных и тестовых окон.
Резюме
Форвардный анализ должен быть финальным арбитром работо способности торговой модели. Если модель проходит форвардный тест с прибылью, стабильностью и приличной WFE, этой моделью можно уверенно торговать в реальном времени. Если в форвардном тесте модель показывает убытки, то это тупик. Если же модель демонстрирует номинальную прибыль и низкую форвардную эффективность, она требует доработки.
#algofoxtelegram