<< Пред. стр.

стр. 7
(общее количество: 46)

ОГЛАВЛЕНИЕ

След. стр. >>

хорошо работает на поверхностях с разрывами, плоскими участками и
другими сложными неупорядоченными формами. Генетический метод
делит это преимущество с другими неаналитическими методами — лобо-
вым подходом, управлением пользователем и пр. При помощи генетичес-
кого оптимизатора можно найти решения, максимизирующие такие по-
казатели, как чистая прибыль, доходность, отношение Шарпа и подобные,
для которых поверхность функции пригодности имеет сложную форму, с
трудом поддающуюся анализу. Это не означает, что такой оптимизатор
не применяется для задач с простыми поверхностями — уступая в скоро-
сти вычислительным методам, генетический оптимизатор защищен от вли-
яния ловушек «локальных экстремумов».
В общем, генетические оптимизаторы — предпочтительные методи-
ки для систем с множеством правил или параметров; они особенно по-
лезны, если необходимо найти глобальное решение или работать с весь-
ма сложными (прерывистыми и недифференцируемыми) функциями
пригодности или расходов. Хотя специализированные оптимизаторы
могут обгонять генетические на избранных задачах, для многоцелевой
оптимизации генетический метод — один из самых мощных доступных
инструментов.
На что похож генетический оптимизатор в работе? Мы перевели на
C++ код для системы с пересечением скользящих средних, упоминавшей-
ся ранее, чтобы при помощи C-Trader toolkit решать задачу оптимизации
двух параметров — LenA и LenB. LenA, период первой скользящей сред-
ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ 55
ГЛАВА 3




ней, исследовался при значениях от 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 — набор [1..MAXPRM] параметров
// dt - набор [l..nb] дат в формате ГГММДД
// орn — набор [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]))
#tdefine CrossesBelow(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 тестов, что должно значительно ухудшить его результат.
РАБОЧИЕ ИНСТРУМЕНТЫ
ЧАСТЬ I
56



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




Таблица 3—2. Лучшие 25 решений при генетической оптимизации с использо-
ванием С-Trader toolkit
ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ 57
ГЛАВА 3



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


Аналитические оптимизаторы
Анализ (в смысле .«математический» или «комплексный» анализ) являет-
ся расширением классического исчисления. Аналитические оптимиза-
торы используют наработанные методы, в особенности методы диффе-
ренциального исчисления и исследования аналитических функций для
решения практических задач. В некоторых случаях анализ дает прямой
(без перебора вариантов) ответ на задачу оптимизации. Так происходит
при использовании множественной регрессии, где решение находится с
помощью нескольких матричных вычислений. Целью множественной
регрессии является подбор таких весов регрессии, при которых миними-
зируется сумма квадратов ошибок. В других случаях требуется перебор
вариантов, например невозможно определить напрямую веса связей в
нейронной сети, их требуется оценивать при помощи алгоритма обрат-
ного распространения.
РАБОЧИЕ ИНСТРУМЕНТЫ
58 ЧАСТЬ I



Многие методы перебора данных, используемые для решения много-
вариантных проблем оптимизации, применяют в том или ином виде ме-
тод сопряженных градиентов (максимальной крутизны). В общем виде
оптимизация методом сопряженных градиентов ведется следующим об-
разом. Некоторым образом выбирается точка на поверхности функции
пригодности. Вектор градиента поверхности в данной точке оценивается
с помощью дифференцирования функции пригодности по каждому из
параметров. Полученный градиент указывает направление максимального
роста функции пригодности в n-мерном пространстве параметров. В на-
правлении градиента делаются шаги до тех пор, пока функция пригодно-
сти не перестанет расти.
Затем расчет градиента повторяется, движение начинается в новом
направлении, и так раз за разом, пока не будет достигнута вершина, т.е.
точка с нулевым градиентом.
Для применения оптимизации по методу сопряженных градиентов
необходимо разработать правила определения размеров каждого шага, а
также правила корректировки направления, задаваемого градиентом.
Примитивные версии исходят из того, что существует поверхность функ-
ции пригодности (приближаемая сходящимися степенными рядами), где
имеются «холмы», по которым следует подниматься. Более продвинутые
версии идут далее, исходя из того, что функция пригодности может быть
неплохо приближена квадратичной формой. Если функция пригодности
соответствует этому предположению, то найти решение можно гораздо
быстрее. Впрочем, если поверхность функции пригодности имеет сильно
изрезанную форму с впадинами и выступами неправильных очертаний,
квадратичные формы часто не могут дать хорошего приближения. В та-
ких случаях сложные методы могут вовсе не находить решения или по
крайней мере работать гораздо медленнее.
Тем не менее низкая скорость оптимизации не является главным пре-
пятствием на пути аналитика. Гораздо сложнее справиться с так называе-
мой проблемой локальных решений. Почти все аналитические методы,
будь они простыми или сложными, легко попадаются в ловушку локаль-
ных максимумов; при наличии множества впадин и выступов на поверх-
ности они не могут найти наилучшее глобальное решение. Метод наимень-
ших квадратов, моделирование нейронными сетями дают поверхности
функции пригодности неправильной формы с большим количеством ло-
кальных экстремумов. Данные поверхности чрезвычайно сложны для
стандартных аналитических методов, таких как метод сопряженных гра-
диентов или алгоритм обратного распространения, применяемый в ней-
ронных сетях. Впрочем, местные максимумы можно обойти, соединив
аналитический метод с генетическим. Для поверхностей, которые можно
исследовать аналитическими методами, такой двойной алгоритм может
оказаться наилучшим решением; он позволит быстро и с большой точно-
стью найти глобальные оптимумы.
ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ 59
ГЛАВА 3




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


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


КАК ПОТЕРПЕТЬ НЕУДАЧУ ПРИ ОПТИМИЗАЦИИ
Большинство трейдеров не стремится к проигрышу — по крайней мере
осознанно. Знание причин неудачи помогает ее избежать. Потерпеть не-
удачу при использовании оптимизатора очень просто, если соблюдать
РАБОЧИЕ ИНСТРУМЕНТЫ
60 ЧАСТЬ I



следующие правила. Во-первых, используйте маленькие (и поэтому не-
представительные) выборки данных для тестирования. Во-вторых, убеди-
тесь, что у системы много правил и параметров для оптимизации. Для
любого исторического периода несложно получить отличный результат
при наличии большого количества параметров в системе. Кроме того, про-
водите все тесты на одном образце данных. Ни в коем случае не прове-
ряйте ваши результаты на данных, расположенных вне пределов исход-
ной выборки. И наконец, избегайте статистических заключений. Следуя
эти правилам, вы обязательно потеряете деньги, применив «оптимизиро-
ванную» систему в реальной торговле.
Чем будет вызвана неудача? В большинстве случаев система будет ра-
ботать великолепно при тестировании, но плохо при реальной торговле.
Специалисты по разработке нейронных сетей называют это «слабой гене-
рализацией»; трейдеры знакомы с этим явлением по частым опустошени-
ям денежного счета у брокера. Одно из последствий такого неудачного ис-
хода — распространенное заблуждение о вреде оптимизации вообще.
На самом же деле оптимизаторы не опасны, и не каждой оптимиза-
ции следует бояться. Опасна только неправильная оптимизация — как это
бывает при попытках оптимизировать множество параметров на малень-
кой выборке данных, без проведения тестов за пределами выборки или
статистического подтверждения — просто плохая практика, по ряду при-
чин приводящая к разорительным результатам.


Небольшие выборки
Рассмотрим влияние на оптимизацию мелких выборок. Небольшие вы-
борки рыночных данных вряд ли будут представительными для того рын-
ка, который призваны охарактеризовать; следовательно, они будут замет-
но отличаться от других выборок данного рынка. Оптимизатор, запущен-
ный с маленькой выборкой данных, верой и правдой будет искать лучшее
решение и найдет его. Но лучшее решение для пробного образца может
оказаться разрушительным для реальной торговли. Неудача произойдет
не потому, что оптимизация получила неверное решение, а потому, что
она получила решение некорректно поставленной задачи.
Оптимизация неадекватных выборок также часто дает ответы, пред-
ставляющие собой чисто математические артефакты. Когда количество
точек с данными стремится к количеству настраиваемых параметров,
большинство моделей (торговых, регрессионных или других) найдут иде-
альное решение для любого набора случайных данных. Здесь действует
тот же принцип, который гласит, что линия (модель с двумя параметрами)
может быть проведена через любые две точки, но не всегда может быть
проведена через три произвольные точки. В статистике это известно как
принцип степеней свободы; степеней свободы столько, на сколько общее
ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ 61
ГЛАВА 3




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

RC = SQRT ( 1. - ( (N - 1. ) / (N - Р) ) * (1. - R * * 2 ) )


В этом уравнении N означает количество точек данных, Р — количе-
ство параметров модели, R — коэффициент множественной корреляции,
определенный на выборке данных процедурой оптимизации, RC — скор-
ректированный коэффициент. Обратная формула, показывающая увели-
чение корреляции, вызванное оптимизацией (R), в зависимости от под-
линной корреляции (RC) выглядит следующим образом:

R = SQRT ( 1. - ( (N - Р) / (N - 1.) ) * (1. - R C * * 2 ) )


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


Большие наборы параметров
Излишне большой набор свободных параметров или правил влияет на
попытку оптимизации так же, как и недостаточное количество точек дан-
ных. Когда количество элементов, подвергающихся оптимизации, повы-
шается, пропорционально растет способность модели подгонять их под
любые неоднородности тестовой выборки, а следовательно, увеличива-
ется вклад артефактов в эффективность модели. Результат оптимизации
большого количества параметров или правил будет хорошо работать на
тестовых данных, но плохо на данных вне выборки и в реальной торговле.
ЧАСТЬ I РАБОЧИЕ ИНСТРУМЕНТЫ
62



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


Отсутствие подтверждения

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


КАК ДОСТИЧЬ УСПЕХА ПРИ ОПТИМИЗАЦИИ

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


Большие представительные выборки

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

<< Пред. стр.

стр. 7
(общее количество: 46)

ОГЛАВЛЕНИЕ

След. стр. >>