d9e5a92d

Александр Сорокин - Об одной торговой системе

В этой статье я хотел бы рассказать о своей механической торговой системе (МТС) и о том, как она создавалась и тестировалась.

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

Достоинства американского рынка ценных бумаг: отличная ликвидность, большое количество акций (около 10 000), очень длинная история торговли (рынок существует уже более 200 лет), рынок хорошо регулируется. Основной недостаток — скоррелированность большинства акций с рынком в целом (если рынок падает, то падают практически все акции).

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

Достоинства рынка Forex: работает 24 часа, отличная ликвидность, достаточно длинная история торговли (около 30 лет). Недостатки: очень малое количество инструментов для торговли (четыре главные пары валют и несколько кросскурсов), неограниченный риск, сильная корреляция между курсами валют.

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

Определив рынок для торговли, надо ответить на вопрос: «Как торговать?» Данный вопрос сводится к четырем подвопросам: выбору акции для торговли, выбору момента торговли, решению купить или продать и определении количества акций для покупки или продажи. На первые три вопроса отвечает торговая стратегия, на четвертый отвечает система управления деньгами (money management). Рассмотрим процесс построения торговой стратегии.

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

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

После решения об использовании системной стратегии необходимо определить принцип, который будет положен в основу системы. Следование за трендом (trend-following) — самый надежный способ зарабатывать деньги на рынке. Торговые правила, по которым система будет выдавать сигналы на открытие и закрытие позиций, вытекают из того определения, которое мы дадим тренду.

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

Помимо правил для открытия позиции нужны еще правила для закрытия позиции. Здесь обычно правила разделяют на две группы: правила для закрытия прибыльных сделок и правила для закрытия убыточных сделок (stop-loss). В случае торговли трендследящей системы такое разделение можно не делать, так как правила закрытия позиций следуют из нашего определения тренда. При покупке на повышательном тренде для закрытия позиции мы можем использовать следящие остановки (trailing stops), которые определяются как наименьшая цена за последние M дней. На понижательном тренде следящие остановки определяются как наибольшая цена за последние M дней. Таким образом, позиция будет закрываться, как только цена сделает новую, более низкую впадину на повышательном тренде, что будет говорить о возможном начале понижательной тенденции.

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

Теперь, чтобы завершить создание системы, надо добавить в нее набор правил, отвечающих на вопрос об определении количества акций для покупки или продажи. Этот набор правил обычно называют системой управления деньгами (money management). Существует много способов расчета объема сделки,

но цель у них одна и та же — рассчитать объем так, чтобы ряд из нескольких неудачных сделок не нанес серьезного ущерба капиталу. Мне кажется наиболее логичным такой вариант, при котором объем рассчитывается таким образом, что на каждую сделку приходится риск с фиксированным размером по отношению к капиталу. Например, мы можем поставить риск в 1 % от капитала на каждую сделку и, исходя из этого, рассчитывать количество акций. В своей системе я применяю данный подход в немного модифицированном виде. Средняя убыточная сделка в моей системе составляет 0,4 % от величины капитала. Таким образом, для того чтобы система потеряла 20 % от капитала, должно случиться 50 убыточных сделок подряд, что можно считать крайне маловероятным событием.

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

По поводу необходимости оптимизации мнения сильно расходятся. Одни считают, что оптимизацию надо проводить обязательно, чтобы выжать максимум из той системы, которая была построена, другие считают, что оптимизировать вообще нельзя, так как при оптимизации происходит подстройка под кривую (curve-fitting) и система будет хуже работать в будущем. Мне кажется, главное в решении этого вопроса — избежать крайностей обоих вышеуказанных подходов. Я считаю, что оптимизацию надо делать частью процесса тестирования, то есть тестировать не единственный набор параметров системы, а весь диапазон возможных параметров. Это позволяет, с одной стороны, избежать переоптимизации, так как выбирается набор параметров из середины области с максимальными значениями критерия оптимизации, а с другой стороны, узнать, как ведет себя система на параметрах, отличных от тех, которые мы первоначально встроили в систему. Также очень важно правильно выбрать критерий оптимизации, то есть числовую характеристику, согласно которой мы будем сравнивать различные наборы параметров и максимум которой мы хотим получить в результате оптимизации. Наиболее очевидной характеристикой будет годовая доходность, однако ее нельзя назвать наи-

ристики отношения доход/риск для совокупности сделок, совершенных системой, а отношение годовая доходность (%)/максимальные потери капитала (%) — для сравнительного анализа динамики капитала.

лучшей, так как в этой характеристике отсутствует очень важный элемент — риск, который, как известно, является обратной стороной дохода. Лучше в качестве критерия оптимизации взять не доходность, а характеристику отношения доход/риск.

Александр Сорокин - Об одной торговой системе


Я считаю, что наиболее адекватными являются следующие две числовые характеристики: Profit factor и отношение годовая доходность (%)/максимальные потери капитала (%). Profit factor определяется как отношение процента

Далее я по шагам опишу свою методику тестирования и оптимизации систем: 1. Выбираем наиболее ликвидные акции в количестве, необходимом для формирования портфеля по сигналам системы. В моем случае было отобрано

Александр Сорокин - Об одной торговой системе


прибыльных сделок умноженного на среднюю прибыльную сделку к проценту убыточных сделок умноженному на среднюю убыточную сделку. Profit factor можно использовать в качестве характе

500 акций. В качестве численного критерия ликвидности я взял Simple Moving Average (Close*Volume, 100), то есть простую скользящую среднюю дневного долларового объема за период в

100 дней. Длину истории по этим акциям я взял 10 лет или с начала торгов, если торги по акции начались после 01/01/90.

2. Я написал для своей системы программу, которая тестирует эти 500 акций по всему набору параметров. Например, в моей системе два параметра. У одного из них количество значений составляет 15, у другого 10, итого 150 комбинаций + разбивка этих комбинаций по годам. В итоге я получил текстовый файл с показателями системы, такими как % прибыльных сделок, profit factor, средняя длительность сделки и т. д. в агрегате по 500 акциям за каждый год из периода тестирования в 10 лет.

3. В Excel удаляем все записи, которые дали менее 200 сделок за год. Далее берем любой год (лучше ближе к концу периода тестирования) и смотрим, какой набор параметров дал наибольший profit factor. Найдя данный оптимальный (по критерию максимума profit factor) набор параметров для выбранного года, смотрим его по остальным годам периода. Если в остальные годы этот набор давал близкие результаты, то переходим к следующему шагу, в противном случае берем другой год и повторяем процедуру. Еще маленькое дополнение: если на каких-то наборах параметров система показала отрицательную прибыль, то желательно посмотреть отдельные сигналы на графиках и попытаться понять, почему так получилось. По моему глубокому убеждению, хорошая система должна давать хотя бы неотрицательные результаты на любом наборе параметров.

4. Смотрим, какие результаты давали параметры, близкие к выбранным. В хорошей системе profit factor должен постепенно (и главное без резких изменений) уменьшаться по мере удаления от оптимальных параметров. Если условие не выполняется, то возвращаемся к шагу 3 и ищем новый набор параметров.

5. К текущему шагу мы имеем систему и набор оптимальных параметров к ней, однако не знаем, какую доходность может давать система и какие у нее могут быть потери капитала при торговле портфелем. Чтобы это выяснить, я написал программу, которая моделирует управление портфелем на основе сделок, совершенных торговой системой на периоде тестирования. Суть программы очень проста: задается максимальный текущий риск по портфелю в процентах (текущий риск в долларах по портфелю определяется как сумма текущих рисков в долларах по позициям, составляющим портфель, которые, в свою очередь, определяются как разность между ценой вчерашнего закрытия и следящей остановкой. B формульном виде: количество акций* (цена закрытия (вчера) — следящая остановка (сегодня)). Для получения текущего риска по портфелю в процентах складываем полученные по формуле значения в долларах для каждой позиции, сумму умножаем на 100 и полученное число делим на оценку портфеля в ценах вчерашнего закрытия. По мере появления новых сигналов торговой системы на вход мы добавляем акции в портфель до тех пор, пока значение текущего риска не достигнет значения максимального текущего риска. Далее новые акции добавляются по мере закрытия старых позиций. В итоге, на этом шаге, мы получим среднюю годовую доходность системы в процентах и максимальные потери капитала в процентах при торговле порфелем с заданным уровнем максимального текущего риска.

6. Так как при моделировании портфеля мы выделили некоторое подмножество всех сигналов торговой системы, которые имели на шагах3 и4, то желательно удостовериться в том, что показатели этого подмножества не сильно изменились относительно тех, что мы имели на шагах 3 и 4.

7. В качестве седьмого шага желательно повторить шаги 5 и 6 для выбранного набора параметров, но по другой группе рынков, например, по фьючерсам и рынкам Forex, чтобы удостовериться в том, что система может работать и на данных рынках — это добавит уверенности в надежности торговой системы.

Результаты тестирования при управлении портфелем по моей системе следующие: доходность — около 100 % годовых, максимальные потери капитала — 20 %. Потери капитала рассчитываются от максимального уровня, достигнутого системой (peak-to-valley drawdown). Динамика кривой капитала, полученная на тестировании системы, представлена в логарифмическом формате на графике (рис. 1).

С 22 февраля этого года осуществляется тестирование системы в реальном времени. Результаты тестирования показаны на графике в сравнении с динамикой трех индексов (рис. 2).

Прибыль к текущему моменту (18 октября) составляет 18 %. Максимальная просадка от пика к впадине составила 8 %. Сравним данные результаты с вложениями в три наиболее популярных индекса. Вложение в индекс Nasdaq-100 в момент начала тестирования системы в реальном времени принесло бы к текущему моменту убыток в 20 % от размера вложенных средств. Максимальная просадка от пика к впадине составила -37 %. Это означает, что если бы вложение в индекс было осуществлено в момент пика на рынке, то в некоторый момент времени после вложения (23 мая) убытки достигли -37 %. Вложение в индекс S&P 500 в момент начала тестирования принесло бы к текущему моменту убыток в 0,5%. Максимальная просадка от пика к впадине составила -13 %. Вложение в индекс Dow Jones Industrial принесло бы убыток в 2 %. Максимальная просадка от пика к впадине составила -11 %. Таким образом, управление капиталом по системе было значительно более эффективным в сравнении с вложением в любой из трех индексов как по размеру полученной прибыли, так и по размеру максимальной просадки капитала.

Подробные данные о тестировании системы приведены на сайте . Автор будет благодарен за любую конструктивную критику и готов обсуждать высказанные идеи.



Содержание раздела