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

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

AlgoFox

4.1.4 Задержка

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

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

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

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

4.1.5 Выбор языка

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

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

C ++, C # и Java

C ++, C # и Java являются примерами объектно-ориентированных языков программирования общего назначения. То есть, они могут использоваться без соответствующей IDE, являются кроссплатформенными (могут быть запущены на Windows, Mac OSX или Linux), имеют широкий спектр библиотек практически для любой мыслимой задачи и обладают высокой скоростью выполнения.

Если требуется максимальная скорость выполнения, то C ++ (или C), вероятно, будет лучшим выбором. Он обеспечивает максимальную гибкость в управлении памятью и оптимизации скорости выполнения. За такую гибкость приходится платить. Общеизвестно, что C ++ сложно выучить, и он часто может приводить к незначительным ошибкам. Время разработки может занять гораздо больше времени, чем на других языках.

C # и Java похожи тем, что оба требуют, чтобы все компоненты были объектами, за исключением примитивных типов данных, таких как oats и целые числа. Они отличаются от C ++ тем, что оба выполняют автоматическую сборку мусора. Это означает, что память не нужно выделять вручную при уничтожении объекта. Сборка мусора увеличивает накладные расходы на производительность, но значительно ускоряет разработку. Оба эти языка являются хорошим выбором для разработки бэктестера, поскольку они имеют встроенные возможности графического интерфейса, библиотеки численного анализа и высокую скорость выполнения.

Лично я бы использовал C ++ для создания управляемого событиями бэктестера, который требует чрезвычайно высокой скорости выполнения, например, для HFT. Это только в том случае, если я чувствую, что система, управляемая событиями Python, становится узким местом, поскольку последний язык был бы моим первым выбором для такой системы.

MATLAB, R и Python

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

Интерактивные брокеры.

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

Я сгруппировал Python под этим заголовком, хотя он находится где-то между MATLAB, R и вышеупомянутыми языками общего назначения. Он бесплатный, с открытым исходным кодом и кроссплатформенный. Он интерпретируется в отличие от скомпилированного, что делает его изначально медленнее, чем C ++. Несмотря на это, он содержит библиотеку для выполнения практически любой мыслимой задачи, от научных вычислений до низкоуровневого проектирования веб-серверов.

Кроме того, он имеет зрелые библиотеки для подключения к брокерским компаниям. Это делает его "универсальным магазином" для создания среды тестирования на основе событий и выполнения в реальном времени без необходимости перехода на другие языки. Скорость исполнения более чем достаточна для внутридневных трейдеров, торгующих в минутном масштабе времени. Наконец, его очень просто освоить и изучить по сравнению с языками более низкого уровня, такими как C ++. По этим причинам мы широко используем Python в этой книге.

4.1.6 Интегрированные среды разработки

Термин IDE имеет несколько значений в алгоритмической торговле. Разработчики программного обеспечения используют его для обозначения графического интерфейса, который позволяет программировать с подсветкой синтаксиса, просмотром файлов, отладкой и функциями выполнения кода. Алгоритмические трейдеры используют его для обозначения полностью интегрированной среды тестирования / торговли, включая загрузку исторических данных или данных в реальном времени, построение графиков, статистическую оценку и исполнение в реальном времени. Для наших целей я использую этот термин для обозначения любой среды (часто основанной на графическом интерфейсе), которая не является языком программирования общего назначения, таким как C ++ или Python. Например, MATLAB считается IDE.

Excel

В то время как некоторые более чистые кванты могут смотреть на Excel свысока, я обнаружил, что он чрезвычайно полезен для "проверки работоспособности" результатов. Тот факт, что все данные доступны напрямую, а не скрыты за объектами, упрощает реализацию самых простых стратегий обработки сигналов / фильтров. Брокерские компании, такие как Interactive Brokers, также поддерживают плагины DDE, которые позволяют Excel получать рыночные данные в режиме реального времени и выполнять торговые ордера.

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

Если вам неудобно с языками программирования и вы выполняете стратегию в течение дня, то Excel может быть идеальным выбором.

Программное обеспечение для коммерческого / розничного тестирования

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

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

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

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

Веб-инструменты

Две популярные в настоящее время веб-системы обратного тестирования - Quantopian (https://www.quantopian.com /) и QuantConnect (https://www.quantconnect.com /). В первом используется Python (и ZipLine, см. Ниже), в то время как во втором используется C #. Оба предоставляют множество исторических данных. В настоящее время Quantopian поддерживает торговлю в реальном времени с помощью интерактивных брокеров, в то время как QuantConnect работает над торговлей в реальном времени.

Программное обеспечение для тестирования с открытым исходным кодом

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

Algo-Trader - швейцарская фирма, предлагающая как открытый исходный код, так и коммерческую лицензию для своей системы. Из того, что я могу собрать, предложение кажется довольно зрелым, и у них много институциональных клиентов. Система позволяет проводить полное историческое тестирование и сложную обработку событий, и они связаны с интерактивными брокерами. Enterprise edition предлагает значительно больше высокопроизводительных функций.

Marketcetera предоставляет систему тестирования, которая может подключаться ко многим другим языкам, таким как Python и R, чтобы использовать код, который вы, возможно, уже написали. ’Strategy Studio’ предоставляет возможность написания кода для тестирования, а также оптимизированных алгоритмов выполнения и последующего перехода от исторического тестирования к торговле на бумаге.

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

Есть также несколько проектов, размещенных на Github / Google Code, которые вы, возможно, захотите изучить. Я не потратил много времени на их изучение. К таким проектам относятся OpenQuant (http://code.google.com/p/openquant /), Торговая ссылка (https://code.google.com/p/tradelink /) и ПяЛьгоТрейд (http://gbeced.github.io/pyalgotrade /).

Институциональное программное обеспечение для тестирования

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

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

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

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

4.2 Размещение

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

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

4.2.1 Домашний рабочий стол

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

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

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

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

4.2.2 VPS

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

Распространенными поставщиками VPS являются Amazon EC2 и Rackspace Cloud. Они обеспечивают системы начального уровня с низким объемом оперативной памяти и базовым использованием ЦП, вплоть до готовых к работе серверов с высоким объемом оперативной памяти и ЦП. Для большинства алгоритмических розничных трейдеров системы начального уровня подходят для низкочастотных внутридневных или междневных стратегий и небольших баз исторических данных.

Преимущества системы на базе VPS включают доступность в режиме 24/7 (с определенным реальным временем простоя!), Более надежные возможности мониторинга, простые "плагины" для дополнительных сервисов, таких как хранилище файлов или управляемые базы данных, а также гибкую архитектуру. К недостаткам относятся расходы по мере роста системы, поскольку выделенное оборудование становится намного дешевле в зависимости от производительности, предполагая размещение вдали от биржи, а также обработку сценариев сбоев (например, путем создания второго идентичного VPS, например).

Кроме того, задержка не всегда улучшается при выборе поставщика услуг VPS / cloud. Ваше домашнее местоположение может быть ближе к конкретной финансовой бирже, чем центры обработки данных вашего облачного провайдера. Это несколько смягчается выбором фирмы, предоставляющей VPS, специально предназначенные для алгоритмической торговли, которые расположены на биржах или рядом с ними, однако они, вероятно, будут стоить дороже, чем "традиционные" поставщики VPS, такие как Amazon или Rackspace.

4.2.3 Обмен

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

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

#algofoxtelegram

Report Page