Бэктестинг — полная чушь и подгонка под кривую?

/Бэктестинг — определение эффективности чего-либо на основе анализа статистики за прошедшие периоды времени./

Текст собран на основе форумской дискуссии.

Бэктестинг – это полная хрень и подгонка под кривую. Лучшее тестирование – живой рынок и форвардное тестирование, все остальное – полная хрень.

——

К чему такие резкие слова? К чему этот гнев? Вы говорите, что являетесь успешным внутридневным трейдером. Рад за вас! Придерживайтесь своей стратегии. Но я не вижу причин излагать вещи так, как это делаете вы.

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

Игнорировать эти шаги – вот что я называю «неблагоразумным» (если не использовать ваш язык).

——

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

——

Давайте рассмотрим «систему», которая каждый день свершает покупку в 10:00. Вы учитываете комиссии и проскальзывание в параметрах системы, устанавливая их по крайней мере в 1.5 раза больше, чем есть в действительности (предположим, вы знаете ликвидность и другие основные параметры рынка, на котором торгуете). Пожалуйста, скажите, где в этом случае подгонка под кривую?

——

Я категорически не согласен. То же самое можно сказать про любое предприятие – участники имеют различные степени мастерства. Подгонка кривой является проблемой, прежде всего, если бэктест/оптимизация не выполнены должным образом.

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

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

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

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

——

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

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

Однако я уверен, что в своей обычной жизни вы доверяете анализу Фурье и ему аналогичным. С рынками все по-другому, так как мы можем думать о данных, производимых нестабильными процессами; и все же, по-моему, бэктестинг – единственный метод, который не требует больших усилий, и это означает, что мы должны экспериментировать с нашими идеями. Если все сделано критически, это может предоставить нам большое количество информации и, прежде всего, указать пределы нашего мыслительного процесса и наших предположений.

Теперь, давайте предположим, что бэктестинг абсолютно ненадежен (в 50% случаях, иначе это дало бы своего рода преимущество). Что вы предложили бы в этом случае?

——

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

Бэктестинг можно неправильно эксплуатировать, его следует использовать для тестирования предположений, а не просто гонять, пока вы что-нибудь не найдете. Вы хотите увидеть, что ваше предположение работает как ожидалось в бэктесте, а не просто делает деньги. Если у вас есть склонность к предположениям, и вы выигрываете 80% своих сделок более чем за 10 лет, это меня взволновало бы.

Ключ к построению системы – использовать научный метод для ее развития и проверки.

——

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

Я отношусь скептически и возмущаюсь теми продавцами, которые всегда говорят, что проводят бэктестинг своей системы. Я отвечаю им то же самое – что не верю в бэктестинг, и говорю делать форвардное тестирование или даже живое моделирование чтобы был виден результат. Большинство автоматизированных систем в интернете рекламируется с помощью бэктестинга, так что гипотетически это означает, что система не выполнялась в реальной ситуации и большинство людей не знает о недостатках бэктестинга, а система является заведомо ложным продуктом. Я пытаюсь защитить тех наивных покупателей автоматизированных систем, и советую до покупки все разузнать. Удостоверьтесь, что те продавцы являются трейдерами, а не просто продавцами или исследователями, которые не торгуют на реальном живом рынке. Затем попросите для проверки их торговый стейтмент, большинство его даже не имеет. Конечно, есть немного людей, у которых все с этим хорошо, и я могу рекомендовать вам их. Так что если хотите, то дайте мне знать.

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

——

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

——

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

Предположим, что большое число альтернативных систем, каждая со своей комбинацией логики и значений параметров, было проверено (бэктестированием, если хотите) по некоторым историческим данным. Возьмем для обсуждения 2000-2006 годы и назовем данные за этот период тренировочными. Выберем лучшие из них, используя объективную функцию на ваш выбор, протестируем за 2007 год и запишем результаты (назовем их проверочными данными). Передвинем диапазон дат на год вперед: 2001-2007, протестируем все комбинации, выберем лучшие, протестируем их за 2008 год и запишем результаты. Продолжим сдвигать диапазон дат. Если объединенные результаты из проверочных периодов удовлетворительные, то будем считаем это торговой системой.

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

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

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

——

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

Ключ ко всему – уверенность. Если один раз за короткое время провести даже простой бэктест, этого будет на какое-то достаточно для валидации логики при определенных условиях рынка. Иногда (как правило) обширное тестирование просто не оправдывает себя; больше тестов не сделают стратегию лучше. Другими словами, независимо от подхода к тестированию, это всего лишь метод для увеличения вашей уверенности в том, что ваша стратегия не будет работать; редко бывает по-другому.

——

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

——

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

Источник:

Backtesting is BS and curve fitted. the best testing is live market and secondly forward testing. any other is BS

Комментарии:

mehanizator: Надо что-ли про форвардное тестирование и кросс-валидацию статью написать, вижу люди почему-то шугаются кросс-валидации в пользу форвардного тестирования, на мой взгляд незаслуженно.

Intro: Как много букв

Intro: А зачем ты некропост поднял?

mehanizator: каким образом он перестал быть актуальным?

Intro: никаким, я этого не говорил

mehanizator: ну а чем не потерявший актуальности старый материал, который никто уже не помнит, отличается от нового? 🙂

Intro: А лет через пять просто зациклить все статьи на выброс линков и всплытие в основной ленте =) Хитро, хитро!


Подпишитесь на уведомления о новых постах

И получите доступ к специальным материалам сайта