Во всех рассмотренных ранее примерах оптимизировались всего два параметра, для каждого из которых тестировались 60 значений. Соответственно, оптимизационное пространство состояло из 3600 ячеек. В среднем продолжительность одной прогонки (вычисление одного узла) составляла порядка одной минуты (при использовании системы параллельных вычислений на нескольких современных персональных компьютерах). Это означает, что для построения полного оптимизационного пространства, аналогичного рассматривавшимся ранее, требуется около 60 часов. Очевидно, что это неприемлемо для оперативной работы по построению и модификации автоматизированных торговых стратегий. Более того, добавление в систему лишь одного дополнительного параметра (всего три) увеличивает время вычислений до пяти месяцев! Все это делает полный перебор не самым практичным, а во многих случаях и вовсе не применимым, методом поиска оптимальных решений.
Решить эту проблему можно путем применения специализированных методик, не требующих полного перебора всех узлов оптимизационного пространства. Существует целая группа методов (от самых простых до невероятно сложных), позволяющих вести поиск максимума функции целенаправленно. Эта область прикладной математики продолжает быстро развиваться, постоянно разрабатываются новые, все более и более высокотехнологичные методики. В этом разделе мы не будем касаться двух самых популярных (из категории сложных) разделов оптимизации – генетических алгоритмов и нейронных сетей. Во-первых, эти методы настолько сложны, что каждый из них требует как минимум отдельной книги (количество публикаций на эту тему растет с каждым годом). Во-вторых, задачи параметрической оптимизации с ограниченным количеством параметров в большинстве случаев можно решить менее затратными способами (чрезвычайно сложные торговые системы, требующие применения этих методик, не являются предметом этой книги). В этом разделе мы рассмотрим пять специализированных методов поиска оптимальных решений. Эти методы были выбраны по принципу эффективности (с учетом специфики решаемых задач) и простоты их практической реализации.
Методы оптимизации, не требующие полного перебора, имеют два существенных недостатка. Предполагается, что оптимизационное пространство унимодально, то есть имеет единственный экстремум. При наличии в пространстве параметров нескольких локальных экстремумов (то есть когда пространство полимодально) эти методы могут привести к решению, которое не является наилучшим (то есть выбрать локальный экстремум вместо глобального максимума). Образно говоря, такую ситуацию можно описать как восхождение на вершину холма вместо покорения расположенного неподалеку горного пика. Это общий недостаток всех методов, использующих значения целевой функции в непосредственной близости от ранее вычисленных узлов, для постепенного улучшения значения функции. Это объективный недостаток, присущий всем без исключения методам целенаправленного поиска. Как мы уже сказали, гарантию нахождения глобального экстремума в общем случае дает лишь полный перебор всех узлов оптимизационного пространства.
Существует достаточно простой, хоть и затратный с точки зрения времени, способ решения этой проблемы. Если из содержательных соображений невозможно обосновать наличие в оптимизационном пространстве единственного экстремума, являющегося глобальным максимумом, следует многократно повторить процедуру «поиск экстремума при разных стартовых условиях» (то есть каждый раз начинать оптимизацию с разных узлов пространства). Стартовые узлы можно распределить равномерно в оптимизационном пространстве или выбрать случайным образом. Хотя достижение экстремума в этом случае не гарантируется, с практической точки зрения вероятность его получения может быть доведена до приемлемого уровня. Разумеется, чем больше попыток будет сделано, тем выше вероятность того, что хотя бы одна из них приведет к нахождению глобального максимума (однако и временные затраты также быстро возрастают). Чем больше оптимизационное пространство, тем больше попыток придется сделать.
Второй недостаток заключается в том, что найденное в результате целенаправленного поиска решение не несет в себе информацию о значениях целевой функции в узлах, соседствующих с узлом оптимального решения. Это означает, что мы не имеем возможности определить свойства оптимальной области, окружающей найденный экстремум. Следовательно, мы не в состоянии оценить степень робастности оптимального решения. Как обсуждалось в разделе 2.5, робастность является одним из основных показателей надежности оптимизации. Решить эту проблему можно только одним способом – вычислить значения целевой функции во всех узлах, окружающих найденные экстремумы. После этого можно оценить их робастность (используя одну из методик, описанных в разделе 2.5) и выбрать наилучший вариант в качестве оптимального решения.
2.7.1. Обзор основных методов целенаправленного поиска
Метод покоординатного подъема
Метод покоординатного подъема (обычно в названии этого метода используется слово «спуск», однако, как уже объяснялось ранее, для оптимизации торговых стратегий предпочтительно решать задачу максимизации прибыли) состоит в том, что последовательно производится поиск по каждому параметру, выбирая их один за другим по очереди. Алгоритм данного метода можно представить в следующем виде.
1. Выбирается стартовый узел, с которого начинается процесс оптимизации (выбор начальной точки требуется для инициации любого метода целенаправленного поиска). Выбор может быть случайным, осознанным (то есть основанным на предварительных знаниях разработчика) либо вычисленным (например, если будет производиться множество повторяющихся оптимизаций, то стартовые узлы могут распределяться в оптимизационном пространстве равномерно).
2. Поскольку параметры оптимизируются не одновременно, а последовательно, необходимо определить их очередность. В большинстве случаев очередность не имеет большого значения. Однако если какой-либо параметр более важен, чем другие, то начинать оптимизацию нужно именно с него.
3. Начиная со стартовой точки, находится наилучшее решение по первому параметру. Поиск его осуществляется каким-либо методом одномерной оптимизации. В большинстве случаев допустимо использовать полный перебор, поскольку количество вычисляемых узлов в этом случае относительно невелико. При исследовании первого параметра значения всех других параметров остаются зафиксированными на значениях стартового узла.
4. Переход к оптимизации по следующему параметру производится после того, как найдено наилучшее решение по первому. Вновь производится одномерная оптимизация, при этом значения всех других параметров остаются зафиксированными на значениях узла, найденного в ходе оптимизации первого параметра.
5. Закончив один оптимизационный цикл (заключающийся в одномерной оптимизации каждого из параметров), возобновляем процедуру, начиная с первого по списку параметра. Процесс останавливается после того, как очередной оптимизационный цикл не находит решение, превосходящее по значению целевой функции предыдущее.
Рассмотрим практическое применение данного алгоритма на примере оптимизации базовой дельта-нейтральной стратегии по целевой функции «прибыль» (оптимизационное пространство показано на рис. 2.2.2). Для того чтобы представить процедуру поиска оптимального решения визуально, ограничим области допустимых значений параметров диапазонами 2–80 для параметра «число дней до экспирации» и 100–300 для параметра «период истории для расчета HV». Выполнение алгоритма происходит следующим образом:
1. Выбираем стартовую точку. Предположим, что случайным образом был выбран узел с координатами 60 и 130. На рис. 2.7.1 данный узел отмечен номером 1.
2. Зафиксировав параметр «число дней до экспирации» на значении 60, вычисляем