<< Пред. стр.

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

ОГЛАВЛЕНИЕ

След. стр. >>



ВЫБОР ПРАВИЛЬНОГО СИМУЛЯТОРА
Если вы серьезно хотите заниматься разработкой продвинутых торговых
систем, торговать сильно диверсифицированными портфелями, прово-
дить тестирование индивидуальных контрактов или опционов, вам нуж-
но собраться с силами для изучения программирования — вам нужен си-
мулятор, созданный с помощью языков программирования общего назна-
чения, таких как C++ или Object Pascal. Такие симуляторы имеют откры-
тую архитектуру, позволяющую использовать множество дополнений и
библиотек: библиотеки по техническому анализу, например от FM Labs
(609-261-7357) и Scientific Consultant Services (516-696-3333); библиотеки
общих числовых алгоритмов, например от Numerical Recipes (800-872-
7423), Numerical Algorithms Group (NAG) (44-1865-511-245) и International
Mathematics and Statistics Library (IMSL), в которых хорошо освещена ста-
тистика, линейная алгебра, спектральный анализ, дифференциальные
уравнения и другие математические приложения. Продвинутые симуля-
торы с использованием общих языков программирования также доступ-
ны целому миру компонентов и графических средств управления, покры-
вающих все аспекты от сложного построения графиков и представления
данных до продвинутого управления базами данных, и при этом совмес-
тимы с C++ Builder и Delphi, а также с Visual Basic и Visual C++.
Если же вам нужно нечто менее трудоемкое, выбирайте полные ин-
тегрированные решения. Убедитесь, что язык симулятора позволяет ис-
пользовать процедуры, вызываемые по необходимости из DLL. Остере-
РАБОЧИЕ ИНСТРУМЕНТЫ
46 ЧАСТЬ I




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


СИМУЛЯТОРЫ, ИСПОЛЬЗОВАННЫЕ В ЭТОЙ КНИГЕ
Мы предпочитаем использовать симуляторы, основанные на практике
современного объектно-ориентированного программирования. Одна из
причин такого выбора состоит в том, что объектное ориентирование упро-
щает создание нужного количества моделируемых счетов, каким бы оно
ни было. Это в особенности полезно при моделировании торговой систе-
мы, управляющей целым портфелем товаров или акций, как это сделано в
большинстве тестов в данной книге. Объектно-ориентированные симу-
ляторы также хороши для построения адаптивных самооптимизирующих-
ся систем, в которых иногда требуется использовать внутреннее модели-
рование. Кроме того, такие программы позволяют достаточно просто со-
здавать метасистемы (системы, принимающие решения на основе графи-
ков изменения капитала других систем). Например, метасистемами мож-
но считать модели распределения активов, поскольку они динамически
меняют распределение средств между отдельными торговыми система-
ми или счетами. Хороший объектно-ориентированный симулятор может
генерировать графики изменения капитала портфелей и другую инфор-
мацию для создания и тестирования на исторических данных систем рас-
пределения активов, работающих на основе множественных торговых
систем. Из этих соображений, а также в силу привычки большинство те-
стов в этой книге проведены с использованием C-Trader tookit. Для того
чтобы почерпнуть полезные знания из этой книги, не требуются позна-
ния в C++ и программировании. Логика любой системы или элемента
системы будет подробно рассматриваться в тексте.
ГЛАВА 3

Оптимизаторы и оптимизация



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


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



пример в предыдущей главе, имеет два правила: одно — для приказа на
покупку, другое — для приказа на продажу. У нее также был один пара-
метр — длина скользящего среднего. Правила и параметры полностью
определяют систему и ее поведение. Для получения лучшего эффекта от
торговой системы может потребоваться изменение параметров и форму-
лировок правил.
Нет сомнения, что одни сочетания правил и параметров, которые оп-
ределяют системы, работают хорошо, а другие — плохо; т.е. решения бы-
вают разного качества. Хорошее качество модели или решения, измерен-
ное относительно некоего стандарта, называется пригодностью. Проти-
воположность пригодности, т.е. показатель неадекватности решения, на-
зывается расходом.
На практике пригодность определяется функцией пригодности — бло-
ком программы, который рассчитывает показатель относительной «при-
влекательности» решения. Функция может быть запрограммирована для
определения пригодности именно так, как пожелает трейдер: например,
пригодность можно определять как общую прибыль за вычетом макси-
мального падения капитала. Функция расходов устроена аналогично, но
чем выше ее значение, тем хуже работает система. Сумма квадратов оши-
бок, часто вычисляемая при использовании систем с нейронными сетями
или линейной регрессией, может служить примером функции расходов.
Теперь можно определить наилучшее возможное решение задачи: это
решение, имеющее максимальную пригодность или минимальный рас-
ход. Оптимизаторы пытаются найти лучшее решение проблемы с помо-
щью поиска максимума функции пригодности или минимума функции
расхода.
Лучшее возможное решение задачи может быть найдено разнообраз-
ными способами. В некоторых случаях задача может быть решена простым
методом проб и ошибок, особенно если поиск решения не полностью авто-
матизирован, а проводится «вручную». В других случаях могут потребо-
ваться сложные процедуры и алгоритмы. Например, симуляция процесса
эволюции (в генетическом оптимизаторе) — очень мощный метод поиска
качественных решений для сложных задач. В некоторых случаях лучшее
решение — аналитическая (вычислительная) процедура, например метод
сопряженных градиентов. Аналитическая оптимизация — эффективный
подход для задач с гладкими (дифференцируемыми) функциями пригод-
ности, например задач, встречающихся при обучении нейронных сетей или
разработке множественных моделей линейной регрессии.


КАК ИСПОЛЬЗУЮТСЯ ОПТИМИЗАТОРЫ
Оптимизаторы — замечательные инструменты, применимые множеством
способов. Они помогают определить форму самолетов, сконструировать
ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ 49
ГЛАВА 3




автомобили и даже выбрать маршрут доставки почты. Трейдеры в некото-
рых случаях используют оптимизаторы для определения комбинаций пра-
вил, ведущих к выгодной торговле. Во втором разделе мы покажем, как
генетический оптимизатор может создавать выгодные модели для правил
входа. Чаще всего трейдеры обращаются к оптимизаторам для поиска наи-
более подходящих параметров системы; практически любые оптимизато-
ры, за исключением разве что аналитических, могут привлекаться для этой
цели. Различные виды оптимизаторов, включая мощные генетические ал-
горитмы, полезны для обучения систем с нейронными сетями или нечет-
кой логикой. Должным образом подобранные стратегии оптимизации по-
зволяют решать проблемы распределения активов. Иногда кажется, что
единственный предел применения оптимизаторов — фантазия пользова-
теля, но в этом кроется опасность: мощность и привлекательность инстру-
мента часто приводят к злоупотреблению оптимизацией. Далее рассмот-
рим правильное и ошибочное применение оптимизаторов.


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

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


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



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


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

Оптимизатор с лобовым подходом определяет оптимальное решение пу-
тем систематического перебора всех потенциальных вариантов, т.е. соче-
таний правил, параметров или того и другого вместе. Поскольку требуется
проверить все варианты, оптимизация может быть чрезвычайно медлен-
ной, и, тем медленнее она идет, чем больше комбинаций подлежит рассмот-
рению. Таким образом, оптимизация с лобовым подходом подвержена дей-
ствию правил «комбинаторного взрыва». Насколько же медленна оптими-
зация с лобовым подходом? Рассмотрим случай, когда у нас есть четыре
параметра и каждый из них может принимать одно из 50 значений. Лобо-
4
вая оптимизация потребует перебрать в тестах 50 (около б миллионов) со-
четаний параметров для поиска одного идеального; если (как, например,
характерно для TradeStation) каждый тест займет 1,62 с, то весь процесс
займет около 4 месяцев. Этот подход не очень практичен, особенно при
большом количестве параметров и их значений, а также в том случае, если,
кроме оптимизации, у вас есть и другие интересы в этой жизни. Тем не
менее оптимизация с лобовым подходом полезна и эффективна; при пра-
вильном использовании она всегда находит самый лучший вариант, так что
лобовой подход предпочтителен для задач, где количество комбинаций мож-
но перебрать за несколько минут, а не за месяцы и годы.
Для оптимизации с лобовым подходом не требуется длинных программ,
обычно используются простые циклы. Параметры изменяются от началь-
ного до конечного значения с определенным шагом при помощи операто-
ра For loop (С, C++, Бейсик, Pascal/Delphi) или Do loop (FORTRAN). Опти-
мизатор с лобовым подходом для двух параметров, написанный на совре-
менном диалекте Бейсика, может выглядеть примерно так:

BestFitness = -1.0E30
For Parml = Parm1Start To Parm1Stop By Parm1lncr
For Parm2 = Parm2Start To Parm2Stop2 By Parm2Incr
RunSystem (Parm1, Parm2, GlobalData)
CurrentFitness = CalcFitness (GlobalData)
WriteProgressLine (GlobalData)
If CurrentFitness > BestFitness Then
ГЛАВА 3 ОПТИМИЗАТОРЫ и ОПТИМИЗАЦИЯ 51



CurrentFitness = BestFitness
BestParm1 = Parm1
BestParm2 = Parm2
End If
Next Parm2
Next Parm1


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

{ Система пересечения двух скользящих средних в Easy Language }
Inputs: LenA(4), LenB(l0);
If (Average(Close, LenA) > Average(Close, LenB)) And
(Average(Close, LenA)[1] <= Average(Close, LenB)[1] ) Then
Buy ("A") 1 Contract at Market;
If (Average(Close, LenA) <= Average (Close, LenB)) And
(Average(Close, LenA)[1] > Average (Close, LenB)[1]) Then
Sell ("B") 1 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




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


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




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


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



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

<< Пред. стр.

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

ОГЛАВЛЕНИЕ

След. стр. >>