Распространенные ошибки которых следует избегать при тестировании на истории для точного измерения результатов

Распространенные ошибки, которых следует избегать при тестировании на исторических данных для точного измерения результатов.

Бэктест сам по себе не является инструментом разработки, его цель не в том, чтобы увидеть, насколько большой кривой капитала вы можете добиться. ХОРОШИЙ бэктест должен указывать на то, насколько точно он отражает торговлю в реальном времени, а не на то, насколько «хорошо» выглядит система..

В этом блоге мы рассмотрим:

Построение бэктестов.

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

Этот момент определенно определит последние несколько часов, потраченных на работу над этим, и может даже изменить ваше будущее с помощью достаточно хорошей кривой — прямая, зеленая, восходящая линия принесет истинную радость, в то время как прерывистая черная / красная линия может сдуть ваш воздух. самооценка. Скажем, для этого примера, ваши результаты представляют собой гигантскую квадратичную кривую, идущую вверх, которая просто не останавливается..

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

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

Комиссии, осложнения и подробности.

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

Проскальзывание может быть немного сложнее, но обычная оценка для фьючерсов составляет 12,50 долларов с каждой стороны для рыночных ордеров, и я думаю, что я использую 0,02–0,10 с каждой стороны для акций / ETF. Обычно я считаю, что это довольно высокая оценка, но важно смоделировать ее на основе истории выполнения. .

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

Не все инструменты здесь равны, поэтому, если вы найдете ES (EMini S&Фьючерсный контракт P 500) имеет проскальзывание около 12,50, это не означает, что KC (фьючерсный контракт на кофе) также будет иметь около 10 долларов — я видел, как сделки KC заполнялись на 40 долларов в неликвидные интервалы. Помните об инструментах, на которых вы тестируете, и самый простой способ сделать это — сравнить отчеты в реальном времени с отчетами симулятора. Это того стоит..

Логика стратегии.

Итак, как только проскальзывание и комиссия были либо точно, либо консервативно (оценены на ВЫСОКОМ конце) включены в ваш бэктест, давайте углубимся в фактическую логику стратегии. Есть несколько компонентов, которые могут быть действительно эффективными в реальной жизни, но также могут давать невероятные результаты тестирования на исторических данных — одна из таких вещей — процентный скользящий стоп..

Во многих системах тестирования на исторических данных (TradeStation, NT8, TradingView) по умолчанию выполняется тестирование на основе столбцов, а не внутри столбцов. Это означает, что длинный вход будет просто смотреть на значения OHLC, чтобы определить, был ли выполнен ваш трейлстоп — AKA он будет искать значение High — Close, которое больше, чем ваш% трейлинга..

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

При тестировании на истории движки будут предполагать, что зеленые столбцы были одним восходящим движением, а не совокупностью множества небольших восходящих движений с откатами назад. Все, что вам нужно сделать, это сравнить любой 30-месячный график с 1-минутным графиком того же интервала — в середине есть много движений, которые могут очень хорошо вызвать ваш скользящий стоп-лосс (и, вероятно, будут жить)..

Итак, как мы можем бороться с этим предвзятым отношением к тестированию (ретроспективе) большинства движков тестирования? Посмотрим.

Борьба с предвзятостью при тестировании на истории.

В TradeStation / Multicharts вы можете включить внутриполосное бэктестирование (или линейную лупу в MC) в свойствах (и установить разрешение в минуту, секунду или тик), что должно дать вам гораздо лучшее представление о том, как будет работать ваша система. выполнять. Это займет больше времени, но это гораздо точнее.

Если для этого нет доступных настроек, как в Python, вы можете запустить 2 набора данных. Один в качестве сигнального интервала, например, 30 миллионов полосок — для обозначения входов; Другой — для отслеживания процентных остановок, например тиковой, 30-секундной или 1-миллионной полосы..

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

Если вы не можете реализовать меньшую полосу интервала (возможно, нет доступных 1-миллионных или секундных полос или данных), тогда вы можете реализовать фиксированное целевое значение вместо вашего Trail Stop, чтобы дать вам оценку наихудшего случая. значение заполнения.

Я обнаружил, что это определенно хуже, чем трейл-стоп, но не совсем необоснованная оценка ваших прибыльных сделок. Примером может быть замена или просто объединение трейл-стопа + 100 долларов США с фиксированной целью 90–120 долларов..

Постарайтесь быть честным с самим собой в отношении того, где вы обычно останавливаетесь. Это также можно сделать, используя Trail Stop за 100 долларов США и, возможно, фиксированную цель в 150 долларов, что ограничивает ваш потенциал роста, который компьютер может создать на основе предположений..

Контрольный список для тестирования.

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

Вход и выход в пределах одного бара Выходные / ночь перенос (+ удача) Небольшой размер выборки (Включите не менее 100 сделок и как можно больше режимов) Пенни-акции / Неликвидные имена Universe включает в себя ETF с кредитным плечом / Вселенная ETN включает избыточные символы (QQQ и TQQQ )

Заключение.

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

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

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

Примечание редактора: QuantInsti уважает выбор и предпочтения автора, но мы никоим образом не одобряем, не поддерживаем и не предлагаем какие-либо бренды в этой статье. Взгляды полностью принадлежат автору. Мы предпочитаем и продвигаем использование Python для количественной торговли.

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

Похожие статьи