Ethereum
Обучение

Как подбирать параметры стратегий

Обновлено
Как подобрать такие параметры стратегии, которые бы оказались хорошими (прибыльными и с низкой просадкой, т.е. хорошее соотношение доход/риск), так чтобы они были такими хорошими не только в прошлом на бэктесте, но еще и в будущем :) Какие это будут стратегии для текста этого тут не особо важно, но для примера я выбрал 2 скрипта стратегий, к которым тут много интереса у читателей, и которые на самом деле очень похожие друг на друга, если разобраться. Это скрипты RiskTurtle, по стратегии Turtle Ричарда Денниса, и скрипт RiskDonchian по стратегии Ричарда Дончяна (кстати, оба Ричарды они оказывается). По сути разница лишь в том что у RiskDonchian канал для закрытия позиции такой же длины, как и для открытия. А у RiskTurtle канал для закрытии позиции (стоп-лосса) короче и задается пользователем отдельно в параметрах.

Оверфиттинг

Объясняю всю проблему эту на пальцах, зато всем понятно будет. Допустим, мы будем бэктестить трейдинг на биткойн/доллар на дневном таймфрейме за всю доступную историю. У нас странная тупая стратегия покупать в начале суток (цена открытия дневной свечи) и закрывать позицию в конце суток (цена закрытия дневной свечи). Без шорта для простоты понимания. Так вот, в неделе 7 дней и по чисто случайным причинам так сложится что какой-то день недели окажется самым прибыльным по этой стратегии. Допустим это будет четверг (без разницы). Из этого мы легко можем сделать ложный вывод а-ля: выгоднее всего открывать лонг по четвергам на сутки.

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

Стандартные длины и таймфреймы

Чтобы уменьшить влияние оверфиттинга очень стоит искусственно самого себя ограничить. То есть длину параметра можно ставить не любую доступную, а только из некоего списка. Так же с таймфреймами. Я не случайно пишу про параметры длины и таймфрейма в одном абзаце. Потому что они сильно взаимосвязаны, и не сложно понять как. Например, длина простой скользящей средней (ну или канала Дончяна) 10 свечей на 4хчасовом таймфрейме будет равняться длине 40 свечей на 1-часовом таймфрейме. То есть в обоих вариантов период расчета индикатора будет составляться 40 часов. Несмотря на этом значения могут всё равно не мало отличаться. Почему же так?

Допустим у нас для примера скользящая средняя, которая считается по ценам закрытия свечей (то есть не OHLC4 как я люблю, а просто Close свечи). С периодом 40 на 1-часовом таймфрейме мы получим 40 чисел, из которых высчитывается среднее-арифметическое. Но при длине 10 свечей на 4х-часовом таймфрейме будет лишь 10 чисел. То есть остальные 30 чисел "выпадут из выборки" нашей. Получается что чем больше таймфрейм, тем меньше точность расчетов, раз уж мы теряем какие-то там числа. Но не совсем :)

При большем таймфрейме тут на TradingView нам дадут больше свечей для бэктеста. Таким образом, протестируем за больший срок, что точность расчетов увеличивает. Но из-за "выпадания чисел", точность расчетов будет снижаться. Так что палка о двух концах. Решение простое - тестировать оба варианта просто :) То есть посмотрим и на 4х-часовом с 10 свечками и на 1-часовом где 40 свечек. Нам надо такую стратегию, чтобы в обоих вариантах она оказалась прибыльной и с достаточно низкой просадкой.

Стандартные таймфреймы

1 час
4 часа
1 день
1 неделя
1 месяц


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

То есть, стратегия должна быть профитной и на 1-часовом, и на 4-часовом, при этом параметры будут отличаться (в идеале чтобы отличались как раз ровно в 4 раза). А если Ваша стратегия прибыльная только на 2-часовом, например, а для 1ч и 4ч подобрать параметры не удается - то скорее всего у Вас проблема с оверфиттингом. То есть случайно так совпало что на прошлом Ваша стратегия прибыльна, но в будущем - сильно вряд ли.

Стандартные длины

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

В идеале надо чтобы стратегия работала на неких стандартных длинных.

3 свечи
5 свечей
10 свечей
20 свечей
50 свечей
100 свечей
200 свечей
500 свечей
1000 свечей


И опять же, из-за того что сделки на 500 и 1000 свечей будут слишком уж редкие, их обычно уже не рассматривают, а рассматривают до 200. Самые популярные это обычно 20, 30, 50. Выше я не указал 30, ибо тут тоже нюанс.

Исключения для таймфреймов

Штука логичная и встречается часто. Не думали ли Вы почему для индикатора RSI стандартно ставят период 14 свечей? А есть еще популярный быстрый RSI, где ставят традиционно 7 свечей. Сам автор индикатора рекомендовал его использовать только на дневном таймфрейме. 7 это количество дней в неделе. Так складывается что значение индикатора за 7 дней на дневном таймфрейме более-менее совпадает со значением индикатора на недельном таймфрейме. То есть так они работают лучше.

Поэтому для дневного таймфрейма есть эдакие дополнительные стандартные длины:

7 свечей
14 свечей
30 свечей (дней в месяце, при условии что этот рынок не закрывается на выходные)


Тоже самое для более мелких таймфреймов:

6 свечей для 4х-часового ТФ (24 часа в сумме - сутки)
12 свечей для 4х часового
12 свечей для часового (полдня)
24 свечей для часового (догадайся сам уж)


То есть, для подбора параметров выбирают не любые длины, какие только возможно, а либо круглые (20, 50, 100), либо логичные, совпадающие с более старшими временными отрезками. Например 168 свечей на часовом это логичный - количество часов в неделе :) Если же стратегия работает только с параметрами, которые не являются ни круглыми ни логичными, то уже сильно подозрительно не оверфиттинг ли это.

Скопление удачных параметров

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

Например, так бэктест показал что стратегия лучше всего работает с периодом 10 свечей. Тогда есть смысл потестировать её с периодами близкими к 10 тоже, и они тоже должны оказаться очень прибыльными. Вот такой гипотетический пример, допустим на бэктесте мы получили такую доходноть:

8 свечей = профит +126%
9 свечей = профит +189%
10 свечей = профит +171%
11 свечей = профит +145%
12 свечей = профит +112%


То есть наибольшая доходность оказалась при 9 свечках, и чем дальше число от 9 - тем меньше доходность. Это очень хороший признак. А теперь приведу обратный пример, где уже плохой признак:

8 свечей = профит -48%
9 свечей = профит -68%
10 свечей = профит +478%
11 свечей = профит -77%
12 свечей = профит +875%

Как то так. То есть большой разброс результатов на ближайших числах. Нету эдакой "скучкованности" хороших результатов вокруг одного числа. Во втором примере вероятнее всего оверфиттинг, а в первом примере его вероятнее всего нет.

Похожие пары

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

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

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

Признаки высоконадёжной стратегии

1) Прибыльна на стандартных таймфреймах (1ч и 4ч), и на стандартных длинах (20, 50, 14, смотря какой ТФ еще)
2) Прибыльна на близких похожих рынках (в идеале на большинстве)
3) У прибыльных параметров если скопление эффективных параметров (ближайшие параметры отличаются на 1 и 2, и тоже прибыльные)

Здесь еще можно выделить некие косвенные признаки (стоит тоже), которые конкретно к бэктестингу уже не относятся:

1) Другие трейдеры это рекомендуют, используют, хвалят (исключая продавцов, который могут наврать)
2) Данная система изобретена и работает очень давно (долгоживучая, надежная)
3) Очень хорошо если кто-то по стратегии торговал и выложил мониторинг (ну это лучше слов то)

И еще можно добавить нюансы про психологический аспект

1) Лучше так стратегия в которую легче верится конкретно тебе (а люди разные)

Начиная торговать по системе скорее всего тебя ждёт неприятное испытание - просадка :) И для успеха её надо пережить. Чем меньше конкретно ты веришь что твоя стратегия рабочая и надежная, тем меньше вероятность что ты просто дотерпишь до выхода в плюс. А не плюнешь.

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

Похожие стратегии

Это намного сложнее для понимания. Но могу объяснить очень упрощенно на пальцах. Если выбранная нами стратегия и параметры к ней не случайность (не оверфиттинг), то мы логично ожидаем что оно же должно быть профитно и на похожих парах (типа если на лайткойн/доллар профитно, то на ЕОС/доллар тоже должно быть профитно) и на похожих параметрах (если с длиной 20 профитно, то с длиной 19 и 21 должно быть тоже профитно), то тот же принцип можно использовать и к похожим стратегиям. Которые делают тоже самое, но на каком то другом принципе. Я потому и выбрал тут для примера 2 стратегии RiskTurtle и RiskDonchian, которые очень похожие. Проще говоря, раз уж обе эти стратегии прибыльны, то менее вероятно что это совпадение. Я тут делал стратегии ZZ еще, их было 5 штук, все 5 стратегий работали на разных принципах и на абсолютно разных индикаторах, но каждая старалась применять один и тот же принцип.

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

Шорт?

И еще подсказка. Для если ты в принципе не собираешься шортить, то твоя стратегия должна иметь профитность по шорту на бэктесте тоже. То есть нельзя сказать "не важно насколько хорошо шортит стратегия, я же шортить не буду". Нет важно. Ведь если стратегия профитная только на лонгах, а на шорте сливает, то высока вероятность что стратегия даже вообще не эффективна, а профит получается просто за счет кредитного плеча и вечного роста рынка в долгосрочной перспективе. Так что стратегии с убыточным шортом на бэктесте сразу надо рассматривать как очень уж сомнительные штуки.
Заметка
Количество сделок на бэктесте

Тоже стоит добавить и про этот нюанс. Чем меньше сделок на бэктесте, тем более вероятно какое-то совпадение. Я вот для себя решил что сделок должно быть не менее 100 штук, чтобы хоть какие то выводы начинать делать. Разумеется, тут чем больше сделок бэктеста, тем лучше.

В некоторых источниках будут писать что надо минимум 1000 сделок, но... с криптой возникает проблема. Даже биткойн существует не так уж давно, и 1000 сделок может не получиться из-за того что не хватит истории. А альткойны существуют еще меньшее количество лет.

Я тут вижу обходной такой вариант. Тестирую биткойн/доллар и получаю 800 сделок, например, потом тестирую так же эфир/доллар и получаю 300 сделок :) В сумме это уже 1100 сделок :) Раз уж на одной паре 1000 сделок никак не получить. Зависит это и от стратегии, конечно, у них тоже очень разная частота сделок.
Beyond Technical AnalysisTechnical Indicators

Мои профили:

Отказ от ответственности