назад Оглавление вперед


[Старт] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42]


29

ный случай, то есть все сценарные спектры одинаковы и корреляция между ними нулевая, мы получили одинаковые значения (0,21) для всех сценарных спектров. Обычно так не бывает, и вы получите свое значение /для каждого сценарного спектра.

Теперь, когда мы знаем оптимальные значения для всех сценарных спектров, мы можем определить, насколько велики эти десятичные величины в денежном выражении. Для этого разделим наихудший исход (потерю) сценариев каждого спектра на отрицательное значение оптимального /этого спектра. Например, для первого сценарного спектра. Монеты 1, максимальная потеря была равна -1. Деля -1 на отрицательное оптимальное /, -0,21, получаем 4,761904762 в качестве значения /$ для Монеты 1.

Подведя итоги, укажем:

1.Начните с некоторого набора значений/для/J... , где л -количество компонент в портфеле, т. е. рыночных систем или сценарных спектров. Начальный набор значений /задается используемым методом оптимизации.

2.Переберите комбинации сценарных наборов в одометрическом порядке по индексу А: от 1 до т, для каждого к вычислите HPR и перемножьте их вместе. Попутно ведите текущую сумму показателей степени, в которые возводятся эти HPR.

3.Вьиислите последнее HPR при к - т. Возведите последнее произведение в степень, обратную сумме показателей (вероятностей) всех HPR, и получите G - среднее геометрическое HPR.

4.Это среднее геометрическое HPR дает нам высоту в (л + 1)-мерном пространстве. Нам нужно найти вершину в этом пространстве, поэтому далее нам следует выбрать и опробовать новый набор значений /, который помог бы нам найти эту вершину. Этот процесс и называется математической оптимизацией.

Математическая оптимизация или отыскание корней

Уравнения имеют левую и правую части. Вычитая одну из другой, получаем уравнение, одна из частей которого равна нулю. Отыскивая корни уравнения, вы хотите узнать, какие значения независимой переменной (-ньгх) разрешают это уравнение (это -корни). Найти корни можно с помощью традиционных методов, например методом Ньютона (метод касательных).

Можно сказать, что отыскание корней имеет отношение к математической оптимизации, так как первая производная в точке оптимума функции (т. е. на экстремуме) будет равна 0. Следовательно, вы могли бы заключить, что традиционные методы отыскания корней, например метод Ньютона, можно использовать для решения оптимизационных задач (применение собственно методов оптимизации для отыскания корней уравнения, напротив, чревато обилием трудностей).

Наша дискуссия, однако, будет касаться лишь методов оптимизации, а не методов отыскания корней, как таковых. Сведения о последних можно почерпнуть в таком уникальном источнике, как «Численные методы»*.

Методы оптимизации

Математическую оптимизацию можно вкратце описать следующим образом. У вас есть некая целевая функция (обозначим ее G), зависящая от одного или большего количества независи-

* William И. Press, Brian P. Flannery, Saul A. Teukolsky, and William T. Vetterling, Numerical Recipes: The Art of Scientific Computing, New York: Cambridge University Press, 1986.



мых переменных (которые мы обозначим /, f)- Вы хотите найти значение (-ния) независимой переменной (-ных), доставляющее минимум (или иногда, как в нашем случае, максимум) целевой функции. Максимизация и минимизация, по сути, являются одним и тем же (то, что для одного равно G, для другого будет -О).

В самом примитивном случае вы можете оптимизировать следующим образом: перебирая все комбинации значений переменных и подставляя их в целевую функцию, искать такую комбинацию, которая дает наилучший результат. Предположим, например, что мы хотим найти оптимальное /для одновременного бросания двух монет с точностью до 0,01. Тогда мы могли бы неизменно проводить расчеты для монеты 1 на значении 0,0, в то время как для монеты 2 переходить от 0,0 к 0,01 к 0,02 и так далее, пока не дойдем до 1,0. После этого мы могли бы вернуться к монете 1 и, просчитывая ее на значении 0,01, опробовать все возможные значения для монеты 2. Действуя таким образом и далее, мы придем к тому, что значения обеих переменньгх окажутся на их максимумах, то есть станут равны 1,0. Поскольку у каждой переменной в данном случае имеется по 101 возможному значению (от О до 1,0 включительно с щагом 0,01), то мы должны опробовать 101 * 101 комбинаций, то есть целевая функция должна быть рассчитана 10201 раз.

При желании, мы могли бы потребовать большей точности, чем 0,01. Тогда у нас стало бы 1001 * 1001 комбинаций, подлежащих опробованию, то есть целевую функцию пришлось бы рассчитать 1002001 раз. Если бы мы собрались взять три переменных вместо двух и потребовали бы точности 0,001, то нам пришлось бы вычислить целевую функцию 1001 * 1001 * 1001 раз, что равно 1003003001, то есть нам пришлось бы вычислить целевую функцию более одного миллиарда раз. А ведь мы используем всего лишь три переменных и требуем лишь 0,001 точности!

Хотя рассмотренный примитивный случай оптимизации наиболее понятен по сравнению с использованием всех других методов оптимизации, он же обладает сомнительным достоинством быть слишком медленным, для применения к большинству задач.

Почему не перебрать все значения первой переменной и найти оптимум для нее, потом, зафиксировав первую переменную на оптимуме, перебрать все значения второй переменной и, найдя ее оптимум, получить таким образом оптимумы для первых двух переменньгх, после чего искать оптимум для третьей переменной при фиксированных первых двух на их оптимумах и так далее, пока задача не будет решена?

Недостатком этого второго подхода является то, что часто таким способом невозможно найти оптимальный набор значений переменных. Отметьте, что, когда мы добираемся до третьей переменной, значения первых двух равны своим максимумам, как будто других переменньгх нет. Поэтому, при оптимизации по третьей переменной первые две, зафиксированные на своих оптимумах, мешают нахождению ее оптимума. То, на чем это может закончиться, представляет собой не оптимальный набор значений, а, скорее, оптимальное значение для первой переменной, оптимум для второй, когда первая зафиксирована на своем оптимуме, оптимум для третьей, когда первая зафиксирована на своем оптимуме, а вторая установлена на некоем субоптимуме, котбрый оптимален при условии помех со стороны первой переменной, и так далее. Иногда удается провести такой перебор по всем переменным и в итоге получить-таки оптимальный набор значений переменных, но когда переменных больше трех, он становится все более и более длительным, если вообще осуществимым, учитывая влияние других переменных.

Кроме двух описанных грубых методов математической оптимизации существуют и более совершенные. Это - замечательная ветвь современной математики, и я настоятельно призываю вас познакомиться с ней, просто в надежде, что вы извлечете из этого какую-то долю того удовлетворения, которую получил я от ее изучения.

Экстремум, максимум это или минимум, может быть либо глобальным (действительно наибольшее или наименьшее значение), либо локальным (наибольшее или наименьшее значение в непосредственной окрестности). Наверняка знать глобальный экстремум почти невозможно, так как вы не представляете себе область значений независимых переменных. Но если область значений вам известна, то вы просто нашли локальный экстремум. Поэтому зачастую, когда люди говорят о глобальном



экстремуме, они в действительности имеют в виду локальный экстремум на очень широкой области значений независимых переменных.

Для отыскания максимумов или минимумов в таких случаях сушествует масса методов. Любой из них, как правило, накладывает на переменные некие ограничения, которые должны удовлетворяться применительно к экстремуму. К примеру, в нашем случае эти ограничения заключаются в том, чтобы все независимые переменные (значения f) были бы большими или равными нулю. Нередко требуется выполнение ограничиваюших функций (т. е. чтобы значения других функций от используемых переменных были бы больше/меньше или равны некоторым величинам). Линейное программирование с его симплекс-методом - эта весьма хорошо разработанная область такой оптимизации в условиях ограничений - применима лишь, когда и оптимизируемая, и ог-раничиваюшие функции являются линейными (многочленами первой степени).

В целом, различные методы математической оптимизации могут быть классифицированы по принципу используемого аппарата следующим образом:

1.По размерности целевых функций: с одной переменной (двумерных) или многомерньгх (с размерностью три и более).

2.По тому, линейный метод или нелинейный. Если, как отмечалось ранее, и функция, подлежащая оптимизации, и ограничивающие функции являются линейными (т. е. не содержат ни одного из своих аргументов в степени, большей 1), имеется масса очень хорошо разработанных методов решения задачи отыскания экстремума.

3.По использованию производньгх. Некоторые методы требуют вычисления первой производной целевой функции. В многомерном случае первая производная представляет собой векторную величину, называемую градиентом.

4.По эффективности вычислений. То есть такие методы, которые применяются, когда вам нужно найти экстремум возможно быстрее (т. е. с меньшим количеством вычислений) и возможно проще (нечто, сочетающееся с методами, требующими вычисления производньгх) и с использованием возможно меньшей компьютерной памяти.

5. По устойчивости. Помните, вы хотели найти локальный экстремум на очень широкой области значений независимых переменных и использовать его вместо глобального экстремума. Поэтому, если в этой области имеется более одного экстремума, вы не захотите попасть в объятия такого из них, который менее экстремален.

В нашей дискуссии мы будем рассматривать лишь многомерный случай. То есть мы займемся лишь теми алгоритмами оптимизации, которые относятся к двум и более переменным (т. е. с числом сценарных наборов, большим двух). Как это подробно показано в «Формулах управления портфелем», при отыскании единственного значения /, то есть /для одной рыночной системы или одного сценарного набора, как правило, наиболее эффективным и быстродействующим методом будет параболическая интерполяция.

Несмотря на обилие хороших алгоритмов для многомерного случая, идеального все же нет. Какие-то методы эффективнее других применительно к определенным типам задач. Как правило, основным критерием отбора среди методов многомерной оптимизации являются личные предпочтения (при наличии компьютерных мощностей, необходимых для выбранного метода).

Многомерные методы можно классифицировать по пяти широким категориям.

Во-первых, это симплекс-методы скорейшего подъема. Они, вероятно, становятся наименее эффективными из всех, если вычислительная нагрузка немного увеличивается. Вместе с тем, они обычно легко применимы и не требуют вычисления частных производных первого порядка. К сожалению, им свойственна медлительность, а требуемый объем используемой памяти имеет порядок л1

Второе семейство образуют direction set methods, известные также как line minimization methods или (методы сопряженных направляющих) conjugate direction methods. Наиболее примечательными среди них являются различные методы Пауэла. В смысле скорости они эффективнее симплекс-методов скорейшего подъема (не путайте с симплекс-алгоритмом для линейных функций,

[Старт] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42]