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

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

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

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

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

Генетический алгоритм

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

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

Алгоритм содержит следующие основные шаги:

Длина гена. Вы должны задать длину гена. Ген – это двоичное представление члена популяции вариантов решений. Каждый член этой популяции характеризуется значением каждой переменной (т. е. значением f для каждого сценарного спектра). Так, если мы принимаем длину гена в двенадцать раз больше количества сценарных спектров, то каждой переменной (т. е. значению f) у нас будет соответствовать по двенадцать бит. Двенадцати битов достаточно для представления величины в интервале от 0 до 4095. Последнее число представляется в виде:

20 + 21 + 22 + ... + 211 = 4095

Возводим 2 в степень 0 и прибавляем 2 в следующей степени, пока не дойдем до степени, равной количеству битов минус 1 (т. е. 11, в данном случае). Если имеется, скажем, три сценарных спектра и на каждый из них мы используем длину в двенадцать битов, то длина гена каждого варианта решения есть 12 * 3 = 36 бит. То есть ген в данном случае – это строка из 36 двоичных битов.

Обратите внимание, что данный способ кодирования двоичных строк подходит только для целых величин. Но мы можем приспособить его и для чисел с плавающей запятой с помощью некоторого постоянного делителя. Так, если мы выберем постоянный делитель равным, скажем, 1000, то сможем представлять числа от 0/1000 до 4095/1000, или от 0 до 4,095, с точностью до 0,001.

Теперь нам понадобится процедура преобразования вариантов решений в кодовые двоичные строки и обратно.

Инициализация. Требуется исходная популяция – популяция вариантов решений. Битовые строки этого первого поколения закодированы случайным образом. Более высокая численность популяции повышает вероятность того, что мы найдем хорошее решение, но при более высокой численности требуется большее время обработки.

Задание целевой функции. Битовые строки декодируются в свои десятичные эквиваленты, которые используются для задания целевой функции. (Например, при наличии двух сценарных спектров целевая функция дает нам величину координаты Z, или высоту трехмерного изображения, в предположении, что величины f соответствующих сценарных спектров – это координаты X и Y.) Это проделывается для всех вариантов решений, и значения целевой функции для них сохраняются. (Важно: значения целевой функции должны быть неотрицательными!)

Репродуцирование

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

Случайный отбор по приспособленности. Теперь ранжированные целевые функции упорядочиваются следующим образом. Если, скажем, у первой целевой функции коэффициент приспособленности равен 0,05, у второй – 0,1, а у третьей – 0,08, то они следующим образом включаются в схему отбора (образуются интервалы):

первый вариант 0 – 0,05;
второй вариант 0,05 – 0,15;
третий вариант 0,15 – 0,23.

И так продолжают далее, пока верхняя граница последнего варианта не окажется на 1,0.

Далее генерируются два случайных числа в интервале от 0 до 1, нужные для определения на основе предыдущей схемы отбора, какими будут два родителя. Теперь для каждого варианта решения следующего поколения нужно выбрать двух родителей.

Кроссовер. Последовательно формируется каждый бит ребенка – нового варианта решения популяции. Начинают с копирования первого бита первого родителя в первый бит ребенка. Одновременно с этим вы должны генерировать случайное число. Если это случайное число оказывается меньше или равно вероятности кроссовера, деленной на длину гена, то переключаемся на копирование битов от другого родителя. Так, если у нас три сценарных спектра с двенадцатью битами для каждой переменной, то длина гена равна тридцати шести. Если используемая нами вероятность кроссовера равна 0,6, то для переключения на копирование кода другого родителя в последующих битах, генерируемое при каждом бите случайное число должно быть меньше 0,6/36, или 0,01667. Это продолжается до тех пор, пока все биты не будут скопированы в коде ребенка. Данную операцию нужно проделать для всех новых членов популяции.

Обычно вероятности кроссовера находятся в интервале от 0,6 до 0,9. Так, вероятность кроссовера 0,9 означает, что шансы возникновения кроссовера у ребенка будут равны 90%, в среднем; то есть 10% шансов будет за то, что ребенок будет точной копией одного из родителей.

Мутация. Попутно с копированием каждого бита родителя в бит ребенка генерируется второе случайное число. Если это случайное число оказывается меньше или равно вероятности мутации, то данный бит инвертируется. То есть, бит, бывший 0 у родителя, становится 1 у ребенка, и наоборот. Мутация помогает сохранить разнообразие в популяции. Вероятность мутации обычно должна быть невелика (= 0,001), иначе алгоритм вырождается в случайный поиск. Однако по мере приближения алгоритма к оптимальному варианту, мутация приобретает все большее значение, ибо кроссовер не может сохранить генетическое разнообразие в столь локализованном объеме (п + 1)-мерного пространства.

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

Для примера рассмотрим реализацию генетического алгоритма с целевой функцией вида:

Y = 1500 – (X – 15)2

Для простоты в этом примере у нас будет только одна переменная, то есть каждый член популяции будет нести двоичный код только для этой одной переменной.

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

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

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

Теперь путем случайного отбора по приспособленности определяются Родители 1 и 3 первого поколения для Индивидуума 1 второго поколения (заметьте, что Родитель 2 с приспособленностью 0 погиб и не передаст далее своих генетических свойств). Предположим, что случайный кроссовер происходит после четвертого бита. Поэтому, наследуя первые четыре бита от Индивидуума 1 и последний бит от Индивидуума 3 первого поколения, Индивидуум 1 во втором поколении принимает вид 01011.

Предположим, что Индивидууму 2 второго поколения выпадают те же родители; кроссовер происходит только после первого и третьего битов. То есть он наследует бит 0 от Индивидуума 1 первого поколения, биты 11 в качестве второго и третьего битов от третьего индивидуума первого поколения и два последних бита от первого индивидуума первого поколения. В результате этого генетический код второго индивидуума второго поколения оказывается равным 01110.

Предположим далее, что в оба родителя третьего индивидуума второго поколения попадает Индивидуум 1. То есть третий индивидуум во втором поколении получает точно такой же генетический материал, как у первого индивидуума первого поколения, а именно 01010.

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

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

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

Обратите внимание, насколько во втором поколении поднялось, или эволюционировало, среднее значение Y.
Содержание Далее

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