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

Если вы когда-либо разрабатывали алгоритмическую торговую стратегию, основанную на техническом анализе, вы, вероятно, задавались вопросом, как настроить параметры технических индикаторов. Что, если существует лучший период для RSI на EUR / USD, чем 14, который является значением по умолчанию? Что, если бы стратегия, основанная на пересечении скользящих средних, была бы более прибыльной, если бы быстрая скользящая средняя была немного быстрее или медленнее? И что еще более важно: как мне сказать?

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

Если вы не хотите опробовать каждую комбинацию параметров вручную (поверьте мне: вы не хотите), вам нужно либо знать кодирование, либо иметь приложение для автоматического тестирования на истории, которое позволяет вам запускать сотни тестов на истории и выбирать стратегию с наилучшими результатами. MetaTrader предлагает эту опцию, но есть проблема с такой оптимизацией, которая, скорее всего, приведет к чистым убыткам для пользователя, а не к прибыли, если он или она попытается торговать по оптимизированной стратегии. Это так называемая подгонка кривой, и ее стоит обсудить более подробно, поскольку она проявляется в различных формах при работе с алгоритмическими торговыми стратегиями.

Аппроксимация кривой

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

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

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

Надежная оптимизация с помощью ИИ

Можно ли как-нибудь решить вопрос с оптимизацией? Здесь помогают принципы машинного обучения, в частности, привычка разделять данные на обучающий набор и набор для тестирования. Это простой и важный принцип, гласящий, что результат некоторой алгоритмической оптимизации или обучения должен оцениваться на других данных, чем те, которые алгоритм использовал для обучения (в нашем случае: поиск лучших параметров). Только когда производительность данных тестирования почти такая же, как производительность данных обучения, мы можем сказать, что оптимизация является надежной. В нашем случае, например, это означало бы запустить оптимизацию параметров для цен EUR / USD в 2017 году, а затем посмотреть, как такая оптимизированная стратегия работала бы в 2018 году. кривая 2017 года, оптимизированная стратегия, вероятно, будет плохо работать в 2018 году.

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