Всю жизнь тестировал и оптимизировал торговые стратегии для фьючерсов используя так называемый «склеенный» фьючерс с сайта Финама. Я понимал и понимаю, что в момент «умирания» старого фьюча и соответственно перетекания ликвидности на новый фьючерс происходит ценовой ГЭП. Или контанго (когда цена нового фьюча больше чем цена уходящего в небытие) или бэквордация (обратная ситуация).
Как выяснилось, склейку фьючей Финам проводит по методу «Панама» (или проводил), а как будет проводить — кто его знает. Да и что за «Панама» — яндекс в помощью интересующимся. Смысл в том, что на стыке двух фьючей идут недостоверные котировки.
Из-за наличия такого ценового разрыва в склеенных фьючерсах результаты тестирования стратегии искажаются и как результат в процессе оптимизации находятся неоптимальные параметры.
Я считал, что это несущественные искажения, но если учесть, что оптимизацию иногда провожу на промежутке времени до 10 лет и каждый год происходит как минимум 4 склейки (поквартально) — получается около 40 сделок дают искаженный финансовый результат, которого можно не достичь в реальной торговле. Если же использовать фьючи на нефть — склейки могут доходить до 12 раз в году.
Поискал, что думают об этой теме трейдеры, которые используют ТСЛаб. Вот результаты поиска на форуме по ключевым словам «фьючерс и склейка»:
Как видим, вопрос возник не только у меня. Многие, кто сталкивался с этой проблемой задавались аналогичным вопросом. При этом технического решения так нигде не увидел. Только небезызвестный Родион Скуратовский написал, что можно заморочиться и сделать это в коде (Кстати, почему-то Родион перестал писать на тслабовском форуме — неужели разочаровался в системной торговле?).
В общем, решил я «заморочиться» и хотя бы раз объективно проверить — насколько будут отличаться параметры торговой системы после оптимизации на склеенном фьюче и при оптимизации методом, которым я действую в реальной жизни.
Несколько слов о реальной жизни: когда подходит срок экспирации старого контракта обычно за 3 или 2 дня — я указываю роботу, чтобы он не открывал новых сделок, а существующие сделки начинал закрывать. Как только я вижу стратегии, у которых нулевая текущая позиция — я тут же провожу смену фьючерсного контракта на новый. И снова включаю робота в «автоматический режим».
Именно такую логику удалось реализовать в коде торговой стратегии. Пришлось позаморачиваться, но в результате получилось, что стратегии я могу подсовывать не склеенный фьючерс с нереальными ценами в момент стыка, а серию реальных фьючей (например, SIH8, SIM8, SIU8, SIZ8, SIH9) c фактическими котировками.
Затем я указываю стратегии, за сколько дней до «смерти» старого фьюча нужно закрывать позиции по старому. Сразу после закрывания позиций по старому фьючу идёт открытие (в соответствии с логикой торговой стратегии) по новому. Причём индикаторы к моменту закрытия позы по старому фьючу уже считаются по новому фьючу, поэтому искажений не происходит.
Вот как это выглядит на картинке (на примере SIH8 и SIM8):
В общем, появилась возможность ответить на два вопроса:
1) Сильно ли будут отличаться параметры торговой системы при оптимизации на «склеенном» фьюче и используя «жизненный» подход — на серии реальных фьючей
2) За сколько дней лучше всего переходить на новый фьюч с точки зрения получения наилучших результатов (этот параметр я тоже оптимизировал) — для интереса.
Ваши варианты ответа жду в комментариях. Завтра расскажу о результатах своего эксперимента.
Мне было бы любопытно узнать — как поступаете Вы? Используете склейку и не заморачиваетесь? Или есть какие-то свои наработки по этому вопросу (может поделитесь опытом?)
Как показала практика подобные действия не сильно изменяют итоговые показатели тестов, за исключением брента.
Подкину вам еще тему для размышления по поводу брента.
В моих системах брент не торгуется вечером в среду, т.е. день, когда выходит отчет о запасах. Но отчет не всегда выходит в среду! (праздники, выходные и пр.) И если в реальном режиме работы время торговли можно и нужно исправлять руками, то что делать с тестером?
Тут все просто: если эти искажения влияют в разные стороны на результаты систем — это одно, если в одну сторону (например, всегда улучшают) — тогда надо как-то лечить, ну или делать реалистичную поправку.
Если же в разную, то в целом можно не заморачиваться (кроме разве что случаев где эксплуатируется какая-то тема как раз связанная с процессом смены фьючей), потому что если ты затачиваешься на конкретные трейды и чистыми данными результаты будут полностью другие — ну это же чистая подгонка — нафиг оно надо.
В дальнейшем, данные из файлов заливались в массив без всякой склейки и подавались на вход оптимизатору.
И вот что я вам скажу. Результаты оптимизации на финамовских склейках практически ничем не отличались от самодельных исторических данных без склейки. Поэтому, рекомендую забить на ценовые люфты от склейки и не парить себе мозг.
Но решать, конечно, вам))