Все задачи оптимизации сводятся к отысканию наибольшего или наименьшего значения некоторой функции, которую принято называть целевой функцией. Она представляет собой отображение вектора значений параметров (которые являются аргументами функции) на число, являющееся значением функции в определенной точке оптимизационного пространства. Целевая функция может быть задана формулой или расчетным алгоритмом (который по заданному набору параметров вычисляет значение оптимизируемой величины) или браться из эксперимента. Методы поиска оптимальных решений зависят от свойств целевой функции и той информации о ней, которая является доступной в процессе решения задачи.
В соответствии со сложившимися научными традициями, задачи оптимизации принято решать путем определения наименьшего значения целевой функции. Несмотря на то что с практической точки зрения нахождение максимального и минимального значений – это противоположные задачи, для их решения могут применяться одни и те же методы. Для этого следует переформулировать задачу таким образом, чтобы минимум исходной задачи соответствовал максимуму переформулированной (например, взяв целевую функцию с противоположным знаком или взяв обратную к ней величину в качестве новой целевой функции). Тогда алгоритм, отыскивающий максимум новой задачи, тем самым найдет минимум первоначальной (и наоборот). Несмотря на сложившиеся традиции, мы будем формулировать оптимизационные задачи как поиск максимумов. Это объясняется тем, что одной из основных целевых функций при оптимизации торговых стратегий является прибыль и различные производные от нее. Поэтому с психологической точки зрения комфортнее максимизировать прибыль, а не минимизировать ее.
Исторически теория оптимизации работала почти исключительно с целевой функцией, задаваемой аналитической формулой. В наиболее простых с математической точки зрения случаях формула представляет собой дифференцируемую функцию. Для исследования ее свойств (участки возрастания и убывания, точки экстремума) может использоваться производная, что позволяет строить эффективные алгоритмы поиска оптимального решения. Приравнивание к нулю производных по всем параметрам и решение полученной системы уравнений позволяет получить изящное решение в общем виде.
Современные потребности, поддерживаемые впечатляющими достижениями научно-технического прогресса, привели к существенному расширению круга решаемых прикладных задач. Во многих из них целевая функция не задана аналитически и не может исследоваться с помощью производных. В этих условиях значения функции могут быть получены только путем алгоритмических расчетов.
Методы, использующие алгоритмические расчеты и не требующие вычисления производных целевой функции, называются прямыми методами. Несомненным достоинством прямых методов является то, что от целевой функции не требуется дифференцируемости. Более того, она может быть не задана в аналитическом виде. Единственное на чем основаны алгоритмы прямых методов, это возможность определения значений целевой функции. Практически все задачи, требующие оптимизации торговых систем, решаются на основе применения алгоритмических моделей. Поэтому в настоящей главе мы будем заниматься только прямыми методами оптимизации.
Решение задачи оптимизации существенно осложняется в тех случаях, когда необходимо использовать более одной целевой функции. При оптимизации торговых стратегий эта проблема возникает почти всегда. Основная целевая функция для таких стратегий – прибыль. Однако невозможно ограничиться только этим показателем. Необходимо принимать во внимание также изменчивость прибыли, максимальные просадки, долю прибыльных сделок, показатели риска и многие другие важные факторы, каждый из которых является отдельной целевой функцией.
Особенность использования нескольких целевых функций заключается в том, что максимум одной функции редко совпадает максимумом другой. Напротив, разные целевые функции, как правило, оказываются противоречащими друг другу – оптимальные значения одной из них могут оказаться сколь угодно плохими с точки зрения другой. (Подобная ситуация уже рассматривалась нами в разделе 1.6.) Поиск путей эффективного использования нескольких целевых функций составляет предмет теории многокритериальной оптимизации. Можно выделить три основных подхода к многокритериальной оптимизации: