При торговле по стратегии «Парного трейдинга» часто встречаются пары, где цены каждого актива сильно отличаются друг от друга. Для получения лучшей доходности и сокращения риска необходимо правильно определить размер сделки по каждому активу.
Сегодня мы рассмотрим расчет дельты позиций используя метод наименьших квадратов (МНК).
Тестировать будем в Quantopian, а код пишем на Python.
Краткая справкаТестировать будем на парах, найденных в прошлых статьях:
Мы нашли пару активов, которые имеют связь. Следующим шагом мы должны определить пропорции этой связи. В этом нам поможет регрессионный анализ зависимости цен одного актива относительно цен другого.
Слева на графике показан разброс значений зависимости цен хорошей пары, а справа — плохой пары. Прямая линия на каждом графике — это регрессия по найденным неизвестным. Линия строится по формуле:
a — смещение по оси Y.
b — угол наклона. Эту величину мы будем использовать для расчета размера позиций.
Для получения величины зависимости мы будем использовать Python-пакет statsmodels. Ниже исходный код использования OLS метода:
Исходный код доступен на Quantrum.me
В массив X необходимо добавить колонку с постоянной величиной, для нахождения значения a.
В алгоритме мы используем 20-дневный период для построения регрессии, чтобы зависимость была наиболее актуальной. Сигнальную z-оценку мы также построим относительно значений угла регресии. Исходный код алгоритма:
Исходный код доступен на Quantrum.me
На всех графиках под доходностью показана стоимость открытых позиций в обе стороны. Результат торговли с помощью МНК (верхний график) значительно хуже и обладает большей просадкой относительно торговли на равные суммы (следующий график).
На верхнем графике:
На нижнем графике:
На этой паре использование МНК принесло только проблемы. По датам видно, что здесь может помочь фильтр по коинтеграции спреда доходности, но это уже переоптимизация.
На последней паре также результаты плачевны. Предположу, что связано это с природой пар, о чем подробнее в выводах.
Исходный код доступен на Quantrum.me
Результаты разочаровали. Но это можно было предвидеть взглянув на следующие графики. Это наложение цен обоих активов одной из пар друг на друга: слева — без изменений; центр — использование коэффициента регрессии; справа — использование отношения цен друг к другу в первый день. Вряд ли коэффициент, полученный при помощи МНК, может быть полезен в определении размеров позиций.
Как объяснить успех торговли равными долями? Данные пары были найдены на спреде относительных значений. То есть мы сравнивали спреды ежедневных изменений цены и ушли от самих цен. Торговать таким спредом достаточно на равные суммы. Дополнительно мы постоянно проверяем стационарность спреда.
Интересной находкой стал коэффициент смешанной корреляции (показан на графике регрессии в начале статьи). Как мы видим, у хорошей пары он ближе к единице. Это может помочь нам фильтровать пары при поиске для торговли. Подробнее об этом я напишу в следующей статье.
В комментариях напишите, какие еще могут быть проблемы плохой результативности? Где я мог допустить ошибку? Что можно изменить?
Александр Румянцев aka «i.am.raa»
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде. Пишите в личку или на email.
и — здесь может помочь фильтр по коинтеграции спреда доходности, но это уже переоптимизация — как бэ намекают что автор неочень.