Блог им. robostock

Склееные фьючерсы

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

В моей практике постоянно приходится сталкиваться с торговыми стратегиями на срочном рынке.

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

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

F=N*S*(1+r1) — N*div*(1+r2),

где

N – объем фьючерсного конт­ракта (количество акций),

F – цена фьючерса;

S – спот-цена акции;

r1 – процентная ставка на срок со дня заключения сделки по фьючерсному контракту до его исполнения;

div – размер дивидендов по базовой акции;

r2 – процентная ставка на срок со дня закрытия реестра акционеров («отсечки») до исполнения фьючерсного контракта.

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

Чем меньше дней до экспирации, тем меньше разница между базовым активом и фьючерсом.

Поэтому фьючерсы с разными датами экспирации торгуются с разным базисом к базовому активу.

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

Кто же торгует на срочном рынке без плечей!? :)))))

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

Но будьте уверены, в большинстве случаев не в вашу пользу.

 

Я выбрал 2 удобных способа хранения и использования исторических котировок фьючерсов.

 

 

Первый способ: раздельное хранение котировок отдельных фьючерсов

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

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

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

Чем удобен такой способ:

— легко тестировать стратегии на отдельных сериях фьючерсов

— не надо думать о том, как склеивались фьючерсы

— тесты максимально близки к реальным торгам

 

Чем неудобно:

— накапливается огромное количество файлов

— сложный код для стратегий, которые торгуют несколькими фьючерсами

— в wealth-lab`е не будет работать функция синхронизации позиций

— мало исторических данных, для стратегий использующих индикаторы с длинными периодами усреднения

 

Рекомендации:

Для удобной сортировки файлов рекомендую использовать формат имени файла в виде:

{сокращенное наименование фьючерса}{год}{код месяца} — Si17U, GZ17Z и т.д.

 

Второй способ: склейка с добавлением дополнительного поля

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

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

Удобным решением оказалось склеить все исторические данные в один файл. Но вместо использования классических методик склейки фьючерсов, я добавил дополнительное поле «Expiration». Данное поле может принимать на ваше усмотрение любые значения.

Я записываю 0, либо 1.

«1» означает, что данный бар последний перед экспирацией.



Склееные фьючерсы

 

В случае работы с Wealth-Lab`ом для работы с дополнительным полем есть специальная функция — FindNamedSeries.

Загружаем дополнительное поле в отдельную переменную:

MySeries = Bars.FindNamedSeries( «Expiration» );

Далее на каждом новом шаге цикла проверяем значение этого поля.

Если MySeries[bar] = 1, то закрываем позиции по стратегии, т.к. это последний торговый бар перед экспирацией.

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

 

Чем удобен такой способ:

— вам становится доступна функция wealth-lab`а для синхронизации котировок разных инструментов

— упрощается код стратегии

— увеличивается массив данных для индикаторов с большим периодом усреднения (хотя я считаю это плохим тоном в написании стратегий)

— упрощается работа с несколькими инструментами

 

Чем неудобно:

С неудобствами не столкнулся

★16
3 комментария
«Цена фьючерса зависит от следующих параметров: цены базового актива, процентной ставки и дней до экспирации» — по мне так на цену фьюча влияет конечно БА, но в большей мере влияет психология игроков. По поводу % ставки и экспиры это больше к опционам относится
Николай Мишакин, как хорошо, что вы книжки не пишите :)
avatar
а попроще то можно ?))

теги блога Кирков Алексей

....все тэги



UPDONW
Новый дизайн