Общие понятия Выбор брокера Анализ рынка Торговые стратегии Книги по Forex
Общие понятия
Биржа Форекс
Игра на бирже
Валютный трейдинг
Управление валютным портфелем
Как стать трейдером
Выбор брокера
Брокерское обслуживание
Как выбрать брокера Форекс
Лучшие дилинговые центры
Анализ рынка
Технический анализ
Японские свечи
Индикатор Ишимоку
Волны Вульфа
Полосы Боллинджера
Скользящие средние
Линия тренда
Фундаментальный анализ
Механические торговые системы
Оценка эффективности механических торговых систем
Торговые сигналы
Лучшие
дилинговые центры:
Дилинговый центр EXNESS
Дилинговый центр Forex4you
Дилинговый центр Alpari

Виды оптимизаторов

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

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

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

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

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


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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для поиска оптимальных параметров путем оптимизации с лобовым подходом потребовалось бы провести 2041 тест, т. е. около 56 минут работы TradeStation согласно опыту прошлого тестирования небольшой выборки. Генетический оптимизатор справился с заданием за минуту. Кроме того, генетический оптимизатор был остановлен после проведения всего лишь 133 тестов, что должно значительно ухудшить его результат.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Далее

Вернуться к оглавлению

Торговые стратегии
Скальпинг
Стратегия "Середина"
Позиционная среднесрочная
Система ATCF
Стратегия по Moving Average, ADX и Фракталам
Стратегия разворотного периода
Стратегия "теней"
Стратегия "Серфинг"
Стратегия Trend Finder Daily
Стратегия на внутреннем баре
Скальпинг M1 GBPJPY
Стратегия "4 средних"
Торговая стратегия The Bat
Книги по Forex
А.Фарлей "Мастерство свинг-трейдинга"
B. Сафонов "Практическое использование волн Эллиотта в трейдинге"
Кац Дж.О., МакКормик Д.Л. "Энциклопедия торговых стратегий"
Лучшие
дилинговые центры:
Дилинговый центр EXNESS
Дилинговый центр Forex4you
Дилинговый центр Alpari
Торговые стратегии