ПОИСК ОПТИМАЛЬНЫХ ПО ПАРЕТО СТРАТЕГИЙ
|
Вопрос об использовании оптимизации для стратегий является спорным, но я никого переубеждать не собираюсь. Хочу лишь заметить, что, придумав какую-либо стратегию, без параметров, для исторических данных, можно сказать, что она работает именно на них, и делать выводы о перспективе её использования так же невозможно, как и для стратегии с параметрами. И уже в предположении о том, что в динамики изменения котировок присутствует связь с прошлым, можно эмпирически подбирать лучшие решения, будь то отдельные стратегии или их семейства, зависящие от параметров. Но возможна такая ситуация, когда параметров много, или тестируемых данных мало, на которых решение может себя вести очень обособленно. Это проверяется путём проведения дополнительных тестов на других данных. Остановимся подробней на самом поиске оптимальных решений. Очевидно, основной критерий качества стратегии, это прибыль которую она может показать в будущем, поэтому, упростив условия задачи путём проведения тестов только на исторических данных, нельзя руководствоваться одним только этим показателем, потому что на истории он никак не отражает основную суть задачи. Таким образом, необходимо анализировать такой критерий, или несколько, который ведёт себя наиболее устойчиво к данным. Такими критериями могут быть PF(Profit Factor), DD(Drawdown), Percent Profitable, Ratio Avg. Win/Avg. Loss и т.д. Но при этом, получив решение, оптимально по одному из критериев, совсем не обязательно, что оно будет оптимально по какому-либо другому. А хотелось бы, например, решить задачу – минимизировать риск, максимизировать прибыль, причём одновременно. Постановка задачи в таком виде корректна, и более того имеет решение, быть может, оно будет не так тривиально выглядеть, потому что, как правило, представляет, из себя набор решений или целое множество. Например, решение двойственных задач метода Марковица об инвестиционном портфеле, будут частным случаем решения многокритериальной задачи минимизации риска и максимизации доходности. Решением такой задачи оптимизации, с несколькими критериями, является множество Парето. Для тех, кто не знаком с многокритериальным анализом, попробую объяснить это понятие в двух словах. Предположим, имеется n критериев, которые можно представить как пространство R^n. Элемент x соотносится с y как:
Элемент x* \in X- называется оптимальным по Парето, если не существует такого x \in X, который будет “лучше” x*. Множество Парето – множество оптимальных по Парето элементов.
Пример 1. Пусть у нас имеется набор для 2 критериев: (1,2), (2,2), (1,3), (2, 1), (1,1), (2,2). Множество Парето для этого набора будет (2,2), (1,3), (2,2), а если мы добавим ещё (3,2), то останется (3,2) и (1,3). Замечание: Множество Парето, содержит в себе подмножество всех элементов, каждый из которых является «не хуже» всех остальных.
Пример 2. Окружность в R^2:
Рис. 1: Множество Парето для окружности.
Множество Парето, для этой окружности будет дуга, выделанная на рисунке(Рис. 1).
Пример 3. Результат оптимизации стратегии для Сбербанка Генетическим Алгоритмом по критериям Profit Factor и Drawdown(Рис. 2):
Рис. 2: Множество Парето для 2-х критериев.
Т.е. множество Парето содержит решения как оптимальные по одному из критериев, так и промежуточные варианты, которые таковыми не являются, но представляют не меньший интерес для рассмотрения. Это хорошо видно на примере, где оптимальным по DD является решение, отмеченное левой выноской(2.91, -657), а интуитивно понятно, что другое отмеченное решение(3.87, -658) имеет лучшие показатели, и оба они принадлежат множеству Парето.
Пример 4. Результат оптимизации при тех же исходных данных по 3 критериям: Profit Factor, Drawdown и Net Profit (Рис. 3):
Рис. 3: Множество Парето для 3-х критериев (Ось X – Profit Factor, Y – Drawdown, Z – Net Profit).
Множество Парето в этом случае образует скопления в неких областях, но в целом, представлено более хаотичным множеством (красные шары)+, по которому сложно делать какие-либо выводы. Результат носит больше экспериментальный характер и интересен скорее в определении структуры самого множества, и информативности критериев в данной их комбинации.
Для поиска множества Парето в конечных множествах, можно воспользоваться перебором, как универсальным методом, или Генетическим Алгоритмом(ГА), причём во втором случае поиск можно совершать без ограничения на мощность множества. Для того, что бы показать, как можно применить ГА для решения многокритериальных задач, необходимо вначале описать какой-нибудь способ его реализации. Для понимания ГА, можно ничего не знать о задачах оптимизации, но представления о них, помогут корректно поставить задачи и искать устойчивые решения. Например, некоторые задачи можно решать методом градиентного спуска. Это, как правило, унимодальные (с предположением об одном экстремуме) задачи оптимизации. Класс задач, разрешимый при помощи ГА не ограничивается задачами оптимизации, это могут быть так же задачи разбиения на классы, идентификации, а так же поиска ландшафта поверхностей. Но очень хорошо себя зарекомендовал, с практической точки зрения, в решении безусловных задач на поиск глобального экстремума, с множеством локальных. Причём, в этом случае, на целевую функцию не накладывается каких либо ограничений, кроме её существования на всей области определения. Есть ещё другие методы решения таких задач, но для всех, кроме простого перебора (а для многих задач он в принципе не применим), присутствует вероятность попадания в локальный экстремум, и никакой из них, не может гарантировать, что найдено верное решение. Для ГА такая вероятность на порядки меньше других методов. Т.е приходится жертвовать сходимостью в пользу универсальности поставленных задач. Например, функция одной переменной, заданана всей прямой, коме 0, как 0, а в 0 равна 1. Задачу с такой целевой функцией можно решить только аналитическим методом. При этом можно утверждать, что если какой-либо метод оптимизации, включая перебор, на какой-то конкретной задачи сходится, то сойдётся и ГА, с соответствующими параметрами. Также при помощи ГА возможно решение задачи условной оптимизации, но при этом задача решается не напрямую, как без заданных ограничений, а поэтапно через вспомогательные задачи, используя функцию Лагранжа. Итак, пусть у нас есть задача безусловной оптимизации: на области определения x \in X, заданна целевая вектор-функция F(x), для n критериев. И для простоты положим X равным R^m. Разобьем пространство фенотипов R^m гиперплоскостями, так что бы получилось конечное количество блоков, от этого разбиения зависит точность решения (бесконечность области определения не вызывает никаких сложностей, так как для разбиения можно воспользоваться преобразованием tg(x)). Каждому такому блоку можно взаимно однозначно сопоставить m-мерный вектор, образованный порядковым номером блока вдоль каждой оси. Такой вектор называется хромосомой, а его координаты - генами. Множество хромосом образует дискретное пространство генотипов, или генофонд. На практике, такая процедура проделываться не обязательно в самом начале, а в любой момент, когда есть необходимость изменить точность расчётов, но в таком случае придётся устанавливать соответствие между предыдущим и новым генофондом. Базовая популяция формируется произвольным набором хромосом, после чего оценивается её приспособленность. Приспособленность хромосомы оценивается целевой функцией F, для соответствующих фенотипов. Дальнейшие действия отображают суть репродуктивного цикла, которые можно представить в следующем виде:
Теперь подробней по каждому из пунктов. Выбор производится двумя типами: случайным способом или рулеткой. В первом случае, случайно выбирается, какая особь из популяции будет родителем, а во втором - выбор происходит уже не по равномерному распределению, а для более приспособленных особей определяется большая вероятность стать родителями. Для формирования пар, применимо больше способов: панимексия (panmixia) – случайным образом, инбридинг(inbreeding) – наиболее похожие особи, аутбридинг (outbreeding) – наиболее непохожие. Причём инбридинг и аутбридинг может быть как по фенотипу, так и по генотипу. Кроссовер проводится для пары хромосом, и результатом становятся две новые хромосомы – дети. Для двух хромосом, представленных двоичным кодом, берётся произвольная часть кода одной хромосомы, и добавляется недостающая часть от другой, для другого ребёнка наоборот, а в сложном таких разбиений делается несколько. Оператор мутация реализуется, как инвертирование каждого бита двоичного кода хромосомы с некой вероятностью, как независимое испытание. После всех этапов формирования популяции проводиться оценка приспособленности полученных особей, и по результатам которой формируется новая популяция. В случае одного критерия здесь возможны: турнирный отбор - сравнивая две особи, выбирается лучшая из них, элитный отбор - выбираются особи, приспособленность которых выше средней. Для критериев больше одного для отбора можно использовать целевую функцию, со взвешенными критериями, или множество Парето. После чего для полученной популяции действия с 1 по 6 пункт можно повторить, если не выполнены условия остановки. Дополнительную информацию о ГА, вы можете найти на http://algolist.manual.ru/ai/ga/ga1.php. Поиск оптимальных параметров стратегии по каждому из критериев, очевидно, является задачей, которую можно решить перебором, следовательно, и многокритерийальная задача решается перебором, а значит, найдутся такие параметры ГА, при которых метод сойдётся. На выбор параметров очень сильно влияет вид целевой функции. И в частных случаях, например, для табличной функции, заданной случайными числами, решение перебором, или стохастическим методом, с заданной вероятностью, может быть найдено быстрее, но такой пример в практике скорее как исключение, чем правило. ГА при виде функций, отличного от этого, может эффективно использовать всевозможные свойства и закономерности, при достижении оптимального результата. Поэтому, грубо говоря, чем функция более естественно выглядит, тем алгоритм быстрее сходится, и соответственно меньше вычислений для этого требуется.
Колышкин А. Обнинск 2004.
|