Успешная алгоритмическая торговля ч.1

Успешная алгоритмическая торговля ч.1

AlgoFox

Автоматический перевод книги

Содержание

Часть I. Знакомство с алгоритмической торговлей

Глава 1. Введение в книгу

1.1 Введение в QuantStart

Компания QuantStart была основана Майклом Холлс-Муром в 2010 году, чтобы помочь младшим количественным аналитикам (QA) найти работу в сложных экономических условиях. С тех пор сайт превратился в существенный ресурс для количественного финансирования. В настоящее время сайт посвящен алгоритмической торговле, но также обсуждает количественную разработку как на Python, так и на C ++.

С марта 2010 года QuantStart помог более чем 200 000 посетителям улучшить свои навыки количественного финансирования. Вы всегда можете связаться с QuantStart, отправив электронное письмо по адресу mike@quantstart.com .

1.2 Что это за Книга?

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

1.3 Для кого предназначена эта книга?

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

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

1.4 Каковы предварительные условия?

Книга относительно самостоятельная, но предполагает знакомство с основами торговли в дискреционных условиях. Книга не требует обширных знаний в области программирования, но предполагается базовое знакомство с языком программирования. Вы должны быть осведомлены об элементарных концепциях программирования, таких как объявление переменных, управление потоком (if-else) и цикл (for / while).

Некоторые торговые стратегии используют статистические методы машинного обучения. Кроме того, в разделах оптимизации портфеля / стратегии широко используются алгоритмы поиска и оптимизации. Хотя глубокое понимание математики не является абсолютно необходимым, это позволит легко понять, как эти алгоритмы работают на концептуальном уровне.

If you are rusty on this material, or it is new to you, have a look at the QuantStart reading list.

1.5 Требования к программному/аппаратному оборудованию

Приложения для торговли на Python можно использовать в Windows, Mac OSX или Linux. Эта книга не зависит от использования системы, поэтому лучше подходит для вашей системы. Однако я рекомендую Mac OSX или Linux (обычно Ubuntu), поэтому считаю, что установка и управление данными намного проще.

Чтобы писать на Python, вам просто нужны программы к текстовому редактору (желательно с подсветкой синтаксиса). В Windows я обычно использую Notepad++. В Mac OSX я использую SublimeText. В Ubuntu я обычно использую emacs, но, конечно, вы можете использовать и vim.

Код в этой книге будет работать как с Python версии 2.7.x (в частности, с 2.7.6 на моей машине с Ubuntu 14.04), так и с Python 3.4.x (в частности, с 3.4.0 на моей машине с Ubuntu 14.04).

Что касается аппаратного обеспечения, вам, вероятности, как минимум 1 ГБ ОЗУ, но всегда лучше больше. Вы также нуждаетесь в относительно новом процессоре и достаточном месте на жестком диске для хранения данных, в зависимости от частоты, с которой вы предлагаете торговать. Жесткого диска на 200 ГБ должно быть получено для потребляемого объема данных, а 1 ТБ будет достаточно для широкого набора символов тиковых данных.

1.6 Структура книги

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

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

Разработка торговой системы. О начале разработки алгоритма торговой системы, отнесенной к реальной и стабильной оценке.

Дизайн торговой системы. Исключены естественные компоненты, образующие алгоритмическую торговую систему. В частности, генерация сигналов, управление рисками, измерение производительности, размер позиции/кредитное плечо, оптимизация портфеля и исполнение.

Среда торговой системы. Выполняется процедура установки программного обеспечения Python, и исторические данные получаются, очищаются и фиксируются в базе данных.

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

Оптимизация. Обсуждаются применения алгоритмов расчета/поиска и исследования их приложений для стратегии.

Измерение производительности - результаты реализации для различных результатов / вознаграждения и других результатов.

Управление рисками — выявление различных источников риска, влияющих на алгоритмическую торговую систему, и проявляющих свойства этого риска.

Реализация торговой стратегии.

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

1.7 О чем не говорится в Книге

Это не книга для начинающих по дискреционной торговле и не книга, наполненная торговыми стратегиями технического анализа. Если вы не занимались какой-либо торговлей (по собственному усмотрению или иным образом), я бы посоветовал прочитать некоторые книги из списка чтения QuantStart.

Это также не учебник по Python, хотя, опять же, можно ознакомиться со списком чтения QuantStart. Хотя были предприняты все усилия, чтобы представить код Python, поскольку каждый пример этого требует, определенное знакомство с Python будет чрезвычайно полезным.

1.8 Где получить помощь

The best place to look for help is the articles list on QuantStart.com, found at QuantStart.com/articles или связавшись со мной по адресу mike@quantstart.com . Я написал более 140 статей о количественных финансах (и, в частности, об алгоритмической торговле), так что вы можете освежить их в памяти, прочитав некоторые из них.

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

Глава 2

Что такое алгоритмическая торговля?

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

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

2.1 Обзор

Алгоритмическая торговля существенно отличается от дискреционной торговли. В этом разделе будут описаны преимущества и недостатки системного подхода.

2.1.1 Преимущества

Алгоритмическая торговля обладает многочисленными преимуществами по сравнению с дискреционными методами.

Историческая оценка

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

Эффективность

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

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

Никакого дискреционного ввода

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

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

Сравнение

Систематические стратегии предоставляют статистическую информацию как об исторических, так и о текущих показателях. В частности, можно определить рост собственного капитала, риск (в различных формах), частоту торгов и множество других показателей. Это позволяет сравнивать различные стратегии "яблоки к яблокам", чтобы капитал мог быть распределен оптимально. Это в отличие от случая, когда информация о прибылях и убытках (P & L) отслеживается на усмотрение пользователя, поскольку она маскирует потенциальный риск просадки.

Более высокие частоты

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

2.1.2 Недостатки

Несмотря на многочисленные преимущества алгоритмической торговли, есть и некоторые недостатки.

Требования к капиталу

Алгоритмическая торговля обычно требует гораздо большей базы капитала, чем было бы использовано для розничной дискреционной торговли, это просто связано с тем, что есть несколько брокеров, которые поддерживают автоматическое исполнение сделок, которые также не требуют больших минимальных счетов. Наиболее прибыльным брокером в автоматизированном торговом пространстве являются интерактивные брокеры, которым требуется баланс счета в размере 10 000 долларов. Ситуация постепенно меняется, тем более что другие брокерские компании разрешают прямое подключение по протоколу FIX.

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

Программирование / Научная экспертиза

Хотя существуют определенные платформы систематической торговли, такие как Quantopian, QuantConnect и TradeStation, которые облегчают большую часть трудностей программирования, некоторые из них (на момент написания статьи) еще не поддерживают живое исполнение. Очевидно, что TradeStation в этом случае является исключением. Таким образом, алгоритмический трейдер должен быть относительно успешным как в программировании, так и в научном моделировании.

Я попытался продемонстрировать широкий спектр стратегий, основы которых почти всегда основаны на простой для понимания манере. Однако, если вы обладаете навыками численного моделирования, вам, вероятно, будет легче использовать методы статистических временных рядов, представленные в разделе "Моделирование". Большинство продемонстрированных методов уже реализованы во внешних библиотеках Python, что позволяет нам сэкономить значительный объем работы по разработке.

2.2 Научный метод

Разработка торговых стратегий в этой книге основана исключительно на принципах научного метода. Процесс научного метода начинается с формулировки вопроса, основанного на наблюдениях. В контексте торговли примером может быть "Существует ли взаимосвязь между SPDR Gold Shares ETF (GLD) и Market Vectors Gold Miners ETF (GDX)?". Это позволяет сформировать гипотезу, которая может объяснить наблюдаемое поведение. В этом случае гипотеза может звучать так: "Имеет ли спред между GLD и GDX поведение возврата к среднему значению?".

После формулирования гипотезы ученый должен опровергнуть нулевую гипотезу и продемонстрировать, что действительно существует поведение возврата к среднему. Чтобы осуществить это, необходимо определить прогноз. Возвращаясь к примеру GLD-GDX, прогноз состоит в том, что временные ряды, представляющие разброс двух ETF, являются стационарными. Чтобы доказать или опровергнуть гипотезу, прогноз подлежит проверке.

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

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

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

В этой книге все торговые стратегии будут разработаны с использованием подхода наблюдения-гипотезы.

2.3 Почему Python?

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

Вот причины, по которым я выбрал Python в качестве языка для исследования и внедрения торговых систем:

Обучение - Python чрезвычайно прост в освоении по сравнению с другими языками, такими как C ++.

Вы можете быть чрезвычайно продуктивным в Python всего через несколько недель (некоторые говорят, дней!) Использования.

Библиотеки - Основная причина использования Python заключается в том, что он поставляется с огромным набором библиотек, которые значительно сокращают время реализации и вероятность появления ошибок в нашем коде. В частности, мы будем использовать NumPy (векторизованные операции), SciPy (алгоритмы оптимизации), pandas (анализ временных рядов), statsmodel (статистическое моделирование), scikit-learn (статистическое / машинное обучение), IPython (интерактивная разработка) и matplotlib (визуализация).

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

Скорость выполнения - Хотя и не такая быстрая, как C ++, Python предоставляет научные вычислительные компоненты, которые сильно оптимизированы (с помощью векторизации). Если скорость выполнения становится проблемой, можно использовать Cython и получить скорость выполнения, аналогичную C, для небольшого увеличения сложности кода.

Для крупных брокеров, таких как Interactive Brokers (IBypy), существуют плагины для выполнения сделок на Python. Кроме того, Python может легко использовать протокол FIX там, где это необходимо.

Стоимость / Лицензия - Python является бесплатным, с открытым исходным кодом и кроссплатформенным. Она будет успешно работать на Windows, Mac OSX или Linux.

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

2.4 Могут ли розничные трейдеры по-прежнему конкурировать?

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

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

2.4.1 Торговые преимущества

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

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

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

Влияние на рынок - При игре на высоколиквидных внебиржевых рынках низкая капитальная база розничных счетов существенно снижает влияние на рынок.

Кредитное плечо - розничный трейдер, в зависимости от его юридического положения, ограничен правилами маржи / кредитного плеча. Частные инвестиционные фонды не страдают от такого же недостатка, хотя они в равной степени ограничены с точки зрения управления рисками.

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

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

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

Розничные алгоритмические трейдеры часто используют иной подход к управлению рисками, чем крупные количественные фонды. Часто бывает выгодно быть "маленьким и проворным" в контексте риска.

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

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

2.4.3 Отношения с инвесторами

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

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

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

Сравнение эталонных показателей - Фонды сравниваются не только со своими аналогами, но и с "отраслевыми эталонами". Например, для долгосрочного фонда акций США инвесторы захотят видеть доходность, превышающую S & P500. Розничные трейдеры не принуждаются таким же образом сравнивать свои стратегии с эталоном.

Плата за производительность - Недостатком управления собственным портфелем в качестве розничного трейдера является отсутствие платы за управление и производительность, которыми пользуются успешные фонды quant. На розничном уровне нет никаких "2 и 20"!

2.4.4 Технология

Одна из областей, в которой розничный трейдер имеет значительное преимущество, заключается в выборе технологического стека для торговой системы. Трейдер не только может выбрать "лучшие инструменты для работы", как он их видит, но и не беспокоится об интеграции устаревших систем или ИТ-политике всей фирмы. Новые языки, такие как Python или R, теперь содержат пакеты для построения сквозной системы тестирования, исполнения, управления рисками и портфелем с гораздо меньшим количеством строк кода (LOC), чем может потребоваться на более подробном языке, таком как C ++.

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

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

Следующая часть

#algofoxtelegram

Report Page