5.4.2. Адаптивная оптимизация
В алгоритм стратегии можно включить процедуру адаптивной оптимизации. Такая процедура реализуется с помощью скользящего окна оптимизации. Для формализованного описания процедуры адаптивной оптимизации воспользуемся параметрическим описанием стратегии S(P), где P обозначает вектор значений параметров, определяющих стратегию. Обозначим через τ(T) = [T – Δt + 1, T] интервал истории, заканчивающийся в определенный момент времени T и имеющий протяженность Δt дней (или других тайм-фреймов). При движении точки T из прошлого в будущее интервал τ(T) также двигается вслед за T. Предположим, что для данной стратегии определен алгоритм оптимизации A, который для интервала истории τ путем оптимизации вырабатывает вектор параметров P*(T) = A(τ(T)). Через l обозначим расстояние между моментами оптимизации, а через T0 – начальный момент времени. Тогда алгоритм моделирования торговли с адаптивной прогонкой будет выглядеть так. В моменты времени Tn = T0 + nl (где n – номер шага адаптации, пробегающий значения n = 1, 2, 3…, nlast), включается алгоритм оптимизации A, вырабатывающий новые значения параметров P*(Tn) = A(τ0(Tn)). Стратегия S(P*(Tn)) торгует на следующем за Tn интервале времени [Tn + 1, Tn + 1], после чего выполняется новый шаг адаптации и последующей торговли.
Фактически в результате введения адаптивного механизма исходная стратегия S(P), изначально обладавшая комплексом параметров P, превращается в сложную стратегию, представляющую собой последовательность (S(P*(T0)), S(P*(T1))…, S(P*(Tn))…). В сложной стратегии к исходным параметрам добавляются два новых параметра l и Δt, которые также могут быть подвергнуты процедуре оптимизации (подбору наилучших значений этих параметров). Бэктестинг стратегии, включающей периодическую реоптимизацию, может быть оценен (также как бэктестинг исходной стратегии) с помощью стандартных показателей эффективности, по которым можно принимать решение о применимости адаптивной оптимизации в каждом конкретном случае.
Адаптивная оптимизация во многих случаях позволяет строить стратегии, более устойчивые по отношению к смене фаз рынка. Однако необходимо помнить, что адаптивная оптимизация не устраняет проблему заоптимизированности стратегии, поскольку является ничем иным, как такой же оптимизацией, но с более сложной структурой. Более того, использование адаптаций в системе бэктестинга неизбежно приводит к увеличению числа оптимизируемых параметров, что, в свою очередь, может способствовать увеличению риска заоптимизированности (см. раздел 5.4.3). Тем не менее наш опыт применения адаптивной оптимизации подсказывает, что, если стратегия тестируется на достаточно большом интервале истории и генерирует достаточное количество сигналов на открытие позиций, ее будущая устойчивость более вероятна, чем в случае оптимизации на неподвижном историческом окне.
5.4.3. Проблема заоптимизированности (оverfitting)
Чрезмерная оптимизация параметров приводит к тому, что алгоритмы многих торговых стратегий демонстрируют высокие показатели эффективности на фиксированном участке прошлой истории. При этом показатели этих же стратегий могут существенно ухудшаться при попытке их применения к продолжению ценового ряда. Применительно к бэктестингу данная проблема известна как проблема заоптимизированности (overfitting, или curvefitting). Риск заоптимизированности неизбежно возникает даже для относительно простых стратегий, поскольку любой торговый алгоритм невозможен без наличия явных или неявных параметров. Для более сложных стратегий этот риск возрастает многократно.
В общем виде можно утверждать, что вероятность заоптимизированности прямо пропорциональна количеству степеней свободы, имеющихся в системе бэктестинга. При тестировании стратегий, ориентированных на торговлю акциями и фьючерсами, число степеней свободы приблизительно равно количеству параметров, используемых при оптимизации стратегии. Для опционных стратегий количество степеней свободы возрастает за счет того, что, помимо параметров, относящихся непосредственно к торговому алгоритму, существует множество параметров, связанных с формированием опционных позиций. Каждая стратегия оперирует определенным типом комбинаций, который описывается с помощью набора параметров. К этим параметрам могут относиться диапазон допустимых страйков, допустимый период времени до истечения опционов, глубина горизонта истории, используемого для расчета исторической волатильности, и многие другие. Поэтому для опционных стратегий проблема заоптимизированности стоит более остро, чем для стратегий, торгующих простыми активами.
К сожалению, не существует способа полностью нейтрализовать риск заоптимизированности. Однако частичное решение этой проблемы можно получить, соблюдая следующие общие принципы.
В качестве основного средства борьбы с проблемой заоптимизированности обычно используется так называемый walk-forward анализ. Эта методика, заключающаяся в разделении исторических временных рядов на периоды оптимизации (in-sample) и тестирования (out-of-sample), была описана в разделе 5.4.1. Основная идея заключается в том, что для бэктестинга используются данные, которые не применялись при создании и настройке стратегии. Необходимо, однако, подчеркнуть, что хорошие показатели стратегии, полученные на out-of-sample периоде, не доказывают, что стратегия не подвержена проблеме заоптимизированности. Объяснить это на первый взгляд нелогичное утверждение можно с помощью простых рассуждений. Предположим, что разработчик ставит перед автоматизированной системой следующую задачу: подобрать такие значения для параметров стратегии, что бы ее целевая функция (или функции) имела удовлетворительное значение на in-sample периоде и это значение ухудшалось бы на out-of-sample периоде не более, чем на заданную величину. В главе 2 мы видели, что в процессе оптимизации (на in-sample периоде) может быть получено множество комбинаций параметров с приемлемым значением целевой функции (так называемые зоны оптимальности). Поэтому вполне может оказаться, что хотя бы один вариант из этого множества даст удовлетворительные результаты при out-of-sample тестировании. Это означает, что хорошие результаты walk-forward анализа могут быть результатом простого подбора (заоптимизированности), и скорее всего не сохранятся в будущем при реальной торговле.
При тестировании стратегии на незнакомых для нее отрезках истории необходимо контролировать относительное число сделок. Эмпирическим путем можно определить допустимые пропорции между числом сделок и числом параметров стратегии. Важен принцип, согласно которому, чем больше параметров используется при оптимизации, тем больше должно совершаться сделок, для того что бы можно было с высокой долей вероятности считать, что риск заоптимизированности минимизирован. Это правило является простым вероятностным законом (если считать, что работа стратегии порождает случайную выборку сделок).
Если стратегия неустойчива (небольшие изменения значений параметров существенно снижают показатели стратегии), то с большой долей вероятности можно утверждать, что данная стратегия заоптимизирована (различные аспекты устойчивости были подробно рассмотрены в главе 2). Чтобы убедиться в устойчивости стратегии относительно оптимальных значений параметров, можно провести два параллельных исследования. Первое – рассмотреть изменения показателей стратегии в окрестности оптимального вектора параметров. Второй способ (не заменяющий первый) – исследовать поведение стратегии на слегка модифицированных исторических данных, полученных из исходных с помощью случайных малых возмущений. Устойчивость стратегии к небольшим изменениям значений параметров и временных рядов указывает на небольшую величину риска заоптимизированности.
5.5. Оценка прибыльности
Оценка прибыльности стратегии является многокритериальной задачей. Не существует единого показателя, с помощью которого можно было бы выразить эффективность стратегии или сравнить ее с другой стратегией. Вместо этого существует целый ряд универсальных показателей, используемых при бэктестинге любых стратегий, независимо от применяемых в