Как заработать (не)много денег на цветмете (с бэктестами!) » Элитный трейдер
Элитный трейдер


Как заработать (не)много денег на цветмете (с бэктестами!)

15 сентября 2020 smart-lab.ru
Как заработать (не)много денег на цветмете (с бэктестами!)


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



М-да, целых 3 дня со сделками по крайней мере с начала 2019 года. Торговля трупами из морга была бы гораздо более активная и ликвидная, а тут — даже не знаешь, что можно забэктестить по трем торговым дням за 1.5 года. Ок, значит для бэктеста по данным МосБиржи ловить нечего. Также, при такой «активной» расторговке контрактов, как выше, становится очевидным, что стратегии внутридневной торговли использовать не получится, потому что спрэды велики, и маркет-мейкер с нами может внутри дня вдоволь наиграться. Поэтому только старая добрая среднесрочная торговля (с удержанием позиции в среднем в течение нескольких дней), для тестирования которой на истории нам вполне хватит дневных баров (предполагаем, что будем везде заходить в районе клоуза).

Зайдем на Quandl и качнем данные оттуда — например, по той же меди дневные данные есть ажно с 1959 года (!!!):



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

Отлично, теперь, без лишнего трепа, перейдем к стратегиям.

Но сначала еще немного трепа. Везде ниже с целью контроля риска и более корректного сравнения стратегий друг с другом я рутинно таргечу волатильность к одному и тому же значению 50% годовых. Кому-то это может показаться много, но мы куль-трейдеры или кто? Дополнительно, чтобы в периоды низкой волатильности не брать на себя много «глупого» риска и не сливать потом много при скачках волатильности — везде в бэктестах установлено «жесткое» ограничение на плечо в размере 3 (то есть вы не можете брать на счет позиций номиналом больше, чем 3 x (размер вашего депо)). Ок,

Стратегия 0. Buy & Hold

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



{'cagr': -0.0222, 'sharpe': 0.211, 'mdd': 0.903}


Среднегодовой ретурн с учетом компаундинга (CAGR) -2.2%, коэффициент Шарпа 0.2 (среднегодовой ретурн / волатильность) и максимальная просадка 90.3%. Да, тупо держать медь с плечом (а для достижения таргетовой волатильности 50% годовых он держит ее с плечом до 3) — занятие не для слабонервных. Не для слабонервных идиотов — отрицательный ожидаемый ретурн с неплохой возможностью обнуления по дороге. Посмотрим, можем ли мы добиться большего.

Стратегия 1. Внутригодовая сезонность

Цены на медь считаются самым быстрым индикатором ожиданий относительно будущего роста мировой экономики: цены падают, когда ожидается замедление роста мировой экономики, и растут — когда ожидается ускорение роста (или положительное изменение относительно предыдущих прогнозов). В этом медь чем-то схожа с фондовыми рынками. Поэтому можно предположить, что внутригодовые паттерны цен на медь должны быть схожи с таковыми для фондовых индексов. Посчитаем t-статистики для тестирования гипотезы о том, что ретурны отличны от 0, для разных месяцев года:

1 0.38
2 1.37
3 0.46
4 0.53
5 -0.12
6 0.41
7 1.13
8 -0.48
9 -0.20
10 -0.35
11 0.51
12 -0.01

Видим, что действительно — паттерны ровно те же, что и для финансовых рынков, старая мудрость Wall Street «Sell in May and go away» работает и для меди: начиная с 5-го месяца (Мая) t-статистики все чаще уходят в минус, и держать медь становится невыгодым. Попробуем не торговать в месяцы с отрицательной t-статистикой (5, 8, 9, 10):



{'cagr': 0.0748, 'sharpe': 0.387, 'mdd': 0.801}


М-да, результаты все равно не очень — научились зарабатывать в плюс (7.5% годовых), но очень неустойчиво, и все равно с чудовищной просадкой, которую далеко не каждый выдержит (80%). Можем ли мы сделать лучше?

Стратегия 2. Внутринедельная сезонность

Если мы нашли некоторое сходство цен на медь с equity индексами, и знаем, что СнП в среднем в понедельник слабо растет или сливает — почему бы не посмотреть внутринедельную сезонность и для меди? Снова глянем на наши t-статистики, но уже по дням недели:

1 -1.10
2 0.29
3 0.90
4 1.05
5 2.32

Voi-la! И здесь медь ведет себя практически в точности как СнП: сливает по понедельникам, дальше начинает слабо зарабатывать, и, наконец, в пятницу обеспечивает устойчивый положительный ретурн, значимо отличный от нуля по крайней мере на 95%-ном уровне значимости. Попробуем в дополнение к предыдущим правилам (не торговать медью в мае, и с августа по октябрь), также не держать медь по понедельникам и вторникам. Какие результаты нам это даст?



{'cagr': 0.1366, 'sharpe': 0.569, 'mdd': 0.676}


Не идеально, но это уже что-то — 13.7% годовых, с шарпом > 0.5 и максимальной просадкой в пределах 70%. Окей гугл, это уже похоже по долгосрочному перформансу на наш любимый S&P (но зарабатывает в 2008-м, кстати), что мы можем еще предложить?

Стратегия 3. Технический анализ

Warning!!! Во избежание подрывов пятых точек адептов фундаментального анализа просим дальше не читать!!!

Для всех остальных — посмотрим, как работает такой вот простой сигнал:

S = 2 * (High — Settle) / (High — Low) — 1

Что вообще здесь написано? Это простейший реверсал-индикатор: когда фьюч закрывается (Settle) близко к хаю дня — мы получаем S -> -1, и система рекомендует «шортить на всю котлету» (напомню, размер «котлеты» определяется таргетовой волатильностью 50% годовых, а не размером ГО, с дополнительным ограничением на плечо не больше 3), когда Settle близко к лою дня — наоборот, становится S -> 1, и система рекомендует заходить на котлетку в лонг. Если Settle оказывается посередине между хаем и лоем — система рекомендует сидеть на заборе, ну а когда Settle бродит где-то между — система рекомендует заходить только на часть «котлетки». Как же работает торговля вот по такому довольно банальному индикатору, даже особо без всяких параметров и отсечек? А вот как:



{'cagr': 0.2018, 'sharpe': 0.743, 'mdd': 0.604}


Это уже очень неплохо — 20% годовых (в твердой, напомню, валюте!), Шарп 0.74, максимальная просадка, конечно, великовата, 60%, но мы же торгуем с годовой волатильностью 50% — это для куль-трейдеров пыль.

4. Комбо сезонности и теханализа

Попробуем скомбинировать стратегии сезонности и теханализа, просто сложив их сигналы с весами по 0.5 (напомню, сезонность выдает сигнал S=1 при нахождении в «хорошие» месяцы и «хорошие» дни недели, и сигнал S=0 в противном случае, а тех. анализ выдает действительный сигнал от -1.0 до 1.0). Таким образом, мы будем держать фьючерс с максимальным весом (на всю «котлетку»), когда и сезонность, и тех. анализ соглашаются друг с другом по поводу направления торговли), и будем сидеть на заборе, когда они выдают разнонаправленные позиции.
Вот что получается в результате такого совместного «голосования» двух систем:



{'cagr': 0.1993, 'sharpe': 0.926, 'mdd': 0.554}


Неплохо, нам удалось сохранить доходность на уровне 20% годовых, поднять Шарп до практически 1 (что довольно неплохо при торговле одним контрактом по таким простым правилам), и немного подснизить максимальную просадку до 55%, что, конечно, много, но для одного контракта на 30-летнем горизонте это неплохо, учитывая, что мы при этом еще и зарабатываем 20% годовых в твердой валюте.
Если бы вы начали торговать в далеком 1990-м году по этой стратегии, имея на счету всего $5000 — к настоящему моменту имели бы уже в своем распоряжении $1.31 млн. Вот что сложный процент-то животворящий делает!

5. Домашняя работа и немного заманухи

Если взять контракт на алюминий с Шанхайской биржи (Quandl: CHRIS/SHFE_AL2) и немного поиграться с этими же торговыми логиками — можно получить такой результат с 2012 года (да-да, просадка меньше 10%!). Оставляем это в качестве упражнения читателю:



{'cagr': 0.1739, 'sharpe': 1.746, 'mdd': 0.098}


Если взять контракт на цинк с Шанхайской биржи (Quandl: CHRIS/SHFE_ZN2) и немного поиграться с этими же торговыми логиками — можно получить такой результат с 2008 года (да-да, доходность выше 20% годовых и практически равна максимальной просадке!). Оставляем это в качестве упражнения читателю:



{'cagr': 0.2266, 'sharpe': 1.056, 'mdd': 0.272}

/ (C) Источник
Не является индивидуальной инвестиционной рекомендацией
При копировании ссылка обязательна Нашли ошибку: выделить и нажать Ctrl+Enter