Автоматические торговые системы. Использование методов Data Mining и оптимального управления в трейдинге.

четверг, 14 февраля 2008 г.

О методе «белой вороны» III,

или первые результаты


Дмитрий Толстоногов



Чтобы стать Лучшим, нужно:

Или делать то, чего не делает никто.

Или делать то, что делают все, но так, как никто не делает.

Или делать то, что делают многие, но более качественно.

Г. Павленко



Приступим к построению механической торговой системы при помощи Data Mining и оптимального управления.


1. Выбираем торговую идею.

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

В одном хорошем месте, при приеме на работу на должность статистика, кандидатам перед интервью предлагался тест: в таблице данных из 1000 строк и 51-го столбца надо было найти закономерные связи, если они есть, между первым столбцом и остальными 50-ю столбцами. Кандидатам предоставлялся компьютер и статистические пакеты на выбор. Время теста не ограничивалось. Большинство находили закономерности, хотя все значения в таблице данных были получены при помощи генератора случайных чисел.

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


2. По нашему убеждению, большую ценность имеют неценовые данные.

Сюда же можно отнести интермаркет2 и парный трейдинг. В свое время произвела впечатление фраза известного в сети трейдера Марка Брауна (Mark Brown): «самая лучшая торговая система, которую я когда-либо видел, не использовала ценовых данных вообще». А из Энциклопедии торговых стратегий запомнилось то, что «поиск необычных данных открывает интересные возможности – зачастую, чем более необычны и труднодоступны данные, тем они ценнее», а также, что торговля по солнечным и лунным циклам при бэктестинге показала лучшие результаты, чем популярные методы теханализа. Это не означает, что теханализ бесполезен. Напротив, он очень полезен тем, что структурирует неоднородную толпу трейдеров по конфессиям верующих в те или иные его методы и постулаты. Например, что "МТС должна работать с ценами, а не обращать внимание на всякую около рыночную чушь... которую создают исключительно для обувания лохов..."3. Но это не та вера, по которой воздастся.


3. В качестве приложения сил рассмотрим фьючерсные рынки.

Как обычно, следуем методу «белой вороны», то есть, зрим в корень. Основной экономический смысл фьючерсных рынков – перераспределить ценовые риски между участниками, имеющими дело с реальными товарами, и желающими застраховаться от нежелательных для них изменений цен при помощи противоположных фьючерсных позиций, и участниками, желающими получить прибыль от этих изменений цен. Первые – это, по терминологии CFTC4, commercials, или хеджеры. Вторые – noncommercials, или крупные спекулянты. Хеджеры, согласно их роли на фьючерсных рынках, минимизируют ценовые риски, открывая позиции против тренда. Действительно, когда они ожидают повышения цен, они используют т.н. «короткий хедж», т.е. открывают шорты на фьючерсах. И наоборот, когда они ожидают понижения цен, они используют т.н. «длинный хедж», т.е. открывают лонги на фьючерсах. Обратной стороной сделок для них выступают спекулянты, выкупающие риски. Следовательно, спекулянты, по крайней мере, теоретически, открывают позиции в сторону тренда, со всеми вытекающими последствиями. Что мы и будем использовать в процессе подготовки данных.

CFTC еженедельно5 публикует отчет – Commitment of Traders Report (COT) – о текущем числе открытых длинных и коротких позиций (открытом интересе) для 3-х различных групп трейдеров: commercials, noncommercials и мелких спекулянтов. Важно, что эти группы трейдеров открывают и закрывают позиции по разным причинам. В частности, из того, что хеджеры, как правило, стоят против тренда, не следует, что они систематически «сливают» деньги в пользу спекулянтов: они не извлекают прибыль из изменений цен, а фиксируют устраивающие их цены на споте. Нам кажется естественным и разумным использовать данные СОТ вместе с ценами.


4. Мнения о предсказательной ценности СОТ неоднозначны.

Гэри Смит (Gary Smith), ссылаясь на статью6, на самостоятельные исследования, и на известные ему работы других трейдеров, пришел к заключению, что «СОТ потерял большую часть своей прогнозирующей силы».

С другой стороны, академическая статья Чангюн Ванга (Changyun Wang) утверждает, что «индекс сентимента инвесторов, основанный на действительных позициях трейдеров, полезен для предсказания приращений цен фьючерсов на индекс S&P500». В частности, он нашел, что сентимент крупных спекулянтов является индикатором продолжения движения, а сентимент хеджеров – слабым противоположным индикатором. В статье приводится статистически значимая стратегия:

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

Чтобы количественно оценить сентимент, в качестве индекса сентимента, SI, в момент времени t автор использовал нормализованные в диапазоне 1:100 нетто-позиции для соответствующих групп трейдеров:


SI(t) = (NetPosition(t) – min(NetPosition(1:t))) / …

(max(NetPosition(1:t)) - min(NetPosition(1:t)))*100.


Индекс сентимента меньше 25% считается экстремально медвежьим, а выше 75% – бычьим. В то же время автор не нашел предсказательной ценности прошлых приращений цен по отношению к будущим.

Недавно переведенная книга Ларри Уильямса (Larry Williams) целиком посвящена СОТ. Пролистав ее, мы не нашли там стратегии в явном виде. Но мы знаем, что на него долгое время работал (-ет?) Мюррей Руджеро (Murray Ruggiero), а в его книге 1997 года приведена такая стратегия. Можно предположить, что это и есть стратегия Ларри Вильямса. Идея ее заключается в том, что 1) Commercials торгуют против трендов. Будучи инсайдерами и из-за размера своих позиций, они начинают и завершают тренды. 2) Мелкие спекулянты, напротив, обычно покупают у вершин и продают на дне. Отсюда, собственно, стратегия:

Если хеджеры открыли экстремально большие лонги, а мелкие спекулянты открыли экстремально большие шорты, то время покупать. И наоборот, если хеджеры открыли экстремально большие шорты, а мелкие спекулянты – лонги, то время продавать.

Здесь используется индекс сентимента, аналогичный SI, за исключением того, что нормализация производится не на всей предыдущей истории, а на скользящем окне длиной 1.5-4 года. Стратегия покупает около существенных минимумов, продает около существенных максимумов, имеет на T-Bonds 75% выигрышных сделок и профит-фактор = суммарная прибыль / суммарный убыток = 7.45. Утверждается, что СОТ является ценным индикатором для многих рынков – T-Bonds, S&P500, сельскохозяйственных рынков, таких как кукуруза или соевые бобы, и таких рынков, как золото и нефть.


5. Очень важно правильно синхронизировать данные с ценами.
Еженедельные данные СОТ представляют собой значения открытого интереса при закрытии торгов во вторник, а публикуются они по пятницам, после закрытия торгов. Следовательно, обновленные данные мы можем использовать только в следующий понедельник с открытия торгов, и запаздывание по отношению к ценам составляет от 4-х до 9-ти торговых дней. Поэтому необходимо моделировать последовательное поступление данных СОТ в реальном времени с корректировкой их задним числом при получении новых значений. В частности, при использовании weekly разрешения необходимо на баре t использовать данные СОТ в момент t-1. То же самое справедливо для любых других данных, если время их публикации не совпадает с их отметкой времени. Подглядывание в будущее является одной из наиболее частых ошибок при создании «граалей».


6. Проверим эти стратегии.

Возьмем, к примеру, кукурузу. Результаты, мягко говоря, не впечатляют:

Справедливости ради, не утверждалось, что «академическая» стратегия должна работать на других фьючерсах, помимо индекса S&P500. Можно, конечно, подобрать рынки и оптимизировать на истории уровни для экстремального сентимента и размер окна нормализации. Но, как вы понимаете, лучше что-то подправить в консерватории. Поэтому «мы пойдем другим путем»7.


7. Этапы большого пути.

1) Мы решали непосредственно заявленную задачу: максимизировать ожидаемую прибыль при ограничениях на ожидаемую максимальную просадку. Обычно же декларируют одно, а решают совсем другое. Например, часто приходится слышать, что ПИФам очень сложно превзойти бенчмарк из-за ограничений на структуру активов. Но вместо того, чтобы непосредственно искать управление, максимизирующее матожидание разности (или отношения) эквити ПИФа и бенчмарка, при заданных ограничениях8, люди накручивают какие-то коэффициенты Шарпа и прочие малозначимые в рамках поставленной задачи величины. Естественно, речь здесь идет о ликвидных активах. Хотя, может быть, и «рисование» неликвидами имеет смысл оптимизировать.

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

3) Мы использовали «правильный» для нашего круга задач метод Data Mining, созданный нашим партнером, неопубликованный, и значительно превосходящий разрекламированные публичные аналоги.

4) В свое время мы немало времени потратили на управление капиталом. Сейчас мы используем наиболее эффективный из возможных способов оптимального управления – с обратной связью и упреждением.


8. Оценим полученные результаты.

Для корректного сравнения с традиционными МТС мы решили «игрушечную» задачу, ограничив область допустимых управлений множеством {-1, 0, 1}, что соответствует торговле одним контрактом без реинвестирования. Здесь «-1» соответствует позиции «шорт», «0» «позиция отсутствует», и «1» «лонг». Каждому недельному бару исторического ряда цен мы поставили в соответствие требуемую позицию. Случайным образом выбрали из ряда цен out-of-sample множество объемом в половину длины выборки. На оставшемся, обучающем, подмножестве мы нашли закономерности между текущими и прошлыми данными и нужной позицией9. Точность распознавания правильных позиций на out-of-sample составила 80%.

Отметим, что на 7% баров никаких закономерностей обнаружить не удалось. Эти бары соответствуют так называемым джокерам10. Примечательно, что в 22% случаев джокеры объединены в связные множества из 2-х и более последовательных баров, т.е. прогнозируемые области чередуются с непрогнозируемыми, на которых лучше не торговать. Наилучший прогноз при джокере – это предыдущее значение, или приращение = 0.

Если бы мы могли торговать справа налево, то мы бы ограничились траекторией эквити на тестовом множестве. Но, поскольку траектория цен в будущем заведомо будет другой, мы методом Монте-Карло на распределении приращений цен out-of-sample строим множество всевозможных эквити:

Среднегодовая прибыль в единицах начальной маржи варьируется от 5.81 до 9.68, с матожиданием 7.58. Матожидание максимальной просадки за весь 10-летний тестовый период составляет 2.2 начальных маржи. Это означает, что минимальный размер капитала должен быть больше $9500. В «привычных» терминах мы имеем:

средняя прибыль за один недельный бар – $152 (14% от начальной маржи);

прибыльных баров – 61%;

коэффициент Шарпа – от 2.05 до 3.7, с матожиданием 2.85 (при безрисковой доходности 6.38%).

Фактически, торгуя одним контрактом, мы использовали только результаты шагов 1)-3). Отметим, что аналогичные результаты получаются на всех товарах из разных групп, которые мы успели проанализировать.


9. Оптимальное управление фьючерсным портфелем обсудим в следующий раз.

Для затравки, приведем пример управления размером позиции для одного актива – кукурузы. Задавая ограничения на ожидаемую максимальную просадку, мы можем построить оптимальную границу в плоскости доход-риск, аналогично тому, как это делается в классической теории портфеля. В частности, задав максимальную просадку в 30%, мы получаем следующую картинку для эквити, разумеется, out-of-sample:

Здесь начальный капитал $100000, на проскальзывание и комиссию вычитается $25 на контракт. Среднегодовая прибыль составляет 169.4%. При ограничении на просадку в 50% среднегодовая прибыль при тех же условиях составляет уже 402.7%.


Успехов в трейдинге.

1 В используемых нами методах оптимизация на исторических данных не производится.

2 Фундаментально связанные рынки.

3 Из одного трейдерского форума.

4 Commodity Futures Trading Comission.

5 с 1992 года, до этого дважды в неделю, еще раньше – ежемесячно.

6 Howard Simons, Futures Magazine, Jun 1998.

7 В.И. Ульянов (с)

8 Эта задача проще, чем та, которую мы решили, по крайней мере, математически: она не содержит в ограничениях недифференцируемых нелинейностей. Однако список приоритетных для нас задач содержит гораздо более интересные. Хотя, it depends

9 Разумеется, мы попробовали и более распространенный способ – разделить ряд цен пополам на обучающее и тестовое множества. Результаты аналогичные – стабильные на out-of-sample периоде в 10 лет.

10 «… В фазовом пространстве многих объектов, с которыми мы имеем дело в жизни, есть места, называемые областями джокеров, в которых случайность или игровой элемент, или фактор, не играющий никакой роли в другой ситуации, может оказаться решающим и не только повлиять на судьбу системы, но и скачком перевести ее в другую точку фазового пространства. Правило, по которому совершается этот скачок, и называется джокером. Название пришло из карточной игры. Джокер - карта, которой можно присвоить значение любой карты по желанию играющего. Понятно, что это резко увеличивает число вариантов и степень неопределенности.» – Г. Малинецкий. Подробнее здесь.

12 комментариев:

Dr.Livsi комментирует...

2 DT
а можно поподробнее каким образом Вы вычленили/как надо вычленять и находить закономерности джокеров?
p.s. блог суперовый хотя и маленький

DT комментирует...

"как надо вычленять и находить закономерности джокеров"

Наоборот. Там где не найдено закономерностей в данных , где наша система распознавания\прогнозирования говорит "не знаю" - считаем, что там джокер.
Есснно, джокер - штука относительная, зависит от используемых данных и метода.
Пример: результат внешнего непрогнозируемого воздействия.

"p.s. блог суперовый хотя и маленький"

Спасибо на добром слове.

Dr.Livsi комментирует...

Сорри, я немного неправильно сформулировал вопрос. Хотел написать:
Как вы ищите закономерности и отфильтровываете джокеров?

Dr.Livsi комментирует...
Этот комментарий был удален автором.
DT комментирует...

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

Dr.Livsi комментирует...

Про то что рынок иногда является непредсказуемым а иногда предсказуемым (с долей вероятности более 50%) согласен на все 100.
Не совсем понятно про паттерны. Вернее как Вы их ищете на одном баре?
Просто в моем понимании поттерны это грубоговоря либо фигуры тех анализа типа пробития треугольника, сигналы идикаторов и т.д. А вот как Вы по барам смотрите совсем непонятно

DT комментирует...

"Не совсем понятно про паттерны. Вернее как Вы их ищете на одном баре?"

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

Dr.Livsi комментирует...

Ок, если я правильно понял то по аналогии с паттернами тех анализа если взять сходящийся треугольник то при "появлении его на чарте" мы воспринимаем их (треугольники) как паттерн, а все остальные фигуры, тренды и консолидации как джокеры, правильно?

DT комментирует...

Нет. Если на данном баре не обнаружено никаких известных нам паттернов, фигур и т.д., то это джокер.
Но на одном баре может быть и несколько паттернов. Пример: нарисовались голова и плечи, но голова и правое плечо отдельно есть треугольник.

Dr.Livsi комментирует...

Спасибо, более менее понятно.

Unknown комментирует...

Вопрос. поиск патернов разве не является таким же видом тех анализа как например и пробои волатильности?

Daniel Auer комментирует...

Здравствуйте, Дмитрий.
Недавно натолкнулся на данный блог. Очень интересные заметки, сам к аналогичным мыслям пришел.
К сожалению, продолжения не видно. Скажите, какие у Вас сейчас успехи? Будет ли продолжение на эту тему?