В первой статье мы обсудили статистические и поведенческие предрассудки, которые влияют на нашу производительность бэкстеста. Мы также обсудили программные пакеты для бэкстеста, включая Excel, MATLAB, Python, R и C ++. В этой статье мы рассмотрим, как включить затраты на транзакции, а также некоторые решения, которые необходимо принять при создании движка бэкстеста, такие как типы заказов и частота данных.
Одной из наиболее распространенных ошибок начинающих при реализации торговых моделей является пренебрежение (или грубая недооценка) влияния затрат на транзакции на стратегию.
Наиболее прямой формой затрат на транзакции, связанных с алгоритмической торговой стратегией, являются комиссии и сборы.
Брокеры, как правило, предоставляют множество услуг, хотя количественные алгоритмы действительно используют только инфраструктуру биржи. Следовательно, комиссионные за брокерство часто невелики на основе каждой сделки. Брокеры также взимают сборы, которые являются затратами, понесенными для очистки и урегулирования сделок. Кроме того, налоги, налагаемые региональными или национальными правительствами. Например, в Великобритании существует гербовый сбор за оплату сделок с акциями. Поскольку комиссии, сборы и налоги, как правило, фиксированы, их относительно легко реализовать в механизме бэкстеста (см. ниже).
Слипаж - это разница в цене, достигнутая между моментом, когда торговая система решает совершить транзакцию, и моментом, когда транзакция фактически выполняется на бирже. Слипаж является значительной составляющей затрат на транзакции и может сделать разницу между очень прибыльной стратегией и той, которая плохо работает. Слипаж является функцией волатильности основного актива, задержки между торговой системой и биржей и типа осуществляемой стратегии.
Инструмент с более высокой волатильностью с большей вероятностью будет двигаться, и поэтому цены между сигналом и исполнением могут существенно отличаться. Задержка определяется как разница во времени между генерацией сигнала и точкой исполнения. Стратегии с более высокой частотой более чувствительны к проблемам с задержкой, и улучшения миллисекунд на этой задержке могут иметь большое значение для прибыльности. Тип стратегии также важен. Системы импульса в среднем больше страдают от скольжения, потому что они пытаются приобрести инструменты, которые уже движутся в направлении прогноза.
Влияние рынка - это стоимость, понесенная трейдерами из-за динамики спроса и предложения биржи (и актива), через которую они пытаются торговать. Большой заказ на относительно неликвидный актив, вероятно, существенно изменит рынок, поскольку торгу необходимо будет получить доступ к большому компоненту текущего предложения.
Более неликвидные активы характеризуются большим спредом, который представляет собой разницу между текущими ценами на покупку и продажу в предельной книге ордеров. Этот спред представляет собой дополнительную стоимость транзакции, связанную с любой торговлей.
Для успешного моделирования вышеуказанных затрат в системе обратного тестирования были введены различные степени сложных моделей транзакций. Они варьируются от простого плоского моделирования до нелинейного квадратного приближения.
Плоские затраты на транзакции - это самая простая форма моделирования затрат на транзакции. Они предполагают фиксированную стоимость, связанную с каждой торговлей. Таким образом, они наилучшим образом представляют собой концепцию брокерских комиссий и комиссий. Они не очень точны для моделирования более сложного поведения, такого как скольжение или влияние на рынок. На самом деле, они вообще не учитывают волатильность или ликвидность активов. Их главное преимущество заключается в том, что их вычислительно легко реализовать. Тем не менее, они, вероятно, значительно уменьшат или превысят оценку затрат на транзакции в зависимости от используемой стратегии. Таким образом, они редко используются на практике.
Более продвинутые модели затрат на транзакции начинаются с линейных моделей, продолжаются с линейными моделями по частям и заканчиваются квадратными моделями. Они лежат на спектре от наименьшей до наиболее точной, хотя и с наименьшими усилиями по реализации. Поскольку скольжение и влияние рынка по своей сути нелинейны, квадратные функции являются наиболее точными при моделировании этой динамики.
Алгоритмические трейдеры также пытаются использовать фактические исторические затраты на транзакции для своих стратегий в качестве входных данных для их текущих моделей транзакций, чтобы сделать их более точными. Это сложный бизнес и часто граничит с сложными областями моделирования волатильности, скольжения и влияния на рынок. Однако, если торговая стратегия транзакции больших объемов в течение коротких периодов времени, то точные оценки понесенных затрат на транзакции могут оказать значительное влияние на стратегию и поэтому стоит приложить усилия для исследования этих моделей.
В то время как затраты на транзакции являются очень важным аспектом успешной реализации бэкстестинга, существует много других вопросов, которые могут повлиять на эффективность стратегии.
Один из выборов, который должен сделать алгоритмический трейдер, - это как и когда использовать различные доступные биржевые ордера. Этот выбор обычно относится к сфере системы исполнения, но мы рассмотрим его здесь, поскольку он может значительно повлиять на эффективность стратегии.
Рыночный заказ выполняет торговлю немедленно, независимо от доступных цен. Таким образом, крупные сделки, выполненные в качестве рыночных ордеров, часто получают смесь цен, поскольку каждый последующий лимитный заказ на противоположной стороне выполняется. Рыночные ордера считаются агрессивными ордерами, поскольку они почти наверняка будут выполнены, хотя и с потенциально неизвестной стоимостью.
Лимитные ордера обеспечивают механизм для стратегии определения наихудшей цены, по которой будет выполнена торговля, с оговоркой о том, что торговля может не быть выполнена частично или полностью. Лимитные ордера считаются пассивными ордерами, поскольку они часто не выполняются, но когда они являются ценой, цена гарантируется.
При обратном тестировании важно правильно моделировать эффекты использования рыночных или лимитных ордеров.
Существуют особые проблемы, связанные со стратегиями обратного тестирования при использовании ежедневных данных в форме показателей Open-High-Low-Close (OHLC), особенно для акций.
Дешевые или бесплатные наборы данных, хотя и страдают от предвзятости выживаемости (которую мы уже обсудили в части I), также часто представляют собой составные ценовые показатели с нескольких бирж. Это означает, что крайние точки (т.е. открытые, закрытые, высокие и низкие) данных очень восприимчивы к значениям
Это означает, что если ваша торговая стратегия широко использует любую из точек OHLC, производительность бэкстеста может отличаться от производительности в режиме реального времени, поскольку заказы могут быть направлены на разные биржи в зависимости от вашего брокера и вашего доступного доступа к ликвидности.
В следующих двух статьях мы рассмотрим измерение производительности бэкстеста, а также реальный пример алгоритма бэкстеста, включая многие из вышеперечисленных эффектов.