Stanislav Gribanov
Stanislav Gribanov личный блог
Сегодня в 13:27

Перевод книги "Хакер фондового рынка". Все бэктесты лгут

Перевод книги "Хакер фондового рынка". Все бэктесты лгут
Ранее:
1. Предисловие.
2. Торговля деньгами.
3. Биржевая цена.
4. Золотоискатели и ломбарды.
5. Тики, бары, свечи.
6. Как работают торговые системы?
7. Технический анализ — смысл и бессмыслица.
8. Трехчасовой курс программирования.
9. Первый урок: Переменные.
10. Разновидность калькулятора.
11. Второй час: Функции. 
12. Функции с возвращаемым значением.
13. Третий час: ветвление.
14. Циклы.
15. Следуйте за тенденцией.
16. Торговля с помощью фильтра низких частот.
17. Покупка и продажа.
18. Тестирование стратегии.
19. Распределение прибыли.
20. Индекс подлости.
21. Измерение результативности.
22. Метод Монте-Карло.
23. Против тенденции.
24. Визуализация сигналов
25. Доминирующий цикл
26. Обучение параметрам
27. Оптимизация по методу Walk-forward
 

Все бэктесты лгут.

Итак, теперь вы разработали стратегию и видите огромную прибыль в 5-летнем тесте WFO. Откройте брокерский счет, запустите Zorro, нажмите [Trade] и подождите 5 лет — вы богаты. Или нет?

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

Вероятность того, что стратегия использует истинную неэффективность, зависит от того, как она была разработана и оптимизирована. Как мы уже видели, результаты бэктестов практически ничего не стоят, если они основаны на данных «in-sample» — тех же ценовых данных, которые использовались для обучения. Это всегда дает слишком оптимистичные результаты тестирования. Вы можете использовать различные кривые цен для обучения и тестирования с помощью WFO. Однако обычно вы выбираете стратегию именно из-за ее положительного теста WFO. Таким образом, косвенно ценовые данные «вне выборки» также попадают в стратегию и, строго говоря, уже неприемлемы для теста. Аналогичная проблема существует при рассмотрении нескольких активов и выборе наиболее прибыльного из них для определенной стратегии. Этот процесс отбора также искажает результат. Поэтому в реальных условиях результат бэктеста никогда не бывает абсолютно надежным. Любой бэктест лжет — вопрос лишь в том, в какой степени он это делает.

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

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

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

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

Психологический эффект. Торговый алгоритм знает некоторые аспекты будущего в бэктесте. Это часто встречается в опубликованных системах, где прибыль определялась путем моделирования торговли в R, Excel или с помощью самописных программ. Такие симуляции удивительно часто имеют эффект ясновидения из-за небольших ошибок программирования, на которых затем естественным образом основывается прибыль стратегии. Еще один эффект ясновидения возникает благодаря тому, что определенные параметры — например, оптимальные размеры лотов для сделок — рассчитываются на основе результатов бэктеста, а затем снова проверяются бэктестом.

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

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

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

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

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

Продолжение следует...

0 Комментариев

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

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