<<
>>

ВИДЫ ОПТИМИЗАТОРОВ

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

Скрытые оптимизаторы

Бывает, что нельзя кликнуть мышкой на кнопку с надписью «Оптимизировать». Нет команды, которую можно было бы отдать программе — да нет ни самой программы, ни компьютера вообще. Значит ли это, что оптимизации не происходит? Нет. Даже при отсутствии видимого оптимизатора и признаков оптимизации процесс идет сам по себе — это называется скрытой оптимизацией. Все происходит таким образом: трейдер испытывает набор правил, основанный на некоторых идеях, касающихся рынка. Результаты системы неудовлетворительны, и трейдер перерабатывает идеи, меняет правила и снова тестирует систему, получая лучший результат. Повторив свои действия несколько раз, он получает систему, которой можно доверить реальную торговлю. Можно ли считать эту систему оптимизированной? Поскольку никакие правила или параметры не подвергались модификации с помощью компьютерных программ, кажется, что трейдер с успехом разработал неоптимизированную систему. Но

50

ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ

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

Это означает, что оптимизация присутствует всегда и всегда работает; другого выхода просто не существует!

Оптимизаторы с лобовым подходом

Оптимизатор с лобовым подходом определяет оптимальное решение путем систематического перебора всех потенциальных вариантов, т.е. сочетаний правил, параметров или того и другого вместе. Поскольку требуется проверить все варианты, оптимизация может быть чрезвычайно медленной, и, тем медленнее она идет, чем больше комбинаций подлежит рассмотрению. Таким образом, оптимизация с лобовым подходом подвержена действию правил «комбинаторного взрыва». Насколько же медленна оптимизация с лобовым подходом? Рассмотрим случай, когда у нас есть четыре параметра и каждый из них может принимать одно из 50 значений. Лобовая оптимизация потребует перебрать в тестах 504 (около б миллионов) сочетаний параметров для поиска одного идеального; если (как, например, характерно для TradeStation) каждый тест займет 1,62 с, то весь процесс займет около 4 месяцев. Этот подход не очень практичен, особенно при большом количестве параметров и их значений, а также в том случае, если, кроме оптимизации, у вас есть и другие интересы в этой жизни. Тем не менее оптимизация с лобовым подходом полезна и эффективна; при правильном использовании она всегда находит самый лучший вариант, так что лобовой подход предпочтителен для задач, где количество комбинаций можно перебрать за несколько минут, а не за месяцы и годы.

Для оптимизации с лобовым подходом не требуется длинных программ, обычно используются простые циклы. Параметры изменяются от начального до конечного значения с определенным шагом при помощи оператора For loop (С, C++, Бейсик, Pascal/Delphi) или Do loop (FORTRAN). Оптимизатор с лобовым подходом для двух параметров, написанный на современном диалекте Бейсика, может выглядеть примерно так:

BestFitness = -1.0E30

For Parml = ParmlStart To ParmlStop By Parmllncr

For Parm2 = Parm2Start To Parm2Stop2 By Parm2Incr RunSystem (Parm1, Parm2, GlobalData) CurrentFitness = CalcFitness (GlobalData) WriteProgressLine (GlobalData) If CurrentFitness > BestFitness Then

ГЛАВА 3 ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ

51

CurrentFitness = BestFitness BestParml = Parml BestParm2 = Parm2

End If Next Parm2 Next Parm1

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

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

Система оптимизировалась по показателю общей прибыли (это единственный показатель, который TradeStation может оптимизировать без дополнительных модулей). Ниже приведен код для торговой системы на двух скользящих средних:

{ Система пересечения двух скользящих средних в Easy Language } Inputs: LenA(4), LenB(l0);

If (Average(Closef LenA) > Average(Closef LenB)) And

(Average(Close, LenA)[l] <= Average(Close, LenB)[l] ) Then

Buy ("A") l Contract at Market; If (Average(Close, LenA) <= Average (Close, LenB)) And

(Average(Close, LenA)[l] > Average (Close, LenB)[l]) Then

Sell ("B") l Contract at Market;

Система была оптимизирована изменением периода первой скользящей средней (LenA) от 2 до 10 с шагом в 2. Период второй скользящей средней (LenB) оптимизировался от 2 до 50 с тем же шагом. Шаг был принят более 1, чтобы испытывалось менее 200 сочетаний параметров (TradeStation может хранить данные не более чем о 200 оптимизационных тестах). Поскольку были исследованы не все возможные сочетания параметров, оптимизация не была проведена идеально; лучшее значение могло оказаться пропущенным при поиске. Таким образом, оптимизация проходила в 125 тестов, что заняло 3 мин. 24 с времени для обработки данных за 5 лет исторических данных на конец дня на компьютере с процессором Intel 486 частотой 66 МГц. Полученные результаты были загружены в таблицу Excel и сортировались по общей прибыли. В табл. 3-1 приведены различные показатели эффективности для 25 лучших вариантов.

В таблице: LENA означает период короткой скользящей средней, LENB — период длинной скользящей средней, ЧИСТ. — чистую прибыль, Д.ПРИБ, — чистую прибыль для длинных позиций, К.ПРИБ. — чистую прибыль для коротких позиций, Ф.ПРИБ. — фактор прибыли, ДОХ — общую (не годовую) доходность счета, МаксПК — максимальное падение капитала, СДЕЛ — общее количество совершенных сделок, ПРИБ % — процент прибыльных сделок.

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

52

ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ

Таблица 3—1.

Лучшие 25решений при оптимизации с лобовым подходом с использованием TradeStation LENA LENB ЧИСТ. Д.ПРИ 5 К.ПРИБ Ф.ПРИ& дох СДЕЛ 10 в 145125 1ги2ь 21в00 2.11 596.61 -24325 153 67 to 4 140225 Т20075 20150 2.06 646.20 -21700 155 70 в 4 130575 115175 14400 1.67 927.79 -208О0 261 63 в в 1ИД25 игаза 11475 167 5*7 90 ?ТЗЯОО 211 64 в 4 117675 1 СИ 735 Я SO 1 75 47462 2*92i 187 66 10 8 04125 9*475 -43S0 1 55 287.40 ?35200 161 60 10 г 69675 9587 5 -5250 1.S6 345.24 •25975 1$7 70 в i 57825 79800 21975 1 Э1 140.86 -410SO 211 64 6 2 S407S 77850 •21775 1.25 22626 -23000 244 62 10 22 4OT2S 78ОО0 -26075 1.61 1M.S7 ?2*475 аз 47 4 Z 26575 64100 -37525 1 09 5466 -46425 344 01 10 24 22775 •1И0 -30175 1.24 66.90 -37400 57 44 в 22 22*75 «2225- -39456 1,11 56.59 -44625 65 40 10 за 17075 549751 -37900 1 JO 1539 -48250 42 36 10 20 13975 57S7S -43900! 1.12 36 97 -37600 73 42 а 34 13475 51075 -Э65»! 1.18 27 13 -49675 50 40 10 14 1Z22S S5*7SI -43650 108 3547 '460Q0 12Э 45 10 за S07S 50475' 42400 1 м 14.03 ?54075 46 S3 10 40 6625 497501 -43125 1 07 11 06 '59675 40 33 10 16 М25 53ИИ -47675 1 05 1583 -34550 85 41 в 24 5425 53250' -47825 1.05 960 -56525 07 36 2 2 0 0 0 10О.СС 000 0 0 0 4 4 0 0 0 100 00 000 0 0 0 в 6 0 0 0 fOOOO 0.00 0 0 0 а 6 0 0 0 100 00 0.00 0 0 0 лось и в данном примере. Привычная трейдерская мудрость гласит: «Тренд— твой друг». При этом если вторая скользящая средняя имеет период меньше первого, то наиболее выгодные сделки в табл. 1-3 совершены против тренда. Эти выгодные контртрендовые сделки могли быть не обнаружены, если бы для поиска не использовалась оптимизационная процедура.

Оптимизация под управлением пользователя

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

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

ГЛАВА 3 ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ

53

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

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

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

Генетические оптимизаторы

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

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

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

54

ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ

щих основой для генетических оптимизаторов, приведено во втором разделе книги.

Генетические оптимизаторы могут иметь множество ценных характеристик, например скорость (особенно при наличии риска «комбинаторного взрыва»). Генетический оптимизатор работает на несколько порядков быстрее, чем оптимизатор с лобовым подходом, особенно при наличии множества правил или значений параметров. Это происходит потому, что, как и при оптимизации под управлением пользователя, идет фокусировка на важных участках пространства решений, а тупики пропускаются. В противоположность оптимизации под управлением пользователя селективный поиск достигается без вмешательства человека.

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

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

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

На что похож генетический оптимизатор в работе? Мы перевели на C++ код для системы с пересечением скользящих средних, упоминавшейся ранее, чтобы при помощи C-Trader toolkit решать задачу оптимизации двух параметров — LenA и LenB. LenA, период первой скользящей сред

ГЛАВА 3 ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ

55

ней, исследовался при значениях от 2 до 50, так же как и LenB — период второй скользящей средней. Оптимизация велась по показателю общей прибыли, чтобы можно было напрямую сравнивать результаты с полученными ранее методом оптимизации с лобовым подходом. Ниже приведен код для системы пересечения скользящих средних, написанный на C++:

static void Model (float *parmsf float *dtf float *opnf

float *hif float *lof float *clsf float *volf float *oif int nb, TRDSIM &ts, float *eqcls) { // Выполнение тестирования всех моделей скользящих средних, // используя следующие аргументы: // parms — набор [1..MAXPRM] параметров // dt - набор [l..nb] дат в формате ГГММДД // ОРП — набор [1..nb] цен открытия // hi - набор [l..nb] максимальных цен // 1о — набор [1..nb] минимальных цен // cls - набор [1..nb] цен закрытия // vol — набор [1..nb] значений объема // oi — набор [1..nb] значений открытого интереса // nb - количество дней в наборе данных // ts — ссылка на класс торгового симулятора // eqcls — набор [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 тестов, что должно значительно ухудшить его результат.

56

ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ

Данные генетического оптимизатора приведены в табл. 3-2, где Р1 — период первой скользящей средней, Р2 — период второй скользящей средней, ЧИСТ. — чистая прибыль, Д.ЧИСТ, — чистая прибыль для длинных позиций, К.ЧИСТ. — чистая прибыль для коротких позиций, Ф.ПРИБ — фактор прибыли, ДОХ % — доходность в процентах годовых, МаксПК — максимальное падение капитала, СДЕЛ — количество совершенных системой сделок, ПРИБ% — процент выгодных сделок, Сред.рез. — прибыль или убыток от средней сделки и ПРИГ. — пригодность решения (в данном случае — просто общая прибыль). Как и в случае с данными лобовой оптимизации в табл. 3-1, генетические данные были рассортированы по эффективности (общей прибыли) и показаны только 25 лучших.

Сравнение результатов генетической оптимизации и оптимизации с лобовым подходом (табл. 3-1 и 3-2 соответственно) показывает, что генетический оптимизатор обнаружил решение, для которого общая прибыль была выше ($172,725 против $145,125). Это неудивительно, поскольку исследовалось большое поле вариантов и скорость оптимизации не была ограничена последовательными шагами. Удивительно скорее то, что решение было обнаружено так быстро, несмотря на прерванный преждевременно эволюционный процесс. Подобные результаты демонстрируют невероятную мощь генетической оптимизации.

Таблица 3—2. Лучшие 25решений при генетической оптимизации с использованием С-Trader toolkit P1 P2 чнсг Д.ПРИГ. К.ПРИБ Ф.ПРНБ №>ic№ 1-М J|l|iimd;J: ID 3 172725 133125 36(001 ZJfl 617.6; 21125 155 70 1114 172725 11 5 163473 132425 30650 2.33 762.1) 21450 146 _72 1104 1145 163475 156975 12 4 15W5 123250 27725 2.23 616.5 10225 137

10 4 13В875 120075 16600 2.04 637.0 2'ВОО 156 68 аи 136575 4Й 3 138475 35600 S267S 526 130.5 72700 73 67 1396 136475 id 3 138125 aS42S 52700 536 190.В 72700 73 67 16921 136125 13 4 134025 1183» 2.02 614. е 21РГ5 131 « 102S1 134825 47 4 132375 агьи 4B62S 5.21 176.4 75050 66 67 20361 132375 48 Э 13022$ 81376 46860 5.04 1776 73325 71 65 1634 130225 50 г 13017S 81350 46624: 4.«1 175,0 7437S 85 85 1431 130175 49 4 120150 «0575 45675 5.36 173.4- 727» 65 67 19401 136150 11 e 12S22S 113500 11T2SJ 1.*3 410.6! 30475 146 63 657] 124225 13 % 119325 106300 10026 1 96 5*2_2- 20150 136 72 677 119325 12 г 11727* 109400 7675 1.84 461.4 24350 183 71 719 117275 46 гз 1133W 73475 ЗВД5 7,1* 157J- 72073 31 67 3654 111300 50 22 1112» 72425 36775 в 59 154.3 72075 31 63 3SS7 111200 44 гз 110525 71625 36700 7.02 151.6 72800 31 67 3565 110525 48 22 108750 71200 37550 6.63 130.* 72075 31 67 3503 108750 11 7 100125 101B7S 4250 1.66, 3322 31950 144 63 736 106125 50 11 103150 №350 34300 в.И 141.5 72303 29 62 3556 103150 46 23 152700 68175 34 5 25 5.29: 142.5 72075) 60 3312 Ю2700 45 г 102660 95700 5550 2261 166.6 60ЮО: 93 64 1103 102650 4$ 22 101425 67275 34150 "е.з 138.1 72900 31 83 3271 101425 ?0 100150 66275 33675 S 1 1370 73150 31 60 3230 100150 17 3 98925 101550 262S 132 3*4-5 25725 11+ 74 667 96925 ГЛАВА 3 ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ

57

Оптимизация моделированием отжига

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

Как и генетическая оптимизация, моделирование отжига — очень мощная стохастическая методика, основанная на естественном явлении, которое может находить глобально оптимальные решения и работать с неупорядоченными функциями эффективности. Моделирование отжига эффективно решает комбинаторные проблемы, включая известную «задачу о коммивояжере» или проблему оптимального расположения миллионов элементов современных интегральных микросхем, например компьютерных процессоров. Методы, основанные на моделировании отжига, не следует ограничивать комбинаторной оптимизацией; они могут быть легко применены для оптимизации параметров с реальными значениями. Следовательно, оптимизаторы, основанные на моделировании отжига, применимы к широчайшему кругу задач, включая задачи, интересующие трейдеров.

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

Аналитические оптимизаторы

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

58

ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ

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

Затем расчет градиента повторяется, движение начинается в новом направлении, и так раз за разом, пока не будет достигнута вершина, т.е. точка с нулевым градиентом.

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

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

ГЛАВА 3 ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ

59

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

Хотя обсуждение было в основном посвящено максимизации функции пригодности, все вышесказанное применимо и к минимизации расходов. Любая техника максимизации может быть применена для минимизации, и наоборот: умножьте функцию пригодности на — 1 для получения эквивалентной функции расходов; умножьте функцию расходов на - 1, и получится функция пригодности. Если вам нравится алгоритм минимизации, но нужно применять максимизацию; можно использовать этот фокус вместо перекодировки алгоритма оптимизации.

Линейное программирование

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

<< | >>
Источник: Джеффри Оуэн Кац, Донна Л. МакКормик . Энциклопедия торговых стратегий / Пер, с англ. — М.: Альпина Паблишер. — 400 с. . 2002

Еще по теме ВИДЫ ОПТИМИЗАТОРОВ:

  1. КАК ИСПОЛЬЗУЮТСЯ ОПТИМИЗАТОРЫ
  2. ГЛАВА 3 Оптимизаторы и оптимизация
  3. КАКОЙ ОПТИМИЗАТОР ПОДХОДИТ ВАМ?
  4. ЧТО ДЕЛАЮТ ОПТИМИЗАТОРЫ
  5. 13.3. Инфляция и ее виды Инфляция: сущность, виды, измерение
  6. СМЕЖНЫЕ ВИДЫ УЧЕТА
  7. 8.5. Специальные виды убытков
  8. § 2. Виды ТРАНСАКЦИЙ ПО Коммонсу
  9. Виды рисков и их оценка
  10. РАЗДЕЛ 2. ВИДЫ СТРАХОВАНИЯ
  11. ВИДЫ ДЕНЕГ И ИХ СВОЙСТВА
  12. А. Виды и сущность балансов
  13. 1.3. Виды и формы планирования
  14. Виды стандартов