Eugene Bright
Eugene Bright личный блог
09 октября 2020, 22:24

Бэк-тесты всегда мешают плохому танцору. О «живом рынке», который ломает всю игру.

     В предыдущем посте о бэк-тестировании были приведены основные контраргументы против использования тестирования торговых стратегий на исторических данных. Ну, или, по крайней мере, были высказаны весьма скептические мнения.

   Я не разделяю этого скепсиса.

  Итак, напомню несколько основных тезисов «против»:

  • бэк-тесты не учитывают уровни ликвидности;
  • сигналы на бэк-тестах не могут реализоваться в «боевых» условиях, потому что «рынок живой» (что это такое — каждый понимает по-своему);
  • бэк-тесты не учитывают разных аварий на линии коммуникаций или сбоев торгового ПО;
  • в реальности торговый алгоритм выдает одновременно 2 (!) торговых сигнала, робот-скотина «не фильтрует», а на бэк-тестах такого почему-то не бывает;
  • колл-бэки «в реале» не отвечают так, как хотелось бы;
  • бэк-тестирование — это удел презренных теоретиков и необстрелянных «окопников», никогда не бывавших в настоящем бою.

        Про ликвидность я описал свое видение проблемы в том же посте. Если кратко, то эта проблема решается просто: не жадничайте!

        Либо получите по Вашей цене столько, сколько дадут (или вообще нисколько не дадут); либо предлагайте невыгодную для себя цену и оплатите людям их риски и получите такой объем, какой Ваш нужен. Третьего не дано. Не нужно забывать, что скупой платит дважды!

       Тема сегодняшнего поста – противоречие между сигналами на бэк-тестах и их отсутствие «в боевых условиях», а также о задаче постоянной оптимизации торговой системы.

        С чего мы обычно начинаем, тестируя свою торговую стратегию?

       Правильно, с подготовки данных, то бишь, со скачивания архивов цен по выбранному инструменту. И этим сами начинаем рыть огромную яму (почти черную дыру), в которой похороним не один депозит!

       Почему?

      Ответ простой, хотя и выглядит весьма парадоксально: база исторических данных, имеющая началом какой-нибудь 19… -лохматый год, не имеет, в общем смысле, ничего общего с той, по которой Вы будете торговать сегодня-завтра.

      В чем же заключается эта разница и какова природа этой разницы?

     Для ответа на эти вопросы давайте задумаемся над 4 вопросами:

  • Кто является поставщиком данных?
  • Кто дал эти данные этому поставщику?
  • Где, по отношению к этим двоим агентам, находитесь Вы?
  • Как Вы используете предоставленные данные?

 

      Мне для меня лично абсолютно неважны два первых вопроса. Главное – это не я являюсь поставщиком данных и никак не могу повлиять на их качество.

      Что гласит первое правило эффективного менеджмента? «С менеджера нельзя спрашивать за отклонения по факторам, которыми он не управляет.»
       Следствие: «Грамотный менеджер должен исключить из области своих компетенций неуправляемые факторы.»

      Поэтому ответ на четыре вопроса — один: я не пользуюсь базами исторических данных из источников, отличных от того, на котором я торгую! Вот, где я нахожусь по отношению к поставщикам данных для бэк-тестирования.

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

       Дело в том, что «скользя» по историческим данным эти «чужие средние» тащат сквозь всю историю «тени» всех предыдущих событий на своем рынке. Другими словами, всё семейство «скользящих средних» и их «родственников» имеет крепкую, почти железную, память поколений исторических данных. НО: в пределах скачанной вами истории, «свистнутой» у кого-то и предоставленной Вам кем-то.

       Если вдруг паче чаяния Вы спросите, что «думают» о своей истории «скользящие средние», рассчитанные на Вашем торговом месте, то, весьма вероятно, «память» у «Ваших средних» будет другой, и текущие значения «Ваших средних» будут отличаться, возможно, даже кардинально, от «чужих средних». Вы это увидите обязательно, но объяснить не сможете никак, кроме аргумента «рынок живой».

       Это – «Уловка 22» (незнающих отсылаю в педивикию, там, на этот раз, толково описано). А Вы – герой этой «Уловки». Не знаю, кто Вас научил решать такими «универсальными» фразами свои «непонималки», но он явно не является ни Вашим коллегой, ни тем более – другом.

      Следовательно, Ваш бэк-тест «чужих» исторических данных даст Вам информацию, что сегодня на закрытие сессии Вы должны иметь открытую (long / short) позицию на N контрактов (акций, фьючей, опционов), а Вы на основании «Ваших скользящих» открылись на M контрактов, и эти M и N не равны! От слова «совсем». Кто тут прав, какой расчет верен? Вы скажете «конечно тот, который старше, т.к. он содержит большее количество информации о жизни этого инструмента». На что я Вам посоветую перечитать предыдущий абзац.

Но тут же впору спросить себя: «Стоп! Но если я не могу применить стратегию, обкатанную на данных последних 20 лет истории торгов по инструменту, которая показывает 100% годовых прибыли, то как я могу гарантировать самому себе, что эта стратегия так же эффективна на «моих» данных, которые мне выдает торговый терминал»?

Так какими данными нужно пользоваться для бэк-тестирования, а по каким торговать в «боевых условиях»?

Отвечаю: только теми, которые Вы сам (сама) подготовили, и которые не изменятся на протяжении времени жизни инструмента или того, которое Вы желаете посвятить биржевым спекуляциям, красиво называемым «трейдинг».

С уважением и наилучшими пожеланиями!

12 Комментариев
  • Serj90
    09 октября 2020, 23:28
    Вы хотите сказать, что до тех пор пока не начали самостоятельно сохранять текущие котировки из терминала как исторические данные, ваш робот(ы) были убыточны? 
      • Serj90
        10 октября 2020, 00:20
        Eugene Bright, ну честно говоря, я сам столкнулся с нечто похожим, выгружая свечи и тики с сайта известного брокера по одному инструменту обнаружил, что close свеч на ряде таймфреймов не совпадают со значениями тиков закрывающих эти самые свечи. В итоге принял решение решение работать только с тиками. Но здесь вы ставите под сомнение в целом надежность источника данных, а значит и тиковая история может быть не правдивой. Но кому это выгодно и почему? Написав робота логично, что человек начнет гонять его на демо счете, если робот там начинает сливать, то естественно выпуск его в реальную торговлю будет отложен — а это недополученная ликвидность, недополученные комиссионные и т.п. Ну это я так рассуждаю. Или расчет на тех, кому бэктесты на «подкрученных» данных вскружили голову и они сразу поставят робота на реальный счет?)))
  • ezomm
    10 октября 2020, 00:56
    Мысль автора не понятна по сути торговли .Мы торгуем циклами времени и их размахами. Это легко посчитать  mov(H-L,20,S) или  mov(H-L,200,S).Например 1 час свеча имеет размах 0.2% ,4х час 0.4%.Торговые системы надо придумывать именно опираясь на размах свечей вашего тайма.Что касается циклов времени.Новые фракталы(свечи, бары) имеют закон своего рождения .4 фрактала рождают 1 больший в 2 раза по амплитуде.О каких еще тестах идет речь? В свечном есть закон жизни тренда.Это 8-10 новых шагов вперед.Далее коррекция тренда 4-5 шагов против тренда.Импульс из волнотеории это 3 шага вперед.Читаем про волны и не паримся с тестированием.
  • 3Qu
    10 октября 2020, 01:06
    Если вы не скальпируете — тиковые данные для вас бессмысленны.
    Если у вас сделка продолжительностью от нескольких минут — изменения уровней OHLC в истории из за сдвига времени (даже значительного) биржи и брокера не имеют никакого значения.
    При тестировании «нормальной» рабочей стратегии, на результатах теста это никак не скажется.
    А вообще, понятно, если ТС показывает плохие результаты, то, разумеется, виновата история, а не ТС. Кто ж еще? Понятно — данные плохие, не те.
      • Нувот Вчеранов
        10 октября 2020, 11:07
        Eugene Bright, 
        А куда же «выливается» из графика остаток «свечек»-«баров»?..
        В общем случае никуда не выливается, но к чему это всё?

  • Kapeks
    10 октября 2020, 13:19
    роботы, шмоботы. да помню. было.
    романтика…

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

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