Применительно к построению механических торговых систем
1. Contrarian opinion
Известно, что метод «contrarian opinion», может быть весьма эффективен на финансовых рынках. Причины этой эффективности изучает новый раздел финансовой науки, называющийся «поведенческие финансы». За исследования в этой области Daniel Kahneman даже удостоился в 2002 году Нобелевской премии по экономике. В частности, он показал, что инвесторы в своей массе действуют нерационально. Что примечательно, Harry Markowitz ранее получил Нобелевскую премию за теорию оптимального портфеля, которая основывалась на постулате о рациональном поведении инвесторов. Интересующихся поведенческими финансами отсылаем к книге Поведенческие финансы или Между страхом и алчностью.
2. Нерыночный пример
Опыт показывает, что метод «contrarian opinion» может быть очень эффективен и за пределами рынков.
Лет двадцать назад один студент-математик получил в качестве курсовой работы задание: применить метод функций Ляпунова к исследованию устойчивости какой-либо математической модели термоядерного реактора. Самым сложным оказалось найти подходящую модель. Для этого пришлось проштудировать подшивку журнала «Физика плазмы» за всю его историю. Остальное было делом техники: построить функцию Ляпунова и получить результат. Как выяснилось позднее, данная математическая модель была создана академиком, одним из создателей водородной бомбы и теории термоядерного синтеза, и вопрос о ее устойчивости был до того времени открыт. Все дело в том, что физики исследовали устойчивость традиционными спектральными методами, которые неприменимы для задач такого типа. В итоге данная работа по математике выиграла Всесоюзный конкурс студенческих научных работ в разделе «физика плазмы».
3. О том, как надо строить механические торговые системы
Это многократно обсуждалось на трейдерских форумах и описывалось в многочисленных книгах и т.п. Мы все учились понемногу на книгах Компьютерный анализ фьючерсных рынков , Разработка, тестирование, оптимизация торговых систем, и многих других. Чему-нибудь, и как-нибудь…
Собственно говоря, способ построения торговых систем был задан еще в 1987 году с появлением популярной торговой платформы TradeStation, ставшей де-факто стандартом индустрии, и в кругу российских трейдеров известной как «Омега». Это способ растиражирован программами-аналогами разной степени навороченности – от простой MetaStock, до очень продвинутой MultiCharts, и мало у кого вызывает сомнения.
Напомним этот общепринятый алгоритм создания механической торговой системы. Он заключается в следующем.
Прежде всего, временной ряд цен для выбранного торгуемого актива на выбранном таймфрейме загружается в торговую платформу и отображается в виде графика цен.
Далее, выбирается торговый метод и его формализация при помощи индикаторов теханализа. Что любопытно, при их выборе люди склонны руководствоваться принципом «зачем делать просто, когда можно сделать сложно». Например, широкую известность среди российских трейдеров получила торговая система, основанная на «индикаторе динамического ценового канала», опубликованном в одном из выпусков почившего в базе русскоязычного журнала «Современный трейдинг». Примечательно, что в том же выпуске журнала независимо был приведен тот же самый метод под названием «простейшая торговая система». Он содержал один параметр вместо трех у «динамического ценового канала» и программный код на EasyLanguage в три раза короче предыдущего. Но что может быть интересного в простейшей торговой системе!
Что касается методов, то в лучшем случае они базируются на торговых идеях из нескольких работающих методов теханализа. Или на контр-идеях. Например, эксплуатировать дисциплинированное закрытие убыточных позиций поклонниками торговли трендов. Но, похоже, большинство торговых систем есть просто результат скрещивания скользящих средних с осцилляторами и т.п.
Далее, параметры индикаторов оптимизируются на участке ряда данных in sample, как правило, простым перебором. Результаты оптимизации оцениваются по критериям Net Profit, Profit Factor и т.п., и выбираются наилучшие значения параметров. Считается, что график значений критерия оптимизации как функции от параметров у надежной торговой системы должен иметь некое подобие плато в области оптимальных значений параметров. Затем, система с оптимальными параметрами тестируется на участке ряда данных out of sample. Если результаты тестирования мало отличаются от результатов на участке in sample, то считается, что найдена некоторая устойчивая закономерность в ценах, которая гипотетически будет сохраняться в будущем. Механическая торговая система при этом представляет собой набор из нескольких логических правил с параметрами, описывающих эту закономерность. В точках на графике, где эти правила выполняются, система генерирует сигналы на совершение сделок – открытие или закрытие позиций.
Следует отметить, что результаты тестирования существенно зависят от выбора участков in sample и out of sample. Например, если на участке данных out of sample для метода, эксплуатирующего тренды, преобладает ненаправленное движение, то результаты тестирования на нем будут заведомо хуже, чем на участке оптимизации. Это может повлечь за собой то, что хорошая система будет отвергнута.
Если результат тестирования не удовлетворителен, то возвращаемся в начало алгоритма, меняются индикаторы и процедура исполняется заново.
Большинство останавливается на этом, ограничившись нахождением правил для открытия и закрытия позиций. Меньшинство идут дальше, решая задачу об оптимальном определении размера позиции, т.е. сколько купить или продать по каждому сигналу торговой системы.
И уже совсем мало кто доходит до решения отдельно стоящей задачи распределения капитала по активам и торговым системам.
4. Человек думает, компьютер пашет
Эффективность данного процесса можно многократно повысить, используя вместо случайного поиска методом проб и ошибок целенаправленный поиск, в частности, при помощи генетических алгоритмов. Для этого задаются критерий оптимизации любой сложности и с любыми ограничениями, или даже одновременно несколько независимых критериев, и пространство поиска, состоящее из
- допустимого набора входных данных – индикаторов и т.п., из которых можно гипотетически сгенерировать торговую систему;
- допустимого набора значений параметров;
- допустимого набора элементарных логических правил, способов комбинации индикаторов и т.п.
В данном случае задача сводится к тому, чтобы выбрать разумные альтернативы для возможных торговых систем и хороший критерий оптимизации.
Несмотря на эффективность такого применения генетических алгоритмов, ничего принципиально нового в идеологию построения торговых систем это не приносит.
5. И снова метод «contrarian opinion»
Теперь посмотрим на задачу построения механической торговой системы с точки зрения вышеупомянутого студента. В нашем случае это означает выйти за рамки метастоков, профит-факторов и всего вышеупомянутого, чтобы увидеть целостную картину ситуации и отсечь лишние сущности. Мы знаем конечную цель. Мы хотим получить экспоненциальный, без значительных просадок, рост капитала. Все остальное несущественно.
Каким образом мы можем воздействовать на капитал, чтобы достичь этой цели? Единственно, покупкой или продажей тех или иных активов, что мы, в принципе, можем делать на каждом шаге. Регулировать изменение капитала мы можем, изменяя в любой момент времени leverage – «плечо». Положительное «плечо» означает нетто-лонг позицию, отрицательное – нетто-шорт, нулевое – деньги.
Приращение капитала на каждом шаге по времени описывается уравнением
dEquity(t) = leverage(t) * dPrice(t) – Slippage&Comission(t),
где
dEquity(t) = Equity(t+1) / Equity(t) – 1
dPrice(t) = Price(t+1) / Price(t) – 1.
Здесь leverage и dPrice в общем случае векторы, «*» означает скалярное произведение векторов, Slippage&Comission означает проскальзывание и комиссию.
Ограничением на управление является максимальное плечо. Ограничения на состояние – это недопустимость маржин-колла, максимально допустимый дроудаун, и т.п. В качестве целевой функции можно, в частности, выбрать т.н. терминальную функцию
Equity(T) > max,
т.е. максимизировать прирост капитала за отчетный период. В итоге мы получаем обыкновенную задачу оптимального управления, где управляемый объект, или состояние – это капитал, а управление – изменение «плеча».
Понятия «входы», «выходы», «стоп-лоссы», «тейк-профиты» и т.п. как таковые в данном контексте попросту отсутствуют. Здесь нет прибыльных или убыточных сделок, как нет и самих сделок. Есть только положительный либо отрицательный прирост капитала. Тем самым, мы упрощаем задачу, убирая все лишние переменные.
Как известно, правильная постановка задачи – половина ее решения. Остается решить вторую половину – собственно, саму задачу. С чего начать?
Во-первых, у нас нет модели изменения цен dPrice. Во-вторых, даже если у нас есть адекватная модель изменения цен dPrice, найти оптимальное управление – сама по себе нетривиальная задача, имеющая эффективные алгоритмы решения только в некоторых частных случаях.
Но, в-третьих, стоит заметить, что раздельное решение задачи идентификации и задачи оптимального управления теоретически обосновано только для линейных систем с квадратичной целевой функцией. То есть идентификацию и управление можно искать одновременно.
Иными словами, решив задачу оптимального управления, мы за один шаг проскочим все необходимые этапы построения механической торговой системы, а именно, получим торговую модель, оптимальное управление капиталом и оптимальный портфель. При этом, как в случае с нашим студентом, результаты обещают быть качественно отличными от тех, которые могут быть получены общепринятыми методами.
Что самое интересное, и при решении этой сложной задачи метод «contrarian opinion» тоже может быть очень полезен.
Contrarian – противоположный инвестор (инвестор, действующий вопреки тенденциям рынка; это выражается в таких действиях, как покупка акций, падавших в цене в последнее время, или продажа акций, цена которых возрастала) – Lingvo FinancialMarkets
1. Contrarian opinion
Известно, что метод «contrarian opinion», может быть весьма эффективен на финансовых рынках. Причины этой эффективности изучает новый раздел финансовой науки, называющийся «поведенческие финансы». За исследования в этой области Daniel Kahneman даже удостоился в 2002 году Нобелевской премии по экономике. В частности, он показал, что инвесторы в своей массе действуют нерационально. Что примечательно, Harry Markowitz ранее получил Нобелевскую премию за теорию оптимального портфеля, которая основывалась на постулате о рациональном поведении инвесторов. Интересующихся поведенческими финансами отсылаем к книге Поведенческие финансы или Между страхом и алчностью.
2. Нерыночный пример
Опыт показывает, что метод «contrarian opinion» может быть очень эффективен и за пределами рынков.
Лет двадцать назад один студент-математик получил в качестве курсовой работы задание: применить метод функций Ляпунова к исследованию устойчивости какой-либо математической модели термоядерного реактора. Самым сложным оказалось найти подходящую модель. Для этого пришлось проштудировать подшивку журнала «Физика плазмы» за всю его историю. Остальное было делом техники: построить функцию Ляпунова и получить результат. Как выяснилось позднее, данная математическая модель была создана академиком, одним из создателей водородной бомбы и теории термоядерного синтеза, и вопрос о ее устойчивости был до того времени открыт. Все дело в том, что физики исследовали устойчивость традиционными спектральными методами, которые неприменимы для задач такого типа. В итоге данная работа по математике выиграла Всесоюзный конкурс студенческих научных работ в разделе «физика плазмы».
3. О том, как надо строить механические торговые системы
Это многократно обсуждалось на трейдерских форумах и описывалось в многочисленных книгах и т.п. Мы все учились понемногу на книгах Компьютерный анализ фьючерсных рынков , Разработка, тестирование, оптимизация торговых систем, и многих других. Чему-нибудь, и как-нибудь…
Собственно говоря, способ построения торговых систем был задан еще в 1987 году с появлением популярной торговой платформы TradeStation, ставшей де-факто стандартом индустрии, и в кругу российских трейдеров известной как «Омега». Это способ растиражирован программами-аналогами разной степени навороченности – от простой MetaStock, до очень продвинутой MultiCharts, и мало у кого вызывает сомнения.
Напомним этот общепринятый алгоритм создания механической торговой системы. Он заключается в следующем.
Прежде всего, временной ряд цен для выбранного торгуемого актива на выбранном таймфрейме загружается в торговую платформу и отображается в виде графика цен.
Далее, выбирается торговый метод и его формализация при помощи индикаторов теханализа. Что любопытно, при их выборе люди склонны руководствоваться принципом «зачем делать просто, когда можно сделать сложно». Например, широкую известность среди российских трейдеров получила торговая система, основанная на «индикаторе динамического ценового канала», опубликованном в одном из выпусков почившего в базе русскоязычного журнала «Современный трейдинг». Примечательно, что в том же выпуске журнала независимо был приведен тот же самый метод под названием «простейшая торговая система». Он содержал один параметр вместо трех у «динамического ценового канала» и программный код на EasyLanguage в три раза короче предыдущего. Но что может быть интересного в простейшей торговой системе!
Что касается методов, то в лучшем случае они базируются на торговых идеях из нескольких работающих методов теханализа. Или на контр-идеях. Например, эксплуатировать дисциплинированное закрытие убыточных позиций поклонниками торговли трендов. Но, похоже, большинство торговых систем есть просто результат скрещивания скользящих средних с осцилляторами и т.п.
Далее, параметры индикаторов оптимизируются на участке ряда данных in sample, как правило, простым перебором. Результаты оптимизации оцениваются по критериям Net Profit, Profit Factor и т.п., и выбираются наилучшие значения параметров. Считается, что график значений критерия оптимизации как функции от параметров у надежной торговой системы должен иметь некое подобие плато в области оптимальных значений параметров. Затем, система с оптимальными параметрами тестируется на участке ряда данных out of sample. Если результаты тестирования мало отличаются от результатов на участке in sample, то считается, что найдена некоторая устойчивая закономерность в ценах, которая гипотетически будет сохраняться в будущем. Механическая торговая система при этом представляет собой набор из нескольких логических правил с параметрами, описывающих эту закономерность. В точках на графике, где эти правила выполняются, система генерирует сигналы на совершение сделок – открытие или закрытие позиций.
Следует отметить, что результаты тестирования существенно зависят от выбора участков in sample и out of sample. Например, если на участке данных out of sample для метода, эксплуатирующего тренды, преобладает ненаправленное движение, то результаты тестирования на нем будут заведомо хуже, чем на участке оптимизации. Это может повлечь за собой то, что хорошая система будет отвергнута.
Если результат тестирования не удовлетворителен, то возвращаемся в начало алгоритма, меняются индикаторы и процедура исполняется заново.
Большинство останавливается на этом, ограничившись нахождением правил для открытия и закрытия позиций. Меньшинство идут дальше, решая задачу об оптимальном определении размера позиции, т.е. сколько купить или продать по каждому сигналу торговой системы.
И уже совсем мало кто доходит до решения отдельно стоящей задачи распределения капитала по активам и торговым системам.
4. Человек думает, компьютер пашет
Эффективность данного процесса можно многократно повысить, используя вместо случайного поиска методом проб и ошибок целенаправленный поиск, в частности, при помощи генетических алгоритмов. Для этого задаются критерий оптимизации любой сложности и с любыми ограничениями, или даже одновременно несколько независимых критериев, и пространство поиска, состоящее из
- допустимого набора входных данных – индикаторов и т.п., из которых можно гипотетически сгенерировать торговую систему;
- допустимого набора значений параметров;
- допустимого набора элементарных логических правил, способов комбинации индикаторов и т.п.
В данном случае задача сводится к тому, чтобы выбрать разумные альтернативы для возможных торговых систем и хороший критерий оптимизации.
Несмотря на эффективность такого применения генетических алгоритмов, ничего принципиально нового в идеологию построения торговых систем это не приносит.
5. И снова метод «contrarian opinion»
Теперь посмотрим на задачу построения механической торговой системы с точки зрения вышеупомянутого студента. В нашем случае это означает выйти за рамки метастоков, профит-факторов и всего вышеупомянутого, чтобы увидеть целостную картину ситуации и отсечь лишние сущности. Мы знаем конечную цель. Мы хотим получить экспоненциальный, без значительных просадок, рост капитала. Все остальное несущественно.
Каким образом мы можем воздействовать на капитал, чтобы достичь этой цели? Единственно, покупкой или продажей тех или иных активов, что мы, в принципе, можем делать на каждом шаге. Регулировать изменение капитала мы можем, изменяя в любой момент времени leverage – «плечо». Положительное «плечо» означает нетто-лонг позицию, отрицательное – нетто-шорт, нулевое – деньги.
Приращение капитала на каждом шаге по времени описывается уравнением
dEquity(t) = leverage(t) * dPrice(t) – Slippage&Comission(t),
где
dEquity(t) = Equity(t+1) / Equity(t) – 1
dPrice(t) = Price(t+1) / Price(t) – 1.
Здесь leverage и dPrice в общем случае векторы, «*» означает скалярное произведение векторов, Slippage&Comission означает проскальзывание и комиссию.
Ограничением на управление является максимальное плечо. Ограничения на состояние – это недопустимость маржин-колла, максимально допустимый дроудаун, и т.п. В качестве целевой функции можно, в частности, выбрать т.н. терминальную функцию
Equity(T) > max,
т.е. максимизировать прирост капитала за отчетный период. В итоге мы получаем обыкновенную задачу оптимального управления, где управляемый объект, или состояние – это капитал, а управление – изменение «плеча».
Понятия «входы», «выходы», «стоп-лоссы», «тейк-профиты» и т.п. как таковые в данном контексте попросту отсутствуют. Здесь нет прибыльных или убыточных сделок, как нет и самих сделок. Есть только положительный либо отрицательный прирост капитала. Тем самым, мы упрощаем задачу, убирая все лишние переменные.
Как известно, правильная постановка задачи – половина ее решения. Остается решить вторую половину – собственно, саму задачу. С чего начать?
Во-первых, у нас нет модели изменения цен dPrice. Во-вторых, даже если у нас есть адекватная модель изменения цен dPrice, найти оптимальное управление – сама по себе нетривиальная задача, имеющая эффективные алгоритмы решения только в некоторых частных случаях.
Но, в-третьих, стоит заметить, что раздельное решение задачи идентификации и задачи оптимального управления теоретически обосновано только для линейных систем с квадратичной целевой функцией. То есть идентификацию и управление можно искать одновременно.
Иными словами, решив задачу оптимального управления, мы за один шаг проскочим все необходимые этапы построения механической торговой системы, а именно, получим торговую модель, оптимальное управление капиталом и оптимальный портфель. При этом, как в случае с нашим студентом, результаты обещают быть качественно отличными от тех, которые могут быть получены общепринятыми методами.
Что самое интересное, и при решении этой сложной задачи метод «contrarian opinion» тоже может быть очень полезен.
Contrarian – противоположный инвестор (инвестор, действующий вопреки тенденциям рынка; это выражается в таких действиях, как покупка акций, падавших в цене в последнее время, или продажа акций, цена которых возрастала) – Lingvo FinancialMarkets
0 коммент.:
Отправить комментарий