Vinik
2
All posts from Vinik
  Vinik in Vinik,

Как делаются торговые системы. Часть 4.



Учет некоторых специфических рисков

(примечание: некоторые фрагменты текста не являются точным переводом, а адаптированы для понимания с учетом произошедших за эти 10 лет изменений.)

Многие системные трейдеры стремятся использовать свой подход на нескольких рынках: от 2-3 до 40, 50 или даже больше. В таком случае нужно учитывать их корреляцию. При создании прибыльной и устойчивой торговой системы жизненно важно использовать рынки, которые не связаны тесно друг с другом. К примеру, все валютные пары с участием доллара высоко коррелированны, в отличие от, скажем, валютной пары доллар/швейцарский франк и цен на пшеницу. Точно так же в эпоху глобализации большинство рынков акций имеют явную положительную корреляцию. Торговля на высоко коррелированных рынках – это то же самое, что торговать много контрактов на одном рынке. Ключом для торговли по-настоящему диверсифицированного портфеля рынков является их относительно низкая корреляция.

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

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

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

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

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

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

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

Вот еще одна ситуация к примеру: в течение длительного времени основным ликвидным рынком для актива может быть LIFFE, однако потом торговля может «перетечь» на  EUREX. Для системного трейдера очередная головная боль – какие именно данные использовать для исторического тестирования, с LIFFE или с EUREX, или же производить их «сшивку», и если да, то по какому критерию выбирать дату переноса торговли с одной торговой площадки на другую. Выбор исходных данных для тестирования может нести в себе значительный риск для системного трейдера, о котором он часто и не подозревает.

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

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

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

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

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

Я не могу подобрать выражений для подчеркивания той огромной важности, которую играет качество исходных ценовых данных для разработки торговых систем. Вы должны обеспечить максимально высокое качество исходных данных, в противном случае вы будете строить торговую систему на бесполезных данных. Запомните, что для создания всех торговых систем верно правило «мусор на входе, мусор на выходе». Результаты тестирования на плохих данных могут быть не просто бесполезными – они могут быть опасными.

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

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

Каждый из трех основных подходов к обработке периодов роллирования имеет свои преимущества и недостатки:

Использование только реальных данных без «склейки» даст вам большое количество краткосрочных фрагментов цен. К примеру, 10 летняя история актива может распасться на 40 кусочков по 3 месяца каждый. Если тестировать систему на каждом таком фрагменте изолировано, то потом, в реальной работе вы обязательно столкнетесь с ситуацией, когда тренд, уносящий вашу позицию вверх, натыкается на роллирование. Таким бразом, вам надо или разрабатывать технологию роллирования (и получения сигнала на выход на истории, где не было входа) или вторую систему, которая заново заходит в направлении тренда на истории нового фронт-контракта.

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

Не удивительно, что стремление решить эту проблему привело к созданию метода склейки контрактов в непрерывную историю с использованием корректировки цен. Существует несколько методологических подходов по такой склейке данных. Один из них изложен в книге Chande «In Beyond Technical Analysis».

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

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

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

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

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