что значит склейка фьючерсного контракта
Что такое склейка фьючерсов
Таким термином принято называть склейку графиков фьючерсных контрактов. Дело в том, что фьючерсный контракт, по самой своей природе, имеет ограниченный срок обращения. Большинство популярных в среде трейдеров фьючерсных контрактов имеют срок обращения в три месяца. Это означает, что по прошествии трёх месяцев происходит так называемая экспирация контракта.
Изначально экспирация предполагала реальную поставку товара, но в наше время покупка фьючерсного контракта, например на зерно, не означает, что по его истечению вам выдадут мешок пшеницы (ну или 1000 мешков, в зависимости от размера контракта). Фактически на счёт трейдера просто перечисляется сумма равная стоимости контракта на момент экспирации, но это происходит лишь в том случае, если он не переходит на следующий контракт.
Трейдеры могут держать контракт довольно длительное время, просто продлевая его в моменты экспирации. Для проведения технического анализа (да и просто для визуальной оценки динамики стоимости фьючерсного контракта во времени), трейдеру требуется его ценовой график на больших таймфреймах. Как раз в этом случае и применяется склейка фьючерсов, то есть берётся график предыдущего фьючерсного контракта до момента его экспирации и к нему добавляется график следующего фьючерсного контракта с момента его открытия.
Склейка графиков по методу «стык в стык» в данном случае не является наилучшим вариантом, поскольку цена фьючерса склонна к таким явлениям как контанго и бэквордация. К тому же зачем вам эта рутина, если, как говорил герой одного из популярных советских фильмов: «Всё уже украдено до нас». Украдено, это конечно слегка не к месту, но сути дела не меняет. Все необходимые графики в склеенном виде уже существуют. Поэтому наилучшим вариантом будет использование информации с ресурсов, на которых отображаются уже склеенные графики фьючерсов.
Склеенный график фьючерса РТС с сайта mfd.ru
Среди таких ресурсов, например:
Вообще таких информационных сервисов достаточно много и если я кого-то пропустил, то можете дополнить этот список в комментариях.
Склееные фьючерсы
Статья будет полезна тем, кто уже тестирует или планирует тестировать торговые стратегии на фьючерсах.
В моей практике постоянно приходится сталкиваться с торговыми стратегиями на срочном рынке.
В каждом таком случае необходимо понимать, на каких данных тестировалась стратегия, как склеивались фьючерсы, если они склеивались.
Цена фьючерса зависит от следующих параметров: цены базового актива, процентной ставки и дней до экспирации.
N – объем фьючерсного контракта (количество акций),
r1 – процентная ставка на срок со дня заключения сделки по фьючерсному контракту до его исполнения;
div – размер дивидендов по базовой акции;
r2 – процентная ставка на срок со дня закрытия реестра акционеров («отсечки») до исполнения фьючерсного контракта.
Поэтому фьючерсы с разными датами экспирации торгуются c разными ценами, с премией или дисконтом к базовому активу.
Чем меньше дней до экспирации, тем меньше разница между базовым активом и фьючерсом.
Поэтому фьючерсы с разными датами экспирации торгуются с разным базисом к базовому активу.
У большинства фьючерсов на российском рынке всего 4 экспирации, и если вы торгуете без плечей, можно проигнорировать данный факт.
Кто же торгует на срочном рынке без плечей!? :)))))
А если рассмотреть фьючерс на нефть, то он экспирируется ежемесячно. В этом случае ошибка в тестировании фьючерсной стратегии будет давать знать о себе 12 раз в году. В чью пользу зависит от стратегии.
Но будьте уверены, в большинстве случаев не в вашу пользу.
Я выбрал 2 удобных способа хранения и использования исторических котировок фьючерсов.
Первый способ: раздельное хранение котировок отдельных фьючерсов
Долгое время я использовал простой подход, скачивал исторические данные за период с даты экспирации предыдущего фьючерса, до даты экспирации текущего фьючерса.
Таким образом, у меня в каждом файле находится история только по одному фьючерсу.
Исторические данные в каждом отдельном файле не пересекаются по датам с историческими котировками фьючерсов других серий.
Чем удобен такой способ:
— легко тестировать стратегии на отдельных сериях фьючерсов
— не надо думать о том, как склеивались фьючерсы
— тесты максимально близки к реальным торгам
— накапливается огромное количество файлов
— сложный код для стратегий, которые торгуют несколькими фьючерсами
— в wealth-lab`е не будет работать функция синхронизации позиций
— мало исторических данных, для стратегий использующих индикаторы с длинными периодами усреднения
Для удобной сортировки файлов рекомендую использовать формат имени файла в виде:
Второй способ: склейка с добавлением дополнительного поля
Этот способ пришлось «изобрести», когда понадобилось тестировать стратегию, торгующую корреляцию акций российских компаний с сырьевыми активами.
Во всех тестерах стало неудобно и лениво писать код, который бы в огромном количестве файлов находил правильный фьючерс, синхронизировал данные и корректно совершал сделки по двум инструментам.
Удобным решением оказалось склеить все исторические данные в один файл. Но вместо использования классических методик склейки фьючерсов, я добавил дополнительное поле «Expiration». Данное поле может принимать на ваше усмотрение любые значения.
Я записываю 0, либо 1.
«1» означает, что данный бар последний перед экспирацией.
В случае работы с Wealth-Lab`ом для работы с дополнительным полем есть специальная функция — FindNamedSeries.
Загружаем дополнительное поле в отдельную переменную:
MySeries = Bars.FindNamedSeries( «Expiration» );
Далее на каждом новом шаге цикла проверяем значение этого поля.
Если MySeries[bar] = 1, то закрываем позиции по стратегии, т.к. это последний торговый бар перед экспирацией.
Если ваша стратегия торгует 2мя инструментами, тогда загружаете значения в две переменные и на каждом шаге цикла значение поля в двух массивах.
Чем удобен такой способ:
— вам становится доступна функция wealth-lab`а для синхронизации котировок разных инструментов
— упрощается код стратегии
— увеличивается массив данных для индикаторов с большим периодом усреднения (хотя я считаю это плохим тоном в написании стратегий)
— упрощается работа с несколькими инструментами
Что значит склейка фьючерсного контракта
В этой статье я рассмотрю один из важных вопросов, который возникает при построении алгоритмических торговых стратегий на фьючерсах.
Во-первых, следует определиться с принципом выбора момента, когда мы переходим в следующий фьючерс. Если делать это слишком рано — следующий фьючерс может быть ещё не достаточно ликвиден. Ждать до самой экспирации тоже можно не всегда: если фьючерс предусматривает физическую поставку — брокер может попросить вас его закрыть за некоторое время до даты first notice, либо закрыть вас принудительно (тык, тык). Чтобы не было сюрпризов — всегда внимательно изучайте спецификацию торгуемых вами инструментов и условия вашего брокера, т.к. дата first notice может отстоять от даты экспирации аж на 30 дней. Также при больших объемах позиций следует оставлять запас времени для перекладывания их в новый контракт.
Перейдём к способам склеивания фьючерсных данных и рассмотрим, для чего они годятся.
Способ 1: Склеивание без поправок (это то, с чего я начал эту статью).
Для каждого контракта определяем период времени
, в течение которого мы хотим его торговать. При этом должно выполняться соотношение
. Выбираем данные (пусть это будут цены close) по каждому фьючерсу за этот период и просто записываем их друг за другом.
1) (+) Способ очень простой;
2) (+) Нет перерисовки истории по мере поступления новых данных;
3) (+) В построенной истории не будет отрицательных цен;
4) (-) Делать бэктесты по такой истории НЕЛЬЗЯ — гэпы будут искажать результаты;
5) (-) Считать сигналы по такой истории НЕЛЬЗЯ — они тоже будут испорчены гэпами;
6) (-) При расчёте некоторых типов сигналов нужно будет учитывать время до экспирации.
Способ 2: Склеивание с поправкой на разность фьючерсов в момент перехода.
Для каждого контракта определяем период времени
, в течение которого мы хотим его торговать. При этом должно выполняться соотношение
. Склеивание производим в обратном направлении по времени. Записываем в историю последний фьючерс за выбранный для него интервал. Для предпоследнего фьючерса: приписываем историю за выбранный интервал, прибавив к ценам разницу
между ценой последнего фьючерса в момент перехода и ценой предпоследнего. Для ещё более ранних фьючерсов принцип тот же, разве что разницу между фьючерсами от текущего до последнего нужно накапливать:
.
1) (+) В построенной истории будут отсутствовать гэпы;
2) (+) По такой истории можно делать бэктесты в терминах доходностей вида ;
3) (+) Многие типы сигналов можно считать по такой истории;
4) (-) Опираться на абсолютный уровень цен при построении сигналов на такой истории нельзя;
5) (-) В истории могут получиться отрицательные цены;
6) (-) При переходе в новый контракт вся предыдущая история перерисовывается;
7) (-) При расчёте некоторых типов сигналов нужно будет учитывать время до экспирации.
Способ 3: Склеивание с поправкой на отношение фьючерсов в момент перехода.
Для каждого контракта определяем период времени
, в течение которого мы хотим его торговать. При этом должно выполняться соотношение
. Склеивание производим в обратном направлении по времени. Записываем в историю последний фьючерс за выбранный для него интервал. Для предпоследнего фьючерса: приписываем историю за выбранный интервал, домножив цены на отношение
цены последнего фьючерса в момент перехода и цены предпоследнего. Для ещё более ранних фьючерсов принцип тот же, разве что отношение между фьючерсами от текущего до последнего нужно накапливать:
.
Можно реализовать и проще: сосчитать доходности вида из цен фьючерсов, выбрать их за нужные интервалы, перейти от последовательности склеенных доходностей обратно к ценам (прибавить единицу и накопить кумулятивное произведение), поделить полученную историю на последнее значение кумулятивного произведения и домножить на последнее значение используемого в настоящий момент фьючерса.
1) (+) В построенной истории будут отсутствовать гэпы;
2) (+) По такой истории можно делать бэктесты в терминах доходностей вида ;
3) (+) Многие типы сигналов можно считать по такой истории;
4) (+) В истории НЕ могут получиться отрицательные цены;
5) (-) Опираться на абсолютный уровень цен при построении сигналов на такой истории нельзя;
6) (-) При переходе в новый контракт вся предыдущая история перерисовывается;
7) (-) При расчёте некоторых типов сигналов нужно будет учитывать время до экспирации.
Способ 4: Склеивание фьючерсов путём интерполяции цен.
Выберем некую константу — некое целевое время до экспирации. Возьмем время до экспирации текущего фьючерса
и время до экспирации следующего фьючерса
. Найдём такие веса фьючерсов, в сумме дающие единицу, чтобы взвешенное время до экспирации было равно целевому времени до экспирации:
,
,
,
. И, наконец, запишем в историю очередную точку равную
. Веса нужно пересчитывать для каждой точки (если склеиваете дневные данные — раз в день, если склеиваете минутные данные — раз в минуту).
1) (+) В построенной истории будут отсутствовать гэпы;
2) (+) Многие типы сигналов можно считать по такой истории;
3) (+) В истории НЕ могут получиться отрицательные цены;
4) (+) Опираться на абсолютный уровень цен при построении сигналов на такой истории МОЖНО;
5) (+) История не перерисовывается при переходе на новый контракт;
6) (±) При расчёте сигналов можно не учитывать время до экспирации (хотя способ на самом деле не очень точный);
7) (-) Делать бэктесты по такой истории цен НЕЛЬЗЯ.
Способ 5: Склеивание фьючерсов путём интерполяции ставок дисконтирования.
Основная идея та же самая, что и в предыдущем способе, однако вместо цен мы используем ставки дисконтирования, извлекаемые для каждого фьючерса с учётом базового актива и времени до экспирации: . Получив некую средневзвешенную ставку дисконтирования мы можем вновь воспользоваться соотношением futures-spot parity и получить цену фьючерса с некоторым фиксированным временем до экспирации:
. У этого способа может быть очень много нюансов из-за дивидендов и convenience yield; они выходят за рамки этой статьи.
1) (+) В построенной истории будут отсутствовать гэпы;
2) (+) Многие типы сигналов можно считать по такой истории;
3) (+) В истории НЕ могут получиться отрицательные цены;
4) (+) Опираться на абсолютный уровень цен при построении сигналов на такой истории МОЖНО;
5) (+) История не перерисовывается при переходе на новый контракт;
6) (±) При расчёте сигналов можно не учитывать время до экспирации (точность будет лучше, чем в предыдущем способе);
7) (-) Делать бэктесты по такой истории цен НЕЛЬЗЯ.
Заключение
В зависимости от задачи (расчёт PnL / расчет сигнала, для которого важен абсолютный уровень цен / расчёт сигнала, для которого важно время до экспирации / требования к быстродействию системы) следует выбирать правильный способ склеивания фьючерсов. Иногда, чтобы не создавать себе проблем, проще построить несколько вариантов склеенной истории, чем пытаться сосчитать всё из одного-самого-правильного 🙂
Разумеется, если вы выполняете вычисления по отдельным фьючерсным контрактам, со склеиванием можно не заморачиваться. Но это лишает вас возможности векторизовать вычисления и может чрезмерно усложнять обвязку логики принятия решений, ради которой, вообще-то, мы и мучаемся.
Что такое склеенный фьючерс, или почему трендовые роботы зарабатывают меньше, чем от них ожидают.
Речь в данной статье пойдет о склеенных фьючерсах, применяемых для тестирования и оптимизации торговых алгоритмов. Понимание механизма расчета склеенных фьючерсов необходимо трейдеру в процессе подбора параметров робота, для снижения риска переоптимизации.
Зачем нужен склеенный фьючерс
После реализации торговой системы в виде программного кода, следующий этап — подбор параметров системы на исторических данных. В отличие от акций, срок жизни которых равен сроку жизни предприятий, которые их эмитируют, фьючерсные контракты обращаются на рынке ограниченный период времени. Если открыть спецификацию фьючерсного контракта (далее будет рассматриваться фьючерсный контракт на индекс РТС), в ней существуют два параметра: Начало обращения и Последний день обращения (день экспирации). Данные параметры определяют срок жизни фьючерсного контракта:
Полный код контракта RTS-12.14
Наименование контракта Фьючерсный контракт на Индекс РТС
Вид контракта Фьючерс
Тип контракта Расчетный
Начало обращения 20.11.2012
Последний день обращения 15.12.2014
Дата исполнения 15.12.2014
Исходя из данных, приведенных в спецификации, срок жизни контракта составляет почти два года. На самом деле, фьючерсный контракт активно торгуется не более трех месяцев. Это время называется периодом ликвидности. Период ликвидности легко определить, если обратить внимание на гистограмму объемов:
Из приведенного графика контракта RTS-12.14, видно, что ликвидность «пришла» в контракт 15 сентября 2014 года, когда происходила экспирация предыдущего RTS – 9.14. Таким образом, трейдер, торгующий на фьючерсном рынке, каждые три месяца вынужден переходить на торговлю новым фьючерсным контрактом. Промежутки между выпуском контрактов в обращение, устанавливаются биржей, и могут быть чаще или реже трех месяцев.
Методы расчета склеенных фьючерсов
Казалось бы, расчет склеенного фьючерса сводится к «нехитрой» процедуре: на следующий, после экспирации день, в непрерывный ценовой ряд необходимо добавлять данные нового контракта. Однако, обычно возникает проблема ценового разрыва между старым и новым фьючерсами. Ниже приведен график контракта RTS-9.14, заканчивающийся днем экспирации 15 сентября 2014 года:
и график нового контракта RTS-12.14, на ту же дату:
Из представленных графиков видно, что на момент закрытия рынка 15 сентября 2014 года, был зафиксирован ценовой разрыв между контрактами в 1390 пунктов. Простая стыковка контрактов приведет к наличию «гэпа» в склеенном фьючерсе, 16 сентября 2014 года, величиной 1390 пунктов, которого на самом деле не было.
Для сглаживания ценовых разрывов используются различные методы: интерполяции, стыковка с учетом в цене контракта величины ценового разрыва и другие. Более подробно о них можно прочитать в книге Джека Швагера «Технический анализ. Полный курс». Чаще всего на практике используется метод интерполяции.
Чуть подробнее о методе интерполяции
Суть метода состоит в следующем. За определенное количество дней до экспирации, например 100, цены закрытия свечей склеенного фьючерса, начинают вычисляются как сумма цен закрытия старого и нового контрактов в определенной пропорции. Например, за 100 дней до экспирации цена закрытия свечи склеенного фьючерса вычисляется как:
где CLOSE s – цена закрытия свечи склеенного фьючерса;
CLOSE old – цена закрытия свечи старого фьючерсного контракта;
CLOSE new – цена закрытия свечи нового фьючерсного контракта;
0,01 – вес цены нового контракта в общей сумме за 100 дней до экспирации.
Для следующего, 99-го дня до экспирации, вклад цен коэффициенты изменятся на 0,98 и 0,02:
На день экспирации формула приобретет вид:
В итоге, 16 сентября 2014 года, цена закрытия свечи склеенного контракта будет равна цене свечи закрытия нового контракта. Количество дней до экспирации, коэффициенты «вклада» цен закрытия в общую сумму, в данном примере выбраны произвольно.
Результаты метода интерполяции, на примере графика склеенного фьючерса на индекс РТС брокера «БКС»:
Статистика ценовых разрывов фьючерса на индекс РТС
Возникает вопрос, какой «вклад» внесли ценовые разрывы в общее движение цен склеенного фьючерса на индекс РТС, например за 2012 и 2013 годы. Статистика следующая:
Контракт на момент экспирации (старый/новый)
Что такое склейка фьючерсов
Склейка фьючерсов представляет собой склейку их графиков. Фьючерсные контракты, как нам известно, отличаются ограниченным периодом обращения. Большая их часть, которая является наиболее распространенной среди участников биржевой торговли, отличается периодом обращения, равном 3 месяца, а это значит, что по истечении данного срока произойдет его экспирация. Рассмотрим, что такое склейка фьючерса и в чем состоит ее суть.
В чем заключается склейка?
Первоначально экспирация являлась фактической поставкой продукции, однако, на сегодняшний день покупка фьючерсного контракта, к примеру, на зерновую продукцию, не предусматривает, что к окончанию срока его действия вы получите тонну или несколько тонн зерна – зависимо от его размера. Фактически на трейдерский счет просто поступит определенная сумма, которая равна цене контракта на дату экспирации. Однако это имеет место только тогда, если трейдер не перешел на последующий контракт.
Участники биржевой торговли могут удерживать фьючерсный контракт достаточно долго с последующей пролонгацией их в периоды экспирации. Для осуществления технического анализа или же для того, чтобы иметь возможность оценить визуально динамику цены контракта в течение определенного периода времени, участнику торговли на бирже необходим график цены на более длительных таймфреймах.
Именно в такой ситуации и используется склейка. Другими словами, берется график предшествующего фьючерса да начала его экспирации с дальнейшим добавлением графика последующего, начиная с даты его открытия.
Склейка графиков способом, называемым «стык в стык», в этой ситуации считается не лучшей альтернативой, так как стоимость фьючерсного контракта имеет склонность к следующим явлениям:
Следует заметить, что все нужные склеенные графики уже существуют. Как посмотреть склейку фьючерса? Для этого лучше всего воспользоваться сведениями с информационных ресурсов, на которых можно увидеть отображение уже склеенных графиков фьючерсных контрактов. Таких online программ в настоящее время довольно много.