В этой статье я пытаюсь раскрыть две темы: улучшение результатов торговых стратегий при помощи метода диверсификации, а так же показываю способ как на TradingView можно протестировать торговую систему на нескольких парах одновременно (но это будет понятно/интересно только программистам).
Диверсификация улучшает всё
Очень часто о диверсификации думают/пишут так как будто бы диверсификация полезна только лишь для снижения риска. Что в корне не верно. Не забывайте что риск и прибыль идут рука об руку. Если вы можете снизить риск (просадку) вдвое, то вы так же сможете тогда увеличить кредитное плечо тоже в двое. Если вы это сделаете, то просадка останется настолько же глубокой, что была ранее, однако прибыль то увеличится. Таким образом, вы можете сами выбирать что улучшить: увеличить прибыль, или уменьшить просадку. А так же можно тонко настроить под свои цели вплоть до сотых долей процента. Вполне можно одновременно и прибыль увеличить и просадку уменьшить.
Мера риска
Этот нюанс большинство уже не понимают. Оценивать риск только размером максимальной просадки было бы неверно. Я так же добавил в скрипте отображение максимального срока просадки в количестве баров (свечей). Если выбран дневной таймфрейм, то количество баров просадки отображает максимальное количество дней, которое счет был "в минусе". При этом в минусе не относительного стартового депозита, а относительно максимальной суммы, которая была на счете. Более научно говоря, отображается срок абсолютной просадки в барах, а не срок относительной просадки. Так лучше, потому что деньги будут вложены в какую-то рандомную дату в будущем, а не в дату начала бэктеста. Думаю должно быть очевидно что чем меньше срок просадки, тем менее рискованная такая то стратегия. То есть мы измеряем риск не только размером просадки, но еще и сроком просадки, для большей надежности такой оценки.
Стратегия
Для примера я взял стратегию ценовых каналов Дончяна, так как она простая для понимания всеми и простая для кодинга. Стратегия была опубликована в далёком 1971-ом году и до сих пор отлично работает, в том числе и на криптовалютах. Тестировать будем с дефолтными настройками стратегии (дневной таймфрейм и период 20 баров - 20 дней), как и предлагал Ричард Дончян. Пары возмем топ 5 по капитализации криптовалют, исключая стейблкойны. Топ 5 на текущую дату. Биржа Binance.com. В настройках можно менять, кстати.
Скрипт
Так как оформить это всё в виде скрипта стратегии оказалось невозможно (и не нужно еще), то всё сделано как скрипт индикатора. Да, индикатор тоже может делать бэктест, и будем считать это недокументированной возможностью TradingView :) Да и вообще я там нагородил большой велосипед. А потому что иначе было никак это не сделать. Скрипт с открытым исходным кодом на пятой версии языка PineScript, и на этот раз приватный (т.е. по ссылке вы его увидите, но без ссылки его не получить). Я старался написать понятно, разбил код на блоки и добавил комментарии, но скажу что код всё равно получился довольно сложным для понимания. Да и велосипед делался тоже не простой.
Что показывает
Синяя линия индикатора показывает доходность стратегии с учётом выбранной юзером комиссии. Комиссию приходится делать отдельным параметром, так как, напомню, это скрипт индикатора, а не скрипт стратегии. Красная линия показывает размер максимальной просадки. Справа появляется надпись, она показывает конечную доходность, максимальную просадку, и максимальный срок просадки в барах (в днях если выбран дневной таймфрейм).
Тестируем по одной паре
Сначала протестируем только одну пару, что получится. Тестирую с дефолтными настройками скрипта (те что рекомендовал Ричард Дончян овер 50 лет назад), а именно: дневной таймфрейм, период 20 свечей (20 дней), комиссия за сделки 0,1%.
Максимально длительная просадка, срок: - Binance.com SPOT BTC/USDT: 391 день - Binance.com SPOT ETH/USDT: 251 день - Binance.com SPOT BNB/USDT: 654 дня - Binance.com SPOT XRP/USDT: 518 дней - Binance.com SPOT ADA/USDT: 395 дней Средний срок: 442 дня
Итак, если торговать только BTC по этой стратегии, то рано или поздно обязательно улетишь в просадку на сроком более одного года (а у BNB даже почти 2 года вышло). Хотелось бы сократить этот срок, при этом уменьшить размер просадки, при этом увеличить доходность, и всё это не закатывая губы.
Тестируем по несколько пар
Одна пара это BTC/USDT, две пары это предыдущая пара и ETH/USDT. Три пары это предыдущие две и BNB/USDT. Ну и так далее. То есть тест пяти пар это тест пар из топ-5 по капитализации, надеюсь понятно. Наверху одна пара (только биток), самая нижняя - пять пар.
С двумя парами профит стал больше просто потому что эфир более волатильный. То что эфир больше подорожал чем биток за период теста тут не имеет значаения, так как в стратегии используется и шорт тоже. С тремя парами профит больше, потому что BNB еще более волатильный. Добавляя четвертую пару XRP профит снизился, так как монету мало трясло в этот период.
Удивительное совпадение, профит при торговле на пяти парах почти полностью совпал со средним профитом, и это именно совпадение. Итак, торгуя пять пар мы не уменьшим профит (что и ожидалось), получится +8.564% вместо среднего +8.563%. Напомню что профит можно увеличить за счет увелечения кредитного плеча, а для этого желательно сначала уменьшить просадку.
Что и ожидалось, каждый раз добавляя новую пару в торговлю максимальный размер просадки уменьшается. Чем больше пар - тем меньше максимальная просадка. Вообще то иногда добавляя новую пару максимальная просадка может увеличится, так как имеется еще и погрешность. Но в среднем это правило будет работать, то есть добавляя еще одну пару в систему ты более вероятно снизишь просадку, и менее вероятно увеличишь её. По логике вещей при диверсификации именно так и должно быть. Дело в том что максимальная просадка на одной паре более вероятно будет в другой день, не в тот же день, в который была максимальная просадка на другой паре. То есть, от диверсификация максимальная просадка как бы "размазывается по времени", а не концентрируется на один день.
Средняя просадка у пар была -62%, но за счет диверсификации мы её уменьшили до -24%. Ну как бы не плохо так :)
Сроки просадки: - 1 пара: 391 день - 2 пары: 197 дней - 3 пары: 219 дней - 4 пары: 220 дней - 5 пар: 246 дней
В среднем срок просадки у этих пяти пар достигает 442 дня. Это если мы их торгуем по одной, без диверсификации. Если же мы будем торговать все пять пар параллельно по 20% капитала на каждую пару, то есть задействуем диверсификацию, то максимальный срок просадки сокращается уже до 246 дней. Что и следовало ожидать.
Снижение эффекта
К сожалению полезный эффект от диверсификации с ростом количества активов (или пар) - уменьшается. То есть каждый раз добавляя новую пару полезный эффект будет все меньше и меньше. То есть диверсификации на 100 пар одновременно лишь чуть-чуть лучше чем диверфикация на 50 пар и не стоит гимора.
Ну и выводы
Диверсификация позволяет уменьшить размер максимальной просадки и уменьшить максимальный срок абсолютной просадки, а значит гарантированно уменьшит меру риска. Это не является случайным совпадением, а вполне логично и объяснимо, ибо "не клади все яйца в одну корзину". При этом диверсификация не уменьшит прибыль. Но может увеличить.
Трейдер может как бы "конвертировать" понижение риска в профит. Если вдвое уменьшил просадку, то можешь вдвое увеличить плечо, а значит и прибыль. Сам выбираешь что тебе нужнее, уменьшить просадку или увеличить профит.