Блог им. melamaster

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

Или почему мы можем думать о себе лучше, чем есть.

Почему мы берем готовую склейку, в которой следующий фьючерс тупо приклеен к предыдущему? Потому что это удобно и легко.
Торговать вот такое облако контрактов, конечно, неудобно:
Об одной ошибке при тестировании склеенных фьючерсов




































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

Рассмотрим пару примеров, чего нам может стоить использование склейки, когда мы торгуем эту склейку словно она торгуема.

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
















































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

















































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

Теперь посмотрим на медленный лонг брента:
Об одной ошибке при тестировании склеенных фьючерсов
















































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

















































Оно снова не сливает, но выглядит уже не столь оптимистично и красиво. В среднем тут на бренте мы теряем или зарабатываем (если считать неправильно) в среднем 5% в год. Довольно ощутимая величина, на которую легко себя обмануть.

Конечно, всё это болезненно проявится, когда на рынке пила, т.е. когда наша система и так сливает, но мы могли не представлять себе адекватно характер этого слива, если тестировали по тупой склейке.
★3
43 комментария
во фьючах это актуально при сроках позиций больше срока контракта, в других случаях, что более актуально, достаточно исключить период экспирации
avatar
Для Si это даёт слишком малую погрешность, чтобы изобретать тестер. Тем более, что стратегию всегда можно прогнать на USDRUB_TOM и оценить различие.
Для брента все намного интереснее. Не очень понятно, почему взята стратегия в лонг, ведь брент почти всегда в контанго. Было бы интересно взглянуть на результаты стратегии только в шорт и, разумеется, в обе стороны.
С практической точки зрения было бы интересно оценить разницу результатов по системе лонг/шорт в зависимости от расстояния в рабочих днях точки роллирования от даты экспирации.
Спасибо!
Дмитрий Овчинников, 
С практической точки зрения было бы интересно оценить разницу результатов по системе лонг/шорт в зависимости от расстояния в рабочих днях точки роллирования от даты экспирации.
Такого не считал. Перекладку примерно за два дня делаю.

Что касается медленного шорта на бренте, то его результаты улучшаются, если делать перекладку.
avatar
Sergey Pavlov,
Посчитайте, если не сложно, раз уже есть инструмент. Я стараюсь роллировать дней за 5 и есть ощущение, что это поздно.
Дмитрий Овчинников, любопытно. А с чем это может быть связано? Неужели там есть выпуклость форвардной кривой за 5 дней? Тогда это надо вообще по-другому исследовать. Вне контекста торговой системы. Взять и посчитать всю разницу между соседними брентами со сдвигом от 1 до 30 дней и посмотреть динамику за все годы.
avatar
Sergey Pavlov,
Иногда происходят явные игры перед экспирацией, спред существенно меняется. Что происходит я не понимаю, поэтому придерживаюсь тактики держаться подальше от этого процесса.
Дмитрий Овчинников, для брента интереснее вдвойне т.к еще возникает ошибка пересчета баксов в рубли при клире…
avatar
Потому и пользуюсь лобовой склейкой. В жизни, как ни клей, оно все равно ни хрена не работает. В январе не работает, в феврале не работает, в марте не работает...  эдак и самое главное — веру — недолго потерять.

А на «склеенную» эквити в тестере глянешь — да все путем! Трудности временные, впереди новые вершины, враг, как это всегда было, позорно убежит и победа будет за нами.

Лайфхак:  я еще и проскальзывания зануляю. Очень помогает, знаете ли.
avatar
bocha, 
вот, что по-честному…
avatar
Можно легко посмотреть влияние склейки
Сделав тест на склеенном фьюче и сравнив с ба
Для того же си это usdrub_tom
avatar
ves2010, нет, нелегко. Зависит от того, какую ты систему нафиттил. Можно её так загнать на склейке, что она будет зарабатывать половину профита на местах склейки, а внутри контракта «отдыхать». Это отчасти надуманный пример, но тем не менее.
avatar
Sergey Pavlov, вот это самое опасное, про места склейки. тут не 5%, а все 20% могут быть и не в год, а в квартал.
ну или в месяц, если это нефть
avatar
Sergey Pavlov, и ? 
вот смотри тест на склейке и на БА должен совпадать на 80-90%
если расхождения то надо смотреть почему...
обычно на склейке данные битые
.........
можно банально запретить торговлю в указанные дни
avatar
Sergey Pavlov, ну кстати, когда на склейке видно в период экспирации сверхдоходные сделки — это напрягает, а когда убыток — нет )
avatar

Не говорю, что это прям про этот случай, но меня всегда удивляло, что алго-трейдеры так заботятся о деталях в то время как у нас есть такой незначительный моментик, как то, что мы понятия не имеем что там будет на OOS участке. Нам же не нужно идеально зафититься на истории — если мы в здравом уме — не нужно. Влияние описанного явления не очень большое? — Не очень. Влияет ± на все стратегии? — ± на все. Т.е. по факту на выбор топ стратегий из кандидатов для включения в портфель влияет не сильно или не влияет? — Получается, так.

 

Ну это я. Но если есть любовь к деталям — можно и заморочиться, лишним не будет.

Ну и кстати если лонг-шорт торговать — получается вообще не biased шум и тем более можно пренебречь.

avatar
Replikant_mih, вот как раз получается, что не можно. Разговор о деталях это намек на то, что нет смысла думать про OOS, пока на IIS — говно. 
avatar
Sergey Pavlov, По хорошему, конечно, должна быть у тебя твоя функция, которую ты просто в коде вызываешь в каждой стратегии — а она уже проверяет, если надо выходит перед склейкой. Или даже многие другие стандартные вещи делает и тебе не надо заморачиваться.

Про OOS и детали — не, про OOS надо думать всегда!) А не так что: вот я тут наколбасим, а теперь посмотрим/подумаем, что там будет на OOS. Да, пожалуй, общий принцип именно такой: если влияние не смещенно — им можно пренебречь, немного шума не помешает. Если смещенное — уже можно смотреть на оценку возможного влияния — чем сильнее, тем больше этим вопросом стоит заморочиться. Можно просто какую-то поправку (какой-то коэффициент, например) сделать (быстрый способ) либо заморачиваться.


avatar
Replikant_mih, это просто нормальная вера в то, что «если сделать всё правильно» то и результат будет «правильный». то есть сумма зависит от качества частей.

avatar
ПBМ, Да, главное держать в голове, что «правильно» это не зафититься под максимально реалистичную историю))). Если польза реальная есть — да, надо стремиться в сторону правильности.
avatar
Replikant_mih, для любого дата сайентиста внимательное отношение к данным — необходимый элемент профессии. Брать заведомо порченные данные только для того, чтобы один раз в жизни полениться написать 10 строчек кода, имхо, недопустимая небрежность для человека, который хочет даже не быть, считаться профи. 
avatar
SergeyJu, Я про это и говорю — если это что-то важное этим нужно заморочиться, если нет — есть точки приложения усилий с большим КПД.
avatar
Replikant_mih, Вы готовы пренебрегать качественной  подготовкой данных. Мне нечего к этому добавить. 
avatar
SergeyJu, Вы увидели красную тряпку и не можете отвести взгляд чуть в сторону от неё — мне нечего к этому добавить.
avatar
Если вы торгуете через тслаб и у вас сделка не закрылась до истечения срока действия контракта, то когда переходишь на новый контракт тслаб начинает считать все индикаторы уже по новому контракту что может привести к закрытию сделки. ЗЫ торгую часовики поэтому для меня это критично.
Константин, можно старый контракт подклеивать к новому, чтобы индикаторам помочь. Вроде, даже смещение старых данных можно сделать, чтобы склейка была бесшовной. По идее, это должно помочь индикаторам…
avatar
Возьмём сишку и прогоним на ней простенькую трендовуху:
А слабо взять спот ТОМ и гонять его — без склеек, без схлопывающегося контанго? График-то один с сишкой...
avatar
О'Грин, во-первых, комиссия конская. Во-вторых, эти инструменты очень разные по ликвидности и удобству использования. В-третьих, нет плеча. В-четвертых, по операциям с наличной валютой брокер не является налоговым агентом (насколько мне известно раньше не являлся).
avatar
ch5oh, Это всё я здесь теми же словами новичкам рассказываю )))
Вы меня не поняли — я торгую исключительно сишку, но строго по графику спот, дабы поддержки/сопротивления не корёжились схлопывающисмя контанго и склейками фьючей.
 График ТОМ — лишь как справочный, компас. И такой подход даёт достаточно точные зоны покупок/продаж, лично мне нравится. )))
 Потому я и спросил — зачем гонять для анализа график сишки, если можно гонять график ТОМ?
avatar

О'Грин, сделки-то всё равно надо совершать с фьючерсом. При автоматизированном тестировании алгоритмов добавление второго инструмента увеличивает сложность как робота, так и тестера очень непропорционально.

 

Хотя, может быть, в этом что-то есть…

avatar
ch5oh, Ну, мне все сложности и тонкости настроек у вас, роботоводителей, понять трудно, просто поделился своим опытом ручного профитного трейдера сишки. 
 Удачи вам! 
avatar
О'Грин, зачем грааль палишь? удаляй давай
avatar
ves2010, Чо, серьёзно, что ли? 
 Мне что жалко, что ли? Ликвидности в сишке на всю нашу мелочь хватит. )))
 Меня иногда новички про мои графики с трейдами спрашивают, грааль ищут — рассказываю, как торгую.
 Денег никогда ни за что не прошу, сам себе заработаю. А когда сам был зелёным чайником — мне опытные люди много раз помогали, подсказывали, да и за полезные статьи в архивах — всем низкий поклон! )))
avatar

ves2010, «покупать бакс всегда, когда есть деньги»? Это грааль?

 

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

avatar
Возьмём сишку и прогоним на ней простенькую трендовуху:

Без ножа прям зарезали! 
avatar
Kot_Begemot, зачем тут нож? Пересечение сма или пробитие экстремумов дадут подобную кривулину на си и еу. Можно и хитростей всяких добавить, но каждая хитрость добавляет риска переподгонки. Хорошо, что у вас хорошее чувство юмора:)
avatar
 нет, она не даст!
Несмотря на склейку и хитрости…
avatar

А как в тестере учесть разрыв между контрактами ведь даты разные вроде то 15, то 18 число, то еще какое
Как это учесть? Или тупо 14 числа выходим из одного в другой?

avatar

Тоже раньше думал об этом, в итоге забил
При тестинге вычитаю из результата за год сумму 3 спредов между контрактами и смотрю устраивает или нет
По факту же в реальности один раз в мнимый плюс считает тестер, один раз в мнимый минус
+- при среднесрочке при тестинге они друг друга и компенсируют эти мнимые плюсы и минусы

avatar
Виталий, там часто в местах склйки битые данные… т.е шипы в +-5% идут сериями 
avatar
ves2010, При перевалках крупных поз из контракта в контракт тоже бывают в сишке приличные шипы, ММ в новом полупустом стакане не всегда стоИт полным объёмом. Несколько раз перед экспирой так дальними лимитками выхватывал вкусную цену.
avatar
Eugene Logunov, от стратегии ещё зависит.
avatar
Я бы выравнивал цены предыдущего контракта по следующему, исключая дни экспирации и начальные периоды, когда торговли особо нет — то есть, данные до экспирации предыдущего выбрасывал бы. Нужно подвинуть цену предыдущего контракта по всему периоду так, чтобы цена выхода предыдущего была равна цене входа следующего, но не константой, конечно.
avatar

теги блога Sergey Pavlov

....все тэги



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