Путеводитель по разработке биржевых роботов » Элитный трейдер
Элитный трейдер


Путеводитель по разработке биржевых роботов

6 июля 2015 QuantAlgos

Основные этапы создания автоматических торговых систем сформулировал Michael Halls-Moore на своем сайте www.quantstart.com. Я присоединяюсь к его советам и рекомендациям - по текстам на сайте видно, что автор действительно занимается практической работой по алготрейдингу.

Автоматическая торговля это чрезвычайно сложная область биржевых финансов. Значительное время может занять получение необходимых знаний для создания вашей собственной стратегии. Также потребуется неплохие навыки в программировании, как минимум на таких языках, как MATLAB, R или Python. В связи с постоянным ростом частоты сделок технологические аспекты торговли тоже становятся очень важны. Это требует изучения языков программирования C/C++.

Автоматическая торговая система состоит из следующих основных компонентов:
Идентификация стратегии - нахождение стратегии, имеющей положительный потенциал прибыльности и решение о том, насколько она будет высокочастотной
Бэктестирование стратегии - получение данных, анализ производительности и устранение недооценки/подгонки
Система исполнения - связь с биржей, автоматизация торговли и минимизация транзакционных комиссий
Риск-менеджмент - оптимальное размещение капитала, размер ставки/критерий Келли, и психология трейдинга

Сначала рассмотрим, как найти торговую стратегию.

Идентификация стратегии

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

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

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

Приведем небольшой список источников для поиска торговых идей:
Исследовательская сеть общественных наук - www.ssrn.com
Ахив по вычислительным финансам - arxiv.org/archive/q-fin
В писках Альфы - www.seekingalpha.com
Элитный трейдер - www.elitetrader.com
Ядерные финансы - www.nuclearphynance.com
Вычислительность - quantivity.wordpress.com
uralpro: Мой скромный блог - www.quantalgos.ru

Множество стратегий, которые вы найдете, попадут в категории возврата к среднему и трендследящим/импульсным алгоритмам. Стратегия возврата к среднему пытается эксплуатировать тот факт, что существует долговременное среднее временной серии ( такой как спред между двумя кореллироваными активами) и краткосрочные отклонения от этого среднего всегда возвращаются к нему. Импульсные стратегии основаны на существовании факта продолжении движения цены актива в том же направлении что и прошлое движение - импульс, что может быть объяснено психологией инвесторов и структурой больших фондов, предпочитающих "оседлать тренд".

Другой очень важные аспект автоматического трейдинга это частота торговой стратегии. Низкочастотный трейдинг (LFT) обычно ассоциируется со стратегиями, которые удерживают позиции дольше, чем одни тороговый день. Соответственно, к высокочастотному трейдингу (HFT) относятся стратегии, торгующие внутри дня. Ультра-высокочастотный трейдинг (UHFT) характеризует стратегии, удерживающие позиции в течении секунд или миллисекунд. Частный трейдер может разрабатывать HFT и UHFT стратегии, при условии детального понимания микроструктуры рынка и технологических особенностей биржевых торгов.

Когда стратегия, или набор стратегий, определены, их необходимо протестировать на прибыльность на исторических данных. Это область бэктестинга.

Тестирование стратегий

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

После идентификации стратегии необходимо получить исторические данные по которым будет производиться тестирование и, возможно, настройка. Существует большое количество поставщиков данных по всем классам активов. Их стоимость в общем зависит от качества, глубины и частоты данных. Традиционно для начинающих трейдеров использовать бесплатные данные с Yahoo Finance и Google Finance.

Основные проблемы исторических данных состоят в их аккуратности/чистоте и учете корпоративных особенностей, таких как дивиденты и сплиты акций:
Аккуратность означает общее качество данных - содержат ли они ошибки. Ошибки иногда легко определить, используя, например, фильтр выбросов, который находит неправильные (слишком большие) отклонения во временной серии и скорректировать их. Иногда найти ошибку очень сложно. Часто необходимо иметь двух или больше поставщиков и сравнивать их данные друг с другом.
Ошибка "выживания" чаще особенность бесплатных или дешевых наборов данных. Данные с такой ошибкой не содержат активы, которые больше не торгуются. В случае акций это исключенные из листинга или обанкротившиеся компании. Это приводит к тому, что любая стратегия, тестируемая на таком наборе данных покажет себя лучше, чем в реальной торговле, так как на прошедшем времени "победители" уже, как бы, определены.
Корпоративные особенности включают в себя "логистическую" активность, которая происходит, когда цена акции компании изменяется скачком, который не должен быть включен в расчет приращений цены. Корректировка под дивиденты и сплиты (разделение) акций необходима. Процесс, известный как обратная корректировка, нужен под каждый вид таких корпоративных действий. Он должен применяться осторожно, чтобы избежать путаницы с реальными приращениями цен. Много трейдеров ошибаются на этом этапе!

В порядке проведения процедуры тестирования необходимо использование программной платформы. У вас есть выбор между специальным софтом, как например, Tradestation, числовой платформой, как Эксель или МATLAB, или полностью самописной программой на языках программирования, таких как Python и C++. Мы бы не советовали пользоваться Tradestation, Excel или MATLAB, а использовать собственную платформу по следующим причинам. Одним из преимуществ такого подхода является глубокая интеграция тестовой и исполнительной части, особенно для очень продвинутых статистических стратегий. Для HFT старетгий общепринято использование самописного программного обеспечения.

При тестировании стратегии нужно определить, насколько хорошо она работает. Индустриальным стандартом метрик для автоматических стратегий являются максимальная просадка и коэффициент Шарпа. Максимальная просадка характеризует наибольшее падение кривой эквити за определенный период времени ( обычно год). Чаще всего измеряется в процентах. LFT стратегии имеют тенденции к большим просадкам, чем HFT стратегии, в связи с меньшим числом статистических факторов. Исторический бэктест покажет максимальную прошлую просадку, которая будет служить ориентиром для будущей производительности стратегии. Вторая метрика это коэффициент Шарпа, который эвристически определен как среднее превышение приращений прибыли деленное на среднеквадратичное отклонение приращений прибыли. Здесь превышение определяется как разница прибыли стратегии и определенного эталона, за который обычно принимается индекс SnP500. Отметим, что просто годовая доходность обычно не применяется, так как не учитывает волатильность стратегии (в отличие от коэффициента Шарпа).

После того, как стратегия протестирована и, насколько это возможно, избавлена от недооценки/подгонки, с хорошим коэффициентом Шарпа и минимизированными просадками, настало время выстроить систему исполнения.


Система исполнения ордеров

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

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

Подключиться к брокеру можно разными способами - от телефонных звонков до полностью автоматического программного интерфейса (API). Лучше, если вы хотите автоматизировать исполнение ваших сделок насколько это возможно. Это освобождает вас от последующих разработок, когда вы захотите запускать множество стратегий или даже высокочастотную стратегию. Распространенные программные платформы, такие, как MATLAB, Excel и Tradestation хороши для низкочастотных, простых стратегий. Но необходимо создавать собственную систему исполнения, написанную на высокопроизводительном языке программирования, таком, как C++, для HFT стратегий.

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

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

Транзакционные издержки могут привести к тому, что очень прибыльная стратегия с хорошим коэффициентом Шарпа превратится в экстремально убыточную. Может быть достаточно трудно правильно учесть транзакционные издержки в бэктесте. В зависимости от частоты стратегии, вам потребуются исходные данные, которые включают тиковые изменения по бидам и аскам. Целые команды трейдеров отдельно занимаются исполнением в больших фондах по этим причинам. Представьте сценарий, когда фонду нужно исполнить значительное число сделок (причин для этого может быть много и разных). При появлении такого количества акций на рынке, они могут сильно повлиять на цену и не получить оптимального исполнения. Поэтому существуют особые механизмы выставления ордеров, хотя, все равно, риск проскальзывания остается. Другие стратегии используют эти действия фондов для получения прибыли от возникающих неэффективностей. Это область структурного арбитража фондов.

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

Управление риском

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

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

Другой ключевой компонент управления рисками - это работа над собственным психологическим состоянием трейдера. Очень сильное влияние психология оказывает на результаты торговли. Это менее проблематично в отношении алгоритмического трейдинга, когда стратегия запускается в полностью автоматическом режиме. Наиболее часто встречается пережидание убытков, когда убыточная позиция не закрывается из-за нежелания зафиксировать потери. Также, прибыль может фиксироваться слишком рано из-за страха потери уже полученного профита. Другой распростаненный риск назывется риском новизны. Он заключается в том, что трейдер придает последним событиям на рынке гораздо больше значения, чем событиям в долгосрочном периоде. И, конечно, классическая пара эмоциональных рисков - жадность и страх. Они часто приводят к использованию слишком маленьких/больших плечей, которые ведут к уменьшению прибылей или значительным потерям.

Заключение

Как мы видим, алгоритмическая торговля это экстремально сложная, хотя и очень интересная область вычислительных финансов. По этим причинам, перед тем, как применять такую торговлю на практике, необходимо проделать огромное количество работы. Вам нужна, как минимум, серьезная подготовка в статистике и эконометрике, с большим опытом в применении, с помощью языков программирования, таких, как MATLAB, Python или R. Для более сложных стратегий, относящихся к высокочастотным, ваши знания должны включать операционную систему Linux, языки C,C++ и оптимизацию сетевых задержек.

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

uralpro: От себя могу добавить, что даже при условии неплохих навыков в программировании, очень непросто быстро создать правильный "каркас" торгового робота. Скорее всего, хороший программист это сделает, но потратит значительное количество времени. Для его экономии , я на этом сайте предлагаю готового робота robot_uralpro, который, хотя и был прибыльным в прошлом - 2010-2011 годах, имеет все составляющие и современных торговых систем. Также на его основе легко создать бэктест, поэтому приобретение этого робота будет хорошим вкладом в ваше обучение.

http://www.quantalgos.ru/ (C)
Не является индивидуальной инвестиционной рекомендацией
При копировании ссылка обязательна Нашли ошибку: выделить и нажать Ctrl+Enter