Генетические
Энциклопедия торговых стратегий














Генетические

Генетические оптимизаторы могут иметь множество ценных характеристик, например скорость (особенно при наличии риска "комбинаторного взрыва"). Генетический оптимизатор работает на несколько порядков быстрее, чем оптимизатор с лобовым подходом, особенно при наличии множества правил или значений параметров. Это происходит потому, что, как и при оптимизации под управлением пользователя, идет фокусировка на важных участках пространства решений, а тупики пропускаются. В противоположность оптимизации под управлением пользователя селективный поиск достигается без вмешательства человека. Генетические оптимизаторы могут быстро решать сложные задачи и более устойчивы, чем другие подходы, к эффектам локальных максимумов или (минимумов) на поверхности значений функции пригодности (или затрат). Вычислительные методы плохи тем, что всегда ведут к ближайшей вершине или впадине, не обращая внимания на более высокие вершины или впадины, которые могут существовать в других местах. При этом хороший генетический оптимизатор часто находит лучшее глобальное решение - великолепный результат при сложной форме поверхности. Еще одна характеристика генетической оптимизации - то, что она хорошо работает на поверхностях с разрывами, плоскими участками и другими сложными неупорядоченными формами. Генетический метод делит это преимущество с другими неаналитическими методами - лобовым подходом, управлением пользователем и пр. При помощи генетического оптимизатора можно найти решения, максимизирующие такие показатели, как чистая прибыль, доходность, отношение Шарпа и подобные, для которых поверхность функции пригодности имеет сложную форму, с трудом поддающуюся анализу. Это не означает, что такой оптимизатор не применяется для задач с простыми поверхностями - уступая в скорости вычислительным методам, генетический оптимизатор защищен от влияния ловушек "локальных экстремумов". В общем, генетические оптимизаторы - предпочтительные методики для систем с множеством правил или параметров; они особенно полезны, если необходимо найти глобальное решение или работать с весьма сложными (прерывистыми и недифференцируемыми) функциями пригодности или расходов. Хотя специализированные оптимизаторы могут обгонять генетические на избранных задачах, для многоцелевой оптимизации генетический метод - один из самых мощных доступных инструментов. На что похож генетический оптимизатор в работе? Мы перевели на C + + код для системы с пересечением скользящих средних, упоминавшейся ранее, чтобы при помощи C-Trader toolkit решать задачу оптимизации двух параметров - LenA и LenB. LenA, период первой скользящей сред ней, исследовался при значениях от 2 до 50, так же как и LenB - период второй скользящей средней. Оптимизация велась по показателю общей прибыли, чтобы можно было напрямую сравнивать результаты с полученными ранее методом оптимизации с лобовым подходом. Ниже приведен код для системы пересечения скользящих средних, написанный на C++: static void Model (float *parms, float *dt, float *opn, float *hi, float *lo, float *cls, float *vol, float *oi, int nb, TRDSIM &ts, float *eqcls) { // Выполнение тестирования всех моделей скользящих средних, // используя следующие аргументы: набор // parms // dt // opn // hi // lo // els // vol // oi // nb // ts // eqcls [1..MAXPRM] параметров набор [l..nb] дат в формате ГГММДД набор [1..nb] цен открытия набор [l..nb] набор [1..nb] максимальных цен минимальных цен набор [1..nb] цен закрытия набор [1..nb] значений объема набор [1..nb] значений открытого интереса количество дней в наборе данных - ссылка на класс торгового симулятора набор [1..nb] уровней капитала по ценам закрытия //объявляем локальные переменные и макрофункции static int cb, LenA, LenB; static float MavgA[MAXBAR+1] , MavgB[MAXBAR+1] ; #define CrossesAbove(a,b) ( (a[cb]>=b[cb])&&{a[cb-l]=b[cb-l])) //очищаем счет и снимаем неисполненные приказы ts.clear{); //считаем скользящие средние, используя серии (наборы} функций LenA = parms[1]; LenB = parms[2]; Averages(MavgA, cls, LenA, nb);//Первая скользящая средняя Averages(MavgB, cls, LenB, nb);//Вторая скользящая средняя //проходим через дни, чтобы моделировать реальную торговлю for (cb = 1; cb <= nb; cb++) { //не открываем позиций в прошлом периоде if(dt[cb] < 910302) { eqcls[cb] = 0.0; continue; } //выполняем ожидающие ордера и считаем кумулятивный капитал ts.update(opn[cb], hi[cb], lo [cb], cls [cb], cb) ; eqcls [cb] = ts.currentequity(EQ_CLOSETOTAL); //правило торговой системы пересечения двух скользящих средних if (CrossesAbove(MavgA, MavgB)) ts.buyopen('A', 1); if (CrossesBelow(MavgA, MavgB)) ts.sellopen('B', 1); Для поиска оптимальных параметров путем оптимизации с лобовым подходом потребовалось бы провести 2041 тест, т.е. около 56 минут работы TradeStation согласно опыту прошлого тестирования небольшой выборки. Генетический оптимизатор справился с заданием за минуту. Кроме того, генетический оптимизатор был остановлен после проведения всего лишь 133 тестов, что должно значительно ухудшить его результат. Данные генетического оптимизатора приведены в табл. 3-2, где Р1 - период первой скользящей средней, Р2 - период второй скользящей средней, ЧИСТ. - чистая прибыль, Д.ЧИСТ, - чистая прибыль для длинных позиций, К.ЧИСТ. - чистая прибыль для коротких позиций, Ф.ПРИБ - фактор прибыли, ДОХ % - доходность в процентах годовых, МаксПК - максимальное падение капитала, СДЕЛ - количество совершенных системой сделок, ПРИБ% - процент выгодных сделок, Сред.рез. - прибыль или убыток от средней сделки и ПРИГ. - пригодность решения (в данном случае - просто общая прибыль). Как и в случае с данными лобовой оптимизации в табл. 3-1, генетические данные были рассортированы по эффективности (общей прибыли) и показаны только 25 лучших. Сравнение результатов генетической оптимизации и оптимизации с лобовым подходом (табл. 3-1 и 3-2 соответственно) показывает, что генетический оптимизатор обнаружил решение, для которого общая прибыль была выше ($172,725 против $145,125). Это неудивительно, поскольку исследовалось большое поле вариантов и скорость оптимизации не была ограничена последовательными шагами. Удивительно скорее то, что решение было обнаружено так быстро, несмотря на прерванный преждевременно эволюционный процесс. Подобные результаты демонстрируют невероятную мощь генетической оптимизации. Оптимизаторы, основанные на моделировании отжига, воспроизводят термодинамический процесс замерзания жидкостей и отжига металлов. При высокой температуре атомы в жидкости или расплавленном металле быстро перемещаются случайным образом. При медленном остывании они располагаются в упорядоченную кристаллическую структуру, представляющую минимальное энергетическое состояние системы. При программном моделировании этот термодинамический процесс успешно решает крупномасштабные задачи оптимизации. Как и генетическая оптимизация, моделирование отжига - очень мощная стохастическая методика, основанная на естественном явлении, которое может находить глобально оптимальные решения и работать с неупорядоченными функциями эффективности. Моделирование отжига эффективно решает комбинаторные проблемы, включая известную "задачу о коммивояжере" или проблему оптимального расположения миллионов элементов современных интегральных микросхем, например компьютерных процессоров. Методы, основанные на моделировании отжига, не следует ограничивать комбинаторной оптимизацией; они могут быть легко применены для оптимизации параметров с реальными значениями. Следовательно, оптимизаторы, основанные на моделировании отжига, применимы к широчайшему кругу задач, включая задачи, интересующие трейдеров. Поскольку генетические оптимизаторы столь эффективны, мы не столкнулись с необходимостью широко исследовать оптимизаторы, основанные на моделировании отжига. Кроме того, поступали сообщения, что во многих случаях алгоритмы отжига уступают генетическим, таким образом, не было необходимости давать примеры метода моделирования отжига и рассматривать его далее. Назад

мерседес клуб красноярск 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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Hosted by uCoz