Eugene Bright
Eugene Bright личный блог
07 октября 2020, 13:11

Бэк-тесты всегда мешают плохому танцору.

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

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

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

    В качестве романтического отступления, предлагаю вспомнить (тем, кто когда-то знал, но забыл) или изучить заново (тем, кто не знал да еще и забыл) басню И.И.Крылова «Лисица и виноград» (ретивым «знайкам» она известна как басня Эзопа или Лафонтена). Тем, кому некогда расширять свой кругозор, буквально в трех словах изложу смысл басни: Не получив ожидаемой выгоды, человеку свойственно обвинять в этом обстоятельства, а не собственную несостоятельность.

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

 

  Первый и, как кажется на первый взгляд, неубийственный аргумент — это тезис о ликвидности, а именно отсутствие нужного объема по нужной цене. Это — проблема, прежде всего, спекулянтов-опционщиков, ибо спреды в стаканах измеряются не долями и не единицами, а десятками процентов, которые очень хочется скорее положить в карман своего депо-счета! Какой сладкий «виноград»! И, главное, вот он, рядом, только руку протяни… Ан, нетушки, дудки! Смотрит такой «трейдер» на свой бэктест, где программа его «затарила» по сладкой цене и «разгрузила» по еще более вкусной, а «в реале» попандос за попандосом, и понимает, что всех волосёшек на всем его хилом тельце не хватит для выражения постигшей его, такого умного и отважного бойца, трагедии.

  Жалко «бойца»! Хотя никто не заставлял его с голым задом на танк бросаться  (наоборот, все ветераны советуют бросить это занятие и «пойти заняться своим прямым делом» (проф.Преображенский)), но всё равно жалко человека. Да и надежда есть, что, хотя он еще молод и неопытен, но, тем не менее, имеет потенциал.

  Так вот, в качестве первого совета: прежде, чем «заряжать» бэктест на обработку данных, объясните ему, этому тупому бэктесту (не Вам же!), что (как вариант) нужный для реализации торговый объем можно собрать в стакане только в интервале(!) цен, а не по одной конкретной цене. Посмотрите, каков средний объем прошел по всем «свечам» (или, как меня тут ехидно «укололи», «по барам») за исторический анализируемый период, и каков был при этом средний ценовой интервал (от High до Low). Вполне возможно, что после этого вашу торговую систему нужно будет капитально пересмотреть.

                Отступление: в квантовой физике есть такое правило — принцип Гейзенберга, гласящее, что «мы никогда не сможем одновременно   определить энергию и координаты квантового объекта», а потому вынуждены использовать некие средние отклонения (интервалы) значений. Применительно к нашей материи это означает: никогда не стройте свою стратегию из расчета «хочу купить/продать конкретный объем по конкретной цене». Грамотный подход: «готов заплатить за нужный мне объем средним разбросом цен от Low до High».

  Я знаю точно, что по торгуемым мной инструментам для «затаривания» нужного объема мне достаточно установить проскальзывание в размере 0,2% (изредка — 0,5%). При таком подходе результаты моих бэк-тестов очень мало разнятся с «боевыми» результатами. Что обеспечивает высокую надежность и предсказуемость моей торговой системы.

  На этом пока остановлюсь, дабы не отрывать моих читателей от насущных задач биржевых спекуляций.
  Если развитие данной темы представляет интерес, прошу уважаемой аудитории обозначить этот интерес. Обещаю продолжить.

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

  зы: Лучше всего — пишите программы бэктестирования сами!
  ззы: насчет моего опыта прошу не беспокоиться, ибо имел расчетные фирмы на МТБ, на «Гермесе», РТСБ еще в те времена, когда многие здешние «оппоненты» еще и в проекте не состояли. )))

 

21 Комментарий
  • О'Грин
    07 октября 2020, 13:27
     ззы: насчет моего опыта прошу не беспокоиться, ибо имел расчетные фирмы на МТБ, на «Гермесе», РТСБ еще в те времена, когда многие здешние «оппоненты» еще и в проекте не состояли.
     Надеюсь, данный пост был написан с борта своей яхты, пришвартованной в Монте-Карло? 
      • О'Грин
        07 октября 2020, 14:04
        Eugene Bright, В таком случае — поздравляю и желаю дальнейшего профита уже на не утлую «лодчонку»! )))
  • Дмитрий Овчинников
    07 октября 2020, 14:01
    Не хватает картинки эквити с бекстеста в стиле «Туземун». 
  • Replikant_mih
    07 октября 2020, 17:07
    Да, тоже часто встречаюсь с разными заблуждениями по поводу бэктестов, но мой фаворит — это все про переподгонку).
      • Replikant_mih
        07 октября 2020, 17:17
        Eugene Bright, Не, я, вроде, про другую подгонку). Про ту, которая оверфиттинг, переоптимизация — другими словами ситуация когда трейдер неверно проанализировал результаты тестировал, недостаточно внимания уделил вычленению закономерности и как следствие имеет неверные ожидания по поводу будущих результатов торговли (читай: выбрал из бэктестов один хороший и ожидает, что результаты в будущем будут соответствовать результатам в прошлом).
  • u-gyn
    07 октября 2020, 20:18
    Насколько правильно при тестировании закладываться на покупку по самой высокой цене свечи при покупке и продажу по самой низкой цене свечи при продаже для лонга? Для шорта, соответственно, наоборот.
    В этом случае реальные результаты должны быть лучше.
  • u-gyn
    07 октября 2020, 20:44
    т.е. я использую правильный подход для тестирования. просто только начинаю тестировать свою первую в жизни ТС.
      • u-gyn
        07 октября 2020, 20:58
        Eugene Bright, спасибо
  • ol123
    08 октября 2020, 07:17
    Одна из проблем бек тестирования например какого нибудь паттерна это то что не ты ищешь паттерн а машина. И даже если все хорошо то реале ты будешь путаться ищя паттерн на графике. Вывод один нужно самому бар за баром тестировать и находить паттерн.
  • Андрей Починчук
    09 октября 2020, 16:54
    Каждая система, как бы хороша она не была, подчинена рынку. И при изменении рынка система начинает давать сбой и её приходится оптимизировать под сегодняшний рынок.
    И самое главное, это найти это окно оптимизации (его размер) и период торговли, когда система работает. Например месяц оптимизации, две недели торгов. После двух недель торгов, мы вновь оптимизируем систему в окне месяц, со сдвигом на две прошлые недели торгов, и вновь запускаем её в торги на две недели. Такой метод ещё называется Wolk Forward. И это очень большой труд, что бы найти такое соотношение оптимизация/форвард, что бы соотношение по прибыли из хотя бы 20 прогонов было 50/50
  • ezomm
    29 октября 2020, 18:16
    Грамотный подход: «готов заплатить за нужный мне объем средним разбросом цен от Low до High».Не только за объем, но и прибыль также усредняется .+

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

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