Предыдущий мой пост был призван помочь понять и осознать роль и место бэктестирования в практике трейдинга. Ну, и заодно — намекнуть на корректные правила использования тестирования исторических данных.
Нужно понять, что
бэк-тестирование — это численный эксперимент, который не только так красиво называется, но и требует к себе уважительного отношения. Ну, и некоторого количества ума и трудолюбия.
Однако, как и следовало бы ожидать, некоторые не особо восхваляемые в приличном обществе личные качества комментаторов не дали этим «коллегам» возможности разглядеть предложенные возможности.
Какие контраргументы предложили «коллеги» против бэк-тестирования?
Увы, самые замшелые и незамысловатые, как-то:
- бэк-тесты не учитывают уровни ликвидности;
- сигналы на бэктестах не могут реализоваться в «боевых» условиях, потому что «рынок живой» (что это такое — каждый понимает по-своему);
- бэк-тесты не учитывают разных аварий на линии коммуникаций или сбоев торгового ПО;
- в реальности торговый алгоритм выдает одновременно 2 (!) торговых сигнала, робот-скотина «не фильтрует», а на бэк-тестах такого почему-то не бывает;
- колл-бэки «в реале» не отвечают так, как хотелось бы;
- бэк-тестирование — это удел презренных теоретиков и необстрелянных «окопников», никогда не бывавших в настоящем бою.
Ну, и, естественно, еще многая многа чего невысказанного… Смысл только один: «все бэк-тесты — козлы, я один — Д'Артаньян».
В качестве романтического отступления, предлагаю вспомнить (тем, кто когда-то знал, но забыл) или изучить заново (тем, кто не знал да еще и забыл) басню И.И.Крылова «Лисица и виноград» (ретивым «знайкам» она известна как басня Эзопа или Лафонтена). Тем, кому некогда расширять свой кругозор, буквально в трех словах изложу смысл басни:
Не получив ожидаемой выгоды, человеку свойственно обвинять в этом обстоятельства, а не собственную несостоятельность.
Ну, а теперь предлагаю «пробежаться» по порядку по изложенным выше претензиям к бэктестам.
Первый и, как кажется на первый взгляд, неубийственный аргумент — это
тезис о ликвидности, а именно отсутствие нужного объема по нужной цене. Это — проблема, прежде всего, спекулянтов-опционщиков, ибо спреды в стаканах измеряются не долями и не единицами, а десятками процентов, которые очень хочется скорее положить в карман своего депо-счета! Какой сладкий «виноград»! И, главное, вот он, рядом, только руку протяни… Ан, нетушки, дудки! Смотрит такой «трейдер» на свой бэктест, где программа его «затарила» по сладкой цене и «разгрузила» по еще более вкусной, а «в реале» попандос за попандосом, и понимает, что всех волосёшек на всем его хилом тельце не хватит для выражения постигшей его, такого умного и отважного бойца, трагедии.
Жалко «бойца»! Хотя никто не заставлял его с голым задом на танк бросаться (наоборот, все ветераны советуют бросить это занятие и
«пойти заняться своим прямым делом» (проф.Преображенский)), но всё равно жалко человека. Да и надежда есть, что, хотя он еще молод и неопытен, но, тем не менее, имеет потенциал.
Так вот,
в качестве первого совета: прежде, чем «заряжать» бэктест на обработку данных, объясните ему, этому тупому бэктесту (не Вам же!), что (как вариант) нужный для реализации торговый объем можно собрать в стакане только в интервале(!) цен, а не по одной конкретной цене. Посмотрите, каков средний объем прошел по всем «свечам» (или, как меня тут ехидно «укололи», «по барам») за исторический анализируемый период, и каков был при этом средний ценовой интервал (от High до Low). Вполне возможно, что после этого вашу торговую систему нужно будет капитально пересмотреть.
Отступление: в квантовой физике есть такое правило — принцип Гейзенберга, гласящее, что «мы никогда не сможем одновременно определить энергию и координаты квантового объекта», а потому вынуждены использовать некие средние отклонения (интервалы) значений. Применительно к нашей материи это означает: никогда не стройте свою стратегию из расчета «хочу купить/продать конкретный объем по конкретной цене». Грамотный подход: «готов заплатить за нужный мне объем средним разбросом цен от Low до High».
Я знаю точно, что по торгуемым мной инструментам для «затаривания» нужного объема мне достаточно установить проскальзывание в размере 0,2% (изредка — 0,5%). При таком подходе результаты моих бэк-тестов очень мало разнятся с «боевыми» результатами. Что обеспечивает высокую надежность и предсказуемость моей торговой системы.
На этом пока остановлюсь, дабы не отрывать моих читателей от насущных задач биржевых спекуляций.
Если развитие данной темы представляет интерес, прошу уважаемой аудитории обозначить этот интерес. Обещаю продолжить.
С уважением и наилучшими пожеланиями...
зы: Лучше всего — пишите программы бэктестирования сами!
ззы: насчет моего опыта прошу не беспокоиться, ибо имел расчетные фирмы на МТБ, на «Гермесе», РТСБ еще в те времена, когда многие здешние «оппоненты» еще и в проекте не состояли. )))
В этом случае реальные результаты должны быть лучше.