Количественные торговые стратегии: гид для начинающих

В этой статье я собираюсь представить вам некоторые фундаментальные понятия, относящиеся к количественным (quantitative) торговым системам. Надеюсь, этот пост будет полезен двум аудиториям. Первой – людям, пытающимся получить работу в фонде в качестве количественного (quant) трейдера. Второй – людям, которые хотят попробовать наладить свой собственный «розничный» бизнес алгоритмической торговли.

Количественная торговля – это чрезвычайно сложная область количественных (quant) финансов. Получение необходимых знаний для прохождения интервью или построения собственных торговых стратегий может занять очень долгое время. И не только это, поскольку потребуется громадный опыт в программировании, по крайней мере, на таких языках как MATLAB, R или Python. Однако, когда возрастает частота торговых стратегий, технические аспекты становятся более значимыми. Таким образом, знакомство с C/C ++ будет иметь первостепенное значение.

Система количественной торговли состоит из четырех основных компонентов:

Идентификация стратегии – нахождение стратегии, разработка преимущества и выбор торговой частоты.

Бэктестирование стратегии – получение данных, анализ результатов стратегии и устранение смещений (bias).

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

Управление рисками – оптимальное распределение капитала, «размер ставки»/ критерий Келли и психология торговли.

Начнем с того, что посмотрим как происходит идентификация торговой стратегии.

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

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

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

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

Вот небольшой список, с которого можно начать искать идеи для стратегии:

— Social Science Research Network – www.ssrn.com

— arXiv Quantitative Finance – arxiv.org/archive/q-fin

— Seeking Alpha – www.seekingalpha.com

— Elite Trader – www.elitetrader.com

— Nuclear Phynance – www.nuclearphynance.com

— Quantivity – quantivity.wordpress.com

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

Другим чрезвычайно важным аспектом количественной торговли является частота торговой стратегии. К низкочастотной торговле (Low frequency trading, LFT), как правило, относится любая стратегия, которая держит активы дольше, одного операционного дня. Соответственно, к высокочастотной торговле (high frequency trading, HFT) – стратегии, которые держат активы в пределах операционного дня. К сверх-высокочастотной торговле (Ultra-high frequency trading, UHFT) относятся стратегии, которые держат активы несколько секунд или миллисекунд. Для розничной торговли, конечно, можно использовать HFT и UHFT, но только с доскональным знанием торгового «стека технологий» и динамики книги заявок. Мы не будем подробно обсуждать эти аспекты в вводной статье.

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

Бэктестирование стратегии

Цель бэктестирования состоит в представлении свидетельств того, что стратегия, выбранная согласно вышеописанному процессу, выгодна при использовании как исторических, так и проверочных данных. Это поможет узнать предполагаемое поведение стратегии в «реальном мире». Однако бэктестирование по различным причинам не является гарантией успеха. Это, возможно, самая тонкая область количественной торговли, поскольку влечет за собой многочисленные ошибки, которые нужно тщательно рассмотреть и по максимуму устранить. Мы рассмотрим общие типы ошибок, включая предварительные ошибки, систематические ошибки выжившего (survivorship bias) и ошибки оптимизации (optimisation bias). Другие важные области бэктестирования включают в себя доступность и точность исторических данных, факторинг при реальных операционных издержках и решение выбрать здравую платформу бэктестирования. Мы обсудим операционные издержки далее в разделе «Система исполнения».

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

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

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

— Систематические ошибки выжившего часто являются «особенностью» открытых или дешевых массивов данных. Массив данных с систематическими ошибками выжившего означает, что он не содержит активы, которые больше не торгуются. В случае акций это акции, снятые с котировки на бирже/ акции обанкротившихся предприятий. Эта ошибка означает, что любая стратегия торговли акциями при проверке на таком массиве данных, вероятно, покажет лучшие результаты, чем они есть на самом деле, поскольку исторические «победители» были уже предварительно отобраны.

— Корпоративные действия включают в себя «логистические» действия, выполняемые компанией и обычно вызывающие скачкообразное изменение в сырой цене, которая не должна быть включена в вычисление изменений цены. Поправка на дивиденды и дробление акций – типичные виновники. Необходимо, чтобы процесс, известный как «обратная поправка», выполнялся при каждом из этих действий. Нужно быть очень внимательным и не путать дробление акций с настоящим изменением цены. Многие трейдеры попадались на корпоративные действия!

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

Когда выполнено бэктестирование, система должна быть в состоянии измерить качество получаемых результатов. Система показателей «отраслевого стандарта» для количественных стратегий – это максимальная просадка и коэффициент Шарпа. Максимальная просадка характеризует самый большой спад от верхней до нижней точки отчетной кривой эквити за определенный период времени (обычно год). Чаще всего он измеряется в процентах. Стратегии LFT имеют тенденцию к большей просадке, чем стратегии HFT, из-за многих статистических факторов. Бэктестирование по историческим данным покажет предыдущую максимальную просадку, что поможет в получении информации о будущей просадке стратегии. Второй показатель – коэффициент Шарпа, он логически определен как среднее превышения доходности, разделенное на стандартное отклонение этого превышения доходности. Здесь превышение доходности относится к прибыли от стратегии выше предопределенного бэнчмарка, такого как S&P 500 или 3-месячный казначейский вексель. Заметьте, что пересчитанная на год прибыль обычно не используется в качестве показателя, поскольку она не принимает во внимание волатильность стратегии (в отличие от коэффициента Шарпа).

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

Системы исполнения

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

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

Есть много способов взаимодействовать с брокерами: от звонка брокеру по телефону до полностью автоматизированного высокоскоростного API (интерфейса программирования приложения, Application Programming Interface). В идеале лучше как можно больше автоматизировать заключение сделок. Это освободит вас для концентрации на исследовательской работе, а также позволит управлять многочисленными стратегиями или даже стратегиями более высокой частоты (фактически, HFT совершенно невозможен без автоматизированного выполнения). Общее программное обеспечение для бэктестирования, обрисованное выше в общих чертах, такое как MATLAB, Excel и Tradestation, хорошо для низкой частоты и для простых стратегий. Однако чтобы торговать с любым реальным HFT, будет необходимо создать внутреннюю систему исполнения, написанную на высокоэффективном языке, таком как C ++. В качестве примера из жизни – в фонде, где я раньше работал, у нас была 10-минутная «торговая петля», куда мы загружали новые данные о рынке каждые 10 минут, а затем заключали сделки, основанные на этой информации. Был использован скрипт на Python. Для данных с минутной или секундной частотой, я считаю, что C/C ++ был бы более подходящим.

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

Другой важной проблемой, которая относится к системе исполнения, является проблема минимизации операционных издержек. Есть, как правило, три компонента операционных издержек: комиссии (или сборы), которые являются сборами, взысканными брокерами, биржей и Комиссией по ценным бумагам и биржам США (Securities and Exchange Commission, SEC) (или подобным правительственным регулятивным органом); проскальзывание, которое является разницей между тем, как вы собирались заполнить заявку, и тем, как она была фактически заполнена; спрэд, который является разницей между ценой покупки/продажи, по которым торгуется ценная бумага. Заметьте, что спрэд не является постоянным и зависит от текущей ликвидности (то есть доступности заявок покупки/продажи) на рынке.

Операционные издержки могут играть решающую роль между чрезвычайно выгодной стратегией с хорошим коэффициентом Шарпа и чрезвычайно нерентабельной стратегией с ужасным коэффициентом Шарпа. Может оказаться сложным правильно спрогнозировать операционные издержки на этапе бэктестирования. В зависимости от частоты стратегии вам будет нужен доступ к историческим биржевым данным, которые включают данные о тиках для цен покупки/продажи. По этим причинам в крупных фондах все команды количественных трейдеров вовлечены в оптимизацию исполнения. Рассмотрим сценарий, где фонд должен выгрузить существенное количества ордеров (причин так поступать много и все они разнообразны). «Вываливая» столько акций на рынок, они быстро снижают их стоимость, и могут не получить оптимального исполнения. Поэтому существуют алгоритмы, которые «капельно вливают» заявки на рынок, хотя в этом случае фонд рискует проскальзыванием. В дополнение к этому, другие стратегии «охотятся» на эти потребности и могут использовать неэффективность. Это сфера арбитража структуры фонда (fund structure arbitrage).

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

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

Заключительная часть количественной торговли – процесс управления рисками. «Риск» включает в себя все предыдущие ошибки, которые мы обсудили. Он включает технологический риск, например, когда у серверов, размещенных у биржи, внезапно случается сбой жесткого диска. Он включает брокерский риск, когда брокер становится банкротом (это не такое уж безумие, как может показаться, учитывая недавнюю панику с MF Global). Словом, он покрывает почти все, что может повлиять на осуществление торговли, и у чего есть много источников. Целые книги посвящены управлению рисками количественных стратегий, так что я не буду пытаться описать здесь всех возможные источники риска.

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

Другой ключевой компонент управления рисками относится к собственному психологическому профилю. Существует много когнитивных искажений, которые могут пробраться в торговлю. Хотя общеизвестно, что для алгоритмической торговли будет лучше, если оставить стратегию в покое! Общая ошибка – «неприятие потери», когда не закрывается проигрышная позиция из-за огорчения, связанного с осознанием потери. Аналогичным образом прибыль берется слишком рано, потому что может быть слишком большим страх перед потерей уже полученной прибыли. Другая общая ошибка известна как «эффект недавнего». Она возникает, когда трейдеры оценивают значение недавних событий выше, чем более ранних событий. И, конечно, классическая пара эмоциональных ошибок – страх и жадность. Они могут часто приводить к недо- или пере-инвестированию, что может стать причиной коллапса (то есть отчетная кивая эквити падает до нуля, или еще хуже – уходит в минус) или причиной уменьшения прибыли.

Резюме

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

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

Автор: Michael Halls-Moore

Источник:

Beginner’s guide to quantitative trading

Другие статьи по теме:

Торговые идеи и системы: будьте проще, не надо умничать

Самое важное в алгоритмической торговле: процедуры избежания ошибок

Сам себе квант: алгоритмическая торговля становится доступной для индивидуальных инвесторов

Комментарии:

Kent: «Если вы хотите попытаться создать собственные алгоритмические торговые стратегии, мой первый совет – станьте хорошим программистом.»
Думаю это неправильно.
Правильный совет такой.
1. Если вы хотите попытаться создать собственные алгоритмические торговые стратегии, мой первый совет – создавайте стратегии на реальных логичных закономерностях.
2. Определитесь вы хотите стать программером или создавать стратегии.
Если создавать стратегии, то изучайте рынок и создавайте стратегии. Программирование, математика и прочее всего лишь инструменты и это все вторично. Главное — рынок и стратегии.

Vitas: про модификацию ядра юникс и программирование на ассемблере особенно умиляет.


Подпишитесь на уведомления о новых постах

И получите доступ к специальным материалам сайта