Крупнейшие фондовые биржи мира Торгуемые инструменты Стратегии биржевой игры Лучшие биржевые брокеры
Крупнейшие фондовые биржи Стратегии биржевой игры Лучшие биржевые брокеры

Лучший Форекс-брокер – компания «Альпари». Более 2 млн. клиентов из 150 стран. На рынке – с 1998 года. Выгодные торговые условия, ECN-счета с доступом к межбанковской ликвидности и моментальным исполнением, спреды – от 0 пунктов, кредитное плечо – до 1:1000, положительные отзывы реальных трейдеров.

Винс Р. Новый подход к управлению капиталом

В своей книге «Новый подход к управлению капиталом» Ральф Винc демонстрирует свой талант говорить о высоких и сложных концепциях и методиках обычным, понятным любому языком. Книга является неисчерпаемым ресурсом для всех профессионалов в области инвестиций, особенно для трейдеров на рынке ценных бумаг, на рынке фьючерсов и опционов, для всех институциональных инвесторов и для управляющих инвестиционными портфелями.

Какой брокер лучше?         Альпари         Just2Trade         R Trader         Intrade.bar        Сделайте свой выбор!
Какой брокер лучше?   Just2Trade   Альпари   R Trader

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

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

В самом примитивном случае вы можете оптимизировать следующим образом: перебирая все комбинации значений переменных и подставляя их в целевую функцию, искать такую комбинацию, которая дает наилучший результат. Предположим, например, что мы хотим найти оптимальное f для одновременного бросания двух монет с точностью до 0,01. Тогда мы могли бы неизменно проводить расчеты для монеты 1 на значении 0,0, в то время как для монеты 2 переходить от 0,0 к 0,01 к 0,02 и так далее, пока не дойдем до 1,0. После этого мы могли бы вернуться к монете 1 и, просчитывая ее на значении 0,01, опробовать все возможные значения для монеты 2. Действуя таким образом и далее, мы придем к тому, что значения обеих переменных окажутся на их максимумах, то есть станут равны 1,0. Поскольку у каждой переменной в данном случае имеется по 101 возможному значению (от 0 до 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. По устойчивости. Помните, вы хотели найти локальный экстремум на очень широкой области значений независимых переменных и использовать его вместо глобального экстремума. Поэтому, если в этой области имеется более одного экстремума, вы не захотите попасть в объятия такого из них, который менее экстремален.

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

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

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

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

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

Третье семейство образуют метод сопряженных градиентов conjugate gradient methods. Среди них выделяются методы Флетчера-Ривза и тесно примыкающие к ним методы Полака-Рибьера. Они тяготеют к группе наиболее эффективных методов в смысле скорости и памяти (порядка п), но требуют вычисления частных производных первого порядка.

Четвертое семейство методов многомерной оптимизации образуют свази-ньютоновы, или методы с переменной метрикой variable metric methods. Туда входят алгоритмы Дэвидсона-Флетчера-Пауэла (DFP) и Бройдена-Флетчера-Годдфарба-Шанно (BFGS). Подобно conjugate gradient methods, они требуют вычисления частных производных первого порядка, обычно быстро приводят к экстремуму, однако эти алгоритмы требуют большей памяти (порядка n2). Вместе с тем они уравновешивают достоинства conjugate gradient methods тем, что дольше известны, шире используются и лучше документально обеспечены.

Пятое семейство – это имитационные методы многомерной оптимизации. Они гораздо более примечательны, поскольку движутся к экстремуму при помощи процессов моделирования, позаимствованных в природе. В их число входят метод генетического алгоритма (genetic algorithm) и имитируемого отжига (simulated annealing), моделирующего процесс кристаллизации, в ходе которого система находит свое минимальное энергетическое состояние. Среди прочих эти методы отличаются наибольшей устойчивостью, почти иммунитетом по отношению к локальным экстремумам, и могут решать задачи огромной сложности. Но они не всегда самые быстрые и стать такими в большинстве случаев не смогут. Вместе с тем, они так новы, что про них еще мало что известно.

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

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

Применимость данного алгоритма, хотя он часто используется в нейронных сетях, не ограничивается исключительно ими. В наших условиях мы можем использовать его в качестве метода отыскания оптимальной точки на (п + 1)-мерном изображении.
Содержание Далее

Как начать торговать на фондовой бирже