Sergey Pavlov
Sergey Pavlov личный блог
24 марта 2021, 05:57

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

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

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




































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

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

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
















































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

















































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

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
















































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

















































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

Конечно, всё это болезненно проявится, когда на рынке пила, т.е. когда наша система и так сливает, но мы могли не представлять себе адекватно характер этого слива, если тестировали по тупой склейке.
43 Комментария
  • vito333
    24 марта 2021, 06:20
    во фьючах это актуально при сроках позиций больше срока контракта, в других случаях, что более актуально, достаточно исключить период экспирации
  • Дмитрий Овчинников
    24 марта 2021, 08:35
    Для Si это даёт слишком малую погрешность, чтобы изобретать тестер. Тем более, что стратегию всегда можно прогнать на USDRUB_TOM и оценить различие.
    Для брента все намного интереснее. Не очень понятно, почему взята стратегия в лонг, ведь брент почти всегда в контанго. Было бы интересно взглянуть на результаты стратегии только в шорт и, разумеется, в обе стороны.
    С практической точки зрения было бы интересно оценить разницу результатов по системе лонг/шорт в зависимости от расстояния в рабочих днях точки роллирования от даты экспирации.
    Спасибо!
      • Дмитрий Овчинников
        24 марта 2021, 08:52
        Sergey Pavlov,
        Посчитайте, если не сложно, раз уже есть инструмент. Я стараюсь роллировать дней за 5 и есть ощущение, что это поздно.
          • Дмитрий Овчинников
            24 марта 2021, 09:01
            Sergey Pavlov,
            Иногда происходят явные игры перед экспирацией, спред существенно меняется. Что происходит я не понимаю, поэтому придерживаюсь тактики держаться подальше от этого процесса.
    • ves2010
      24 марта 2021, 09:01
      Дмитрий Овчинников, для брента интереснее вдвойне т.к еще возникает ошибка пересчета баксов в рубли при клире…
  • bocha
    24 марта 2021, 08:37
    Потому и пользуюсь лобовой склейкой. В жизни, как ни клей, оно все равно ни хрена не работает. В январе не работает, в феврале не работает, в марте не работает...  эдак и самое главное — веру — недолго потерять.

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

    Лайфхак:  я еще и проскальзывания зануляю. Очень помогает, знаете ли.
    • baron_samedi
      24 марта 2021, 18:26
      bocha, 
      вот, что по-честному…
  • ves2010
    24 марта 2021, 09:00
    Можно легко посмотреть влияние склейки
    Сделав тест на склеенном фьюче и сравнив с ба
    Для того же си это usdrub_tom
      • П М
        24 марта 2021, 10:00
        Sergey Pavlov, вот это самое опасное, про места склейки. тут не 5%, а все 20% могут быть и не в год, а в квартал.
        ну или в месяц, если это нефть
      • ves2010
        24 марта 2021, 22:38
        Sergey Pavlov, и ? 
        вот смотри тест на склейке и на БА должен совпадать на 80-90%
        если расхождения то надо смотреть почему...
        обычно на склейке данные битые
        .........
        можно банально запретить торговлю в указанные дни
      • vito333
        25 марта 2021, 04:26
        Sergey Pavlov, ну кстати, когда на склейке видно в период экспирации сверхдоходные сделки — это напрягает, а когда убыток — нет )
  • Replikant_mih
    24 марта 2021, 09:55

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

     

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

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

      • Replikant_mih
        24 марта 2021, 10:25
        Sergey Pavlov, По хорошему, конечно, должна быть у тебя твоя функция, которую ты просто в коде вызываешь в каждой стратегии — а она уже проверяет, если надо выходит перед склейкой. Или даже многие другие стандартные вещи делает и тебе не надо заморачиваться.

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


    • П М
      24 марта 2021, 10:12
      Replikant_mih, это просто нормальная вера в то, что «если сделать всё правильно» то и результат будет «правильный». то есть сумма зависит от качества частей.

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

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

           

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

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

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

             

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

  • Kot_Begemot
    24 марта 2021, 16:12
    Возьмём сишку и прогоним на ней простенькую трендовуху:

    Без ножа прям зарезали! 
  • baron_samedi
    24 марта 2021, 18:29
     нет, она не даст!
    Несмотря на склейку и хитрости…
  • Виталий
    24 марта 2021, 20:24

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

  • Виталий
    24 марта 2021, 20:33

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

    • ves2010
      24 марта 2021, 22:41
      Виталий, там часто в местах склйки битые данные… т.е шипы в +-5% идут сериями 
      • О'Грин
        24 марта 2021, 22:51
        ves2010, При перевалках крупных поз из контракта в контракт тоже бывают в сишке приличные шипы, ММ в новом полупустом стакане не всегда стоИт полным объёмом. Несколько раз перед экспирой так дальними лимитками выхватывал вкусную цену.
  • bascomo
    25 марта 2021, 15:42
    Я бы выравнивал цены предыдущего контракта по следующему, исключая дни экспирации и начальные периоды, когда торговли особо нет — то есть, данные до экспирации предыдущего выбрасывал бы. Нужно подвинуть цену предыдущего контракта по всему периоду так, чтобы цена выхода предыдущего была равна цене входа следующего, но не константой, конечно.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн