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

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


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

Содержание

Часть II. Торговые системы

Глава 3. Успешное тестирование

Тестирование алгоритмов требует знаний во многих областях, включая психологию, математику, статистику, разработку программного обеспечения и микроструктуру рынка / биржи. Я не мог надеяться охватить все эти темы в одной главе, поэтому я собираюсь разделить их на две или три части поменьше. Что мы будем обсуждать в этом разделе? Я начну с определения бэктестинга, а затем опишу основы его проведения. Затем я расскажу о предубеждениях, которые мы затронули в предыдущих главах.

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

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

3.1 Зачем нужны стратегии обратного тестирования?

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

Каковы основные причины для тестирования алгоритмической стратегии?

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

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

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

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

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

К сожалению, обратное тестирование чревато предубеждениями всех типов, и сейчас мы подробно обсудим их.

3.2 Ошибки при тестировании

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

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

3.2.1 Смещение оптимизации

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

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

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

3.2.2 Предвзятое отношение

Предвзятость при прогнозировании вводится в систему ретроспективного тестирования, когда будущие данные случайно включаются в тот момент моделирования, когда эти данные фактически не были бы доступны. Если мы проводим ретроспективный тест в хронологическом порядке и достигаем точки времени N, то смещение прогноза возникает, если данные включены для любой точки N + k, где k> 0. Ошибки смещения прогноза могут быть невероятно малозаметными. Вот три примера того, как можно внедрить предвзятое отношение к будущему:

Технические ошибки - Массивы / векторы в коде часто имеют итераторы или индексные переменные. Неправильные наборы o этих индексов могут привести к предвзятому прогнозу, если включить данные при N + k для ненулевого k.

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

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

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

3.2.3 Предвзятость выживших

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

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

Есть два основных способа уменьшить предвзятость в отношении выживаемости при тестировании вашей стратегии:

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

Используйте более свежие данные - В случае с акциями использование более свежих данных снижает вероятность того, что выбранный набор акций будет отнесен к "выжившим", просто потому, что существует меньшая вероятность полного исключения акций из списка за более короткие периоды времени. Можно также начать создавать личный набор данных без предвзятости, собирая данные с текущего момента и далее. Через 3-4 года у вас будет надежный набор данных об акциях без искажений, позволяющий тестировать дальнейшие стратегии.

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

3.2.4 Когнитивная предвзятость

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

Если исторические просадки на 25% или более происходят в тестах, то, по всей вероятности, вы увидите периоды аналогичной просадки в реальной торговле. Эти периоды просадки психологически трудно выдержать. Я лично наблюдал, на что может быть похожа длительная просадка в институциональных условиях, и это неприятно, даже если бэктесты предполагают, что такие периоды будут иметь место.

3.3 Биржевые вопросы

3.3.1 Типы ордеров

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

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

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

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

3.3.2 Консолидация цен

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

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

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

3.3.3 Торговля на рынке Форекс и ECN

Тестирование стратегий обмена иностранной валюты несколько сложнее в реализации, чем стратегии акционерного капитала. Торговля на Форекс происходит через несколько площадок и электронных коммуникационных сетей (ECN). Цены bid / ask, достигнутые на одной площадке, могут существенно отличаться от цен на другой площадке.

Еще одна особенность валютных рынков заключается в том, что сами брокеры не обязаны делиться ценами / размерами сделок с каждым участником торгов, поскольку это их частная информация[6]. Таким образом, более уместно использовать котировки bid-ask в своих тестах и быть предельно осторожным с изменением транзакционных издержек между брокерами / площадками.

3.3.4 Ограничения короткого замыкания

При проведении коротких сделок в ходе бэктеста необходимо учитывать, что некоторые акции, возможно, были недоступны (из-за отсутствия свободных средств в этих акциях для заимствования) или из-за рыночных ограничений, таких как запрет SEC США на короткие позиции по финансовым акциям во время рыночного кризиса 2008 года.

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

3.4 Транзакционные издержки

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

3.4.1 Комиссия

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

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

3.4.2 Проскальзывание

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

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

3.4.3 Влияние на рынок

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

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

3.5 Бэктестинг против Реальности

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

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

Глава 4. Автоматическое исполнение

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

4.1 Платформы для тестирования

Программный ландшафт для тестирования стратегий огромен. Решения варьируются от полностью интегрированного сложного программного обеспечения институционального уровня до таких языков программирования, как C ++, Python и R, где почти все должно быть написано с нуля (или получены подходящие ’плагины’). Как опытные трейдеры, мы заинтересованы в балансе между возможностью "владеть" нашим стеком торговых технологий и скоростью и надежностью нашей методологии разработки. Вот основные соображения при выборе программного обеспечения:

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

Возможность исполнения / взаимодействие с брокером - Определенное программное обеспечение для тестирования, такое как Tradestation, напрямую связано с брокером. Я не поклонник этого подхода, поскольку снижение транзакционных издержек часто является важным компонентом получения более высокого коэффициента Шарпа. Если вы привязаны к определенному брокеру (и Tradestation "заставляет" вас это делать), то вам будет сложнее перейти на новое программное обеспечение (или нового брокера), если возникнет такая необходимость.

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

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

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

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

Скорость выполнения - Если ваша стратегия полностью зависит от своевременности выполнения (как в HFT / UHFT), тогда потребуется такой язык, как C или C ++. Однако вы столкнетесь с оптимизацией ядра Linux и использованием FPGA для этих областей, что выходит за рамки книги.

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

Различные стратегии потребуют различных программных пакетов. Стратегии HFT и UHFT будут написаны на C / C ++. В наши дни такие стратегии часто реализуются на графических процессорах и ПЛИС. И наоборот, низкочастотные стратегии направленного акционерного капитала легко реализовать в TradeStation из-за "все в одном" характера программного обеспечения / брокерской деятельности.

4.1.1 Программирование

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

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

4.1.2 Инструменты исследования

В первую очередь обычно рассматривается более простая форма инструмента тестирования, инструмент исследования. Инструмент исследования используется для быстрого определения того, может ли стратегия иметь какую-либо эффективность. Такие инструменты часто делают нереалистичные предположения о транзакционных издержках, вероятных ценах ll, ограничениях на короткие позиции, зависимости от места проведения, управлении рисками и множестве других вопросов, которые были изложены в предыдущей главе. Распространенные инструменты для исследований включают MATLAB, R, Python и Excel.

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

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

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

4.1.3 Тестирование на основе событий

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

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

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

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

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

4.1.4 Задержка

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

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

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

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

Предыдущая часть

#algofoxtelegram

Report Page