Блог им. HOME

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

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

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

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

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

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

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

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

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

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

       Почему?

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

★2
Вы хотите сказать, что до тех пор пока не начали самостоятельно сохранять текущие котировки из терминала как исторические данные, ваш робот(ы) были убыточны? 
avatar

Serj90

Serj90, нет, я просто решил проблему данных раньше, чем поставил роботы на деньги. Просто я сначала основательно «прорыл» всю тему, т.ск., системно отработал все стороны процесса, потом уже строил ТС под эти условия.

avatar

Eugene Bright

Eugene Bright, ну честно говоря, я сам столкнулся с нечто похожим, выгружая свечи и тики с сайта известного брокера по одному инструменту обнаружил, что close свеч на ряде таймфреймов не совпадают со значениями тиков закрывающих эти самые свечи. В итоге принял решение решение работать только с тиками. Но здесь вы ставите под сомнение в целом надежность источника данных, а значит и тиковая история может быть не правдивой. Но кому это выгодно и почему? Написав робота логично, что человек начнет гонять его на демо счете, если робот там начинает сливать, то естественно выпуск его в реальную торговлю будет отложен — а это недополученная ликвидность, недополученные комиссионные и т.п. Ну это я так рассуждаю. Или расчет на тех, кому бэктесты на «подкрученных» данных вскружили голову и они сразу поставят робота на реальный счет?)))
avatar

Serj90

Serj90, тиковые данные имеют меньшую «историческую память» в том смысле, о котором я написал. Поэтому по ним работать безопаснее, хотя и не полностью. Это — одно из правильных решений проблемы.
По поводу «Qui prodest»… Нет тут злого умысла. Это — просто экономия серверных возможностей (производительность, в первую очередь, и объемы хранилищ) и пропускных возможностей линий коммуникаций.
Организатору торговли выгодно, когда профессионалы (институционалы) зарабатывают, и в этом можно усмотреть сговор биржи и маркетосов.
А рядовому спекулянту, конечно же, — беда…
avatar

Eugene Bright

Мысль автора не понятна по сути торговли .Мы торгуем циклами времени и их размахами. Это легко посчитать  mov(H-L,20,S) или  mov(H-L,200,S).Например 1 час свеча имеет размах 0.2% ,4х час 0.4%.Торговые системы надо придумывать именно опираясь на размах свечей вашего тайма.Что касается циклов времени.Новые фракталы(свечи, бары) имеют закон своего рождения .4 фрактала рождают 1 больший в 2 раза по амплитуде.О каких еще тестах идет речь? В свечном есть закон жизни тренда.Это 8-10 новых шагов вперед.Далее коррекция тренда 4-5 шагов против тренда.Импульс из волнотеории это 3 шага вперед.Читаем про волны и не паримся с тестированием.
avatar

ezomm

ezomm, ну, не все разделяют фрактально-волновые закономерности. Это во-первых.
А во-вторых, даже предложенные Вами параметры и закономерности нужно как-то проверять, чтобы удостовериться в Вашей правоте и воздать Вашей прозорливости. А значит, опять нужно бэк-тестирование! Никуда не денешься. )))
avatar

Eugene Bright

Если вы не скальпируете — тиковые данные для вас бессмысленны.
Если у вас сделка продолжительностью от нескольких минут — изменения уровней OHLC в истории из за сдвига времени (даже значительного) биржи и брокера не имеют никакого значения.
При тестировании «нормальной» рабочей стратегии, на результатах теста это никак не скажется.
А вообще, понятно, если ТС показывает плохие результаты, то, разумеется, виновата история, а не ТС. Кто ж еще? Понятно — данные плохие, не те.
avatar

3Qu

3Qu, дело не в сдвиге времени, а в количестве «свечек»-«баров», допустим для наглядности, на графике. Каждый день мы видим этих «свечек»-«баров» не больше  вполне конкретного количества. Сколько там в QUIK'е отображается? 2000? 3000? А в MT4 и проч.? И так каждый день. Получается, как в задачке про бассейн, в который вливается и из которого выливается. А куда же «выливается» из графика остаток «свечек»-«баров»?..

И — нет, Вы спешите критиковать, а это контрпродуктивно. ТС не плоха, а очень даже хороша (100% годовых), и это лежит в основе моих рассуждений про тестирование. Но Ваш ход мыслей мне нравится! )))
avatar

Eugene Bright

Eugene Bright, 
А куда же «выливается» из графика остаток «свечек»-«баров»?..
В общем случае никуда не выливается, но к чему это всё?

avatar

Нувот Вчеранов

Нувот Вчеранов, да так, поболтать перед сном…
avatar

Eugene Bright

роботы, шмоботы. да помню. было.
романтика…
avatar

Kapeks

Kapeks, без романтики скучно! ))
avatar

Eugene Bright


теги блога Eugene Bright

....все тэги



2010-2020
UPDONW