3 распространенные ошибки в алгоритмическом трейдинге
Для большинства трейдеров разработка алгоритмических стратегий – это лишь средство для достижения цели, испытание, которое нужно перетерпеть на пути к получению прибыли. Тратить золото приятнее, чем добывать его, так же обстоят дела и с разработкой торговых систем: фактическая торговля обычно более увлекательна, чем разработка торгового подхода.
К сожалению, это заставляет трейдеров прибегать к различным уловкам и совершать всевозможные ошибки в процессе разработки торговой методологии. Хотя в краткосрочной перспективе это облегчает жизнь трейдера, тем не менее, ошибки и всевозможные уловки неизбежно сказываются на продуктивности стратегии во время реальной торговли. И конечный результат оказывается плохим.
Хорошая новость заключается в том, что большинство трейдеров совершают одни и те же ошибки в процессе разработки, а если их можно выявить, то их можно преодолеть и исправить. Устранение этих проблем, к сожалению, не упрощает разработку стратегий. Наоборот: правильно выполняемая стратегия становится гораздо сложнее, когда устраняются все кратчайшие пути.
Итак, какие самые распространенные ошибки и уловки? Рассмотрим три наиболее популярные ошибки и обсудим, в чем их опасность, как их распознать и исправить. Избегая этих распространенных ошибок, любой трейдер сможет создавать торговые системы.
Ошибка №1. Излишнее усложнение алгоритмической стратегии
Если вы уже какое-то время торговали, то, несомненно, сталкивались с запутанными торговыми подходами. Дискреционным трейдерам наверняка встречались графики, как на рисунке 1, усеянные массой индикаторов, линий и множеством зон поддержки и сопротивления. Для алгоритмического трейдера запутанный подход может означать тысячи строк кода с десятками или даже сотнями переменных для оптимизации и настройки.
Оба этих подхода имеют одну общую черту: они крайне сложны и перегружены. Многие неопытные трейдеры думают, что именно так нужно разрабатывать алгоритмическую систему. Их логика такова: чем больше сигналов со стороны индикаторов и чем точнее подогнан алгоритм к прошлым данным, тем лучше будет стратегия. Но это далеко от истины.
Ошибочно полагать, что сложный подход будет лучше, поскольку превосходный результат, полученный на основе исторических данных, не равнозначен успешной торговле в режиме реального времени. Постоянные доработки подхода – добавление еще одного индикатора или правила в алгоритм для усложнения торгового метода – обычно придают трейдеру ложное чувство уверенности. Оптимизация и добавление новых правил в стратегию не означает, что она будет лучше работать в будущем.
Как ни трудно в это поверить, но лучшими оказываются именно простые подходы. Для дискреционного трейдера чистый график с одним или двумя индикаторами в комбинации с глубоким пониманием ценового поведения и динамики рынка всегда лучше, чем график, загроможденный линиями и индикаторами. Для алгоритмических трейдеров одно простое правило входа обычно лучше, чем пять или десять условий для открытия сделки.
Простой пример показан на рисунке 2. Хотя это не идеальная система, сама стратегия является очень простой. Такая стратегия вряд ли будет чрезмерно подогнана под исторические данные и, следовательно, имеет больше шансов успешно работать в будущем.
Рисунок 1. АНАЛИТИЧЕСКИЙ ПАРАЛИЧ
Рисунок 2. ЧЕТКОЕ НАПРАВЛЕНИЕ
Ошибка №2. Игнорирование торговых издержек (затрат)
У большинства продаваемых торговых систем внизу обычно добавлена маленькая приписка «без учета комиссий и проскальзывания». Аналогичным образом многие разработчики-самоучки игнорируют комиссии и проскальзывание в процессе разработки. А если они и учитывают эти издержки, то часто недооценивают их величину.
Вы услышите разные причины, почему не учитываются комиссии и проскальзывание. «У разных брокеров разные комиссии» – это распространенное оправдание. «Моя система использует только лимитные ордера» – еще одно. Но настоящая причина заключается в том, что данная система должна выглядеть лучше, чем она есть на самом деле. Разрабатывать прибыльные системы гораздо труднее, когда в них учитываются реальные торговые издержки.
Например, рассмотрим простую систему скальпинга для мини-фьючерса S&P, которая открывает 20 сделок в день и в среднем приносит $15 прибыли в сделке без учета комиссий и проскальзывания. Трейдер может увидеть конечный результат – $300 в день – и подумать, что это неплохой заработок. Но если в одну полную сделку добавить $5 комиссии и 1 тик проскальзывания (и это очень оптимистичные цифры), то $300 в день превращаются в -$50.
Одним из скрытых последствий оценки стратегии без учета комиссий и проскальзывания является то, что это побуждает трейдера открывать больше сделок, чем необходимо. Вот пример. Предположим, что описанная выше скальпинговая система – это Система А. Она приносит $300 прибыли в день без учета комиссий и проскальзывания. Сравните ее с Системой Б, которая совершает всего 1 сделку в день и в среднем приносит $50 в сделке до вычета торговых расходов. Любой трейдер, оценивая эти системы, наверняка выберет Систему A вместо Системы Б. Однако после вычета комиссий и проскальзывания единственным сто́ящим подходом будет Система Б. Она торгует реже, и комиссии с проскальзываниями составляют гораздо меньший процент от валовой прибыли.
Следовательно, с самого начала разработки крайне важно учитывать адекватные величины комиссий и проскальзывания. $5 комиссии и 1-2 тика проскальзывания в одной полной сделке будут разумными цифрами для начала.
Ошибка №3. Использование всех исторических данных
Третья ошибка, которую совершают многие трейдеры в процессе разработки – это тестирование всех доступных исторических данных. Неопытные трейдеры выполняют оптимизации и анализ данных вплоть до настоящего времени. Обычно в основе этого лежит следующая логика: трейдер хочет быть уверен, что стратегия «настроена» на самые последние данные.
Естественно, если первое тестирование проваливается, трейдер добавляет некое правило или фильтр (тем самым всё ближе подходя к ошибке усложнения, о которой говорилось ранее) и снова прогоняет все данные. В конце концов трейдер получает некую более-менее успешно работающую стратегию и начинает торговать на реальном рынке. Однако такой подход почти всегда обернется катастрофой в реальном времени.
Гораздо предпочтительнее, хоть и труднее, для проверки торговой системы использовать данные «вне выборки». Например, трейдер может тестировать стратегию на данных за последние 10 лет, но оставить нетронутым и незадействованным последний год, а после завершения разработки запустить стратегию на ранее неиспользованных данных (вне выборки). Если система работает приемлемо, ее можно рассматривать для торговли в реальном времени.
Можно пойти еще дальше – использовать форвардное тестирование, которое объединяет несколько периодов вне выборки. Такой подход с гораздо большей вероятностью приведет к успеху в реальной торговле, так как кривая капитала будет полностью состоять из результатов вне выборки.
Подводный камень форвардного тестирования, или тестирования на данных вне выборки, состоит в том, что как только тест будет проведен один раз, любые последующие тесты уже не будут настоящим тестированием на данных «вне выборки». То есть если проводить его многократно, можно невольно превратить тестирование на данных вне выборки в тестирование на данных внутри выборки. Но тестирование вне выборки всё же является гораздо лучшим методом, чем оптимизация всех данных.
Заключение
Создать жизнеспособную торговую стратегию крайне трудно, я пишу об этом в своих книгах по трейдингу. Многим трейдерам не удается этого достичь, и в процессе разработки системы они идут по кратчайшему пути или допускают ошибки. Конечно, добавлять правило за правилом, фильтр за фильтром и условие за условием легче, чем найти одно простое правило, которое будет эффективно работать. Точно так же легко найти работоспособные стратегии, если не учитывать комиссии и проскальзывания. Наконец, запускать оптимизацию на всех доступных данных намного проще и, казалось бы, гораздо плодотворнее, чем выполнять трудоемкие форвардные тестирования или тестирования на данных вне выборки.
Простой вывод из этих ошибок разработки заключается в следующем: если подход упрощает поиск систем или показывает лучшие результаты бэктестирований, это предупреждающий сигнал, что здесь что-то неправильно. Правильная разработка системы – это сложный процесс. Однако в долгосрочной перспективе правильно разрабатывать торговые системы всегда предпочтительнее, чем терять деньги на рынке из-за той или иной ошибки при разработке.
Переведено специально для TLAP,
Кевин Дж. Дейви
