Парный трейдинг: использование МНК для расчета дельты позиций

При торговле по стратегии «Парного трейдинга» часто встречаются пары🎏, где цены каждого актива сильно отличаются друг от друга. Для получения лучшей доходности📈 и сокращения риска📉 необходимо правильно определить размер⚖ сделки по каждому активу.

Сегодня мы рассмотрим расчет дельты позиций используя метод наименьших квадратов (МНК).

Тестировать будем в Quantopian, а код пишем на Python🐍.

🗃Краткая справка

  • За основу статьи взяты материалы с Quantopian.
  • Стратегия «Парного трейдинга» подробно описана в этой статье.
  • Поиск пар для торговли можно изучить здесь.
  • Выбор основания для сигналов z-оценки здесь.
  • Регрессионный анализ описан в Вики.
  • Линейная регрессия доступна в Вики.
  • Метод Наименьших Квадратов (МНК, Ordinary Least Squares, OLS) описан в Вики.

Тестировать будем на парах, найденных в прошлых статьях:

  • CIT, STT
  • ALNY, DATA
  • DRE, O

🎓Зачем нам линейная регрессия?

Мы нашли пару активов, которые имеют связь. Следующим шагом мы должны определить пропорции этой связи. В этом нам поможет регрессионный анализ зависимости цен одного актива относительно цен другого.

Слева на графике показан разброс значений зависимости цен хорошей пары, а справа — плохой пары. Прямая линия на каждом графике — это регрессия по найденным неизвестным. Линия строится по формуле:

    \[ Y = a + b * X \]

a — смещение по оси Y.
b — угол наклона. Эту величину мы будем использовать для расчета размера позиций.

🛠Алгоритм расчета размера позиции

Для получения величины зависимости мы будем использовать Python-пакет statsmodels. Ниже исходный код использования OLS метода:

В массив X необходимо добавить колонку с постоянной величиной, для нахождения значения a.

В алгоритме мы используем 20-дневный период для построения регрессии, чтобы зависимость была наиболее актуальной. Сигнальную z-оценку мы также построим относительно значений угла регресии. Исходный код алгоритма:

👎CIT, STT

На всех графиках под доходностью показана стоимость открытых позиций в обе стороны. Результат торговли с помощью МНК (верхний график) значительно хуже и обладает большей просадкой относительно торговли на равные суммы (следующий график).

На верхнем графике:

  • торговля с помощью OLS;
  • сигналы по z-оценке на основе OLS;
  • без проверки коинтеграции.

На нижнем графике:

  • торговля позициями на равные суммы;
  • сигналы по z-оценке на основе доходности;
  • фильтр по наличию коинтеграции за предыдущие 120 дней.

👎ALNY, DATA

На этой паре использование МНК принесло только проблемы. По датам видно, что здесь может помочь фильтр по коинтеграции спреда доходности, но это уже переоптимизация.

👎DRE, O

На последней паре также результаты плачевны. Предположу, что связано это с природой пар, о чем подробнее в выводах.

🎁Код в студию

Вопросы по коду пишите в комментариях💬.

Исходный код доступен в репозитории.

🏁Вывод

Результаты разочаровали. Но это можно было предвидеть взглянув на следующие графики. Это наложение цен обоих активов одной из пар друг на друга: слева — без изменений; центр — использование коэффициента регрессии; справа — использование отношения цен друг к другу в первый день. Вряд ли коэффициент, полученный при помощи МНК, может быть полезен в определении размеров позиций.

Как объяснить успех торговли равными долями? Данные пары были найдены на спреде относительных значений. То есть мы сравнивали спреды ежедневных изменений цены и ушли от самих цен. Торговать таким спредом достаточно на равные суммы. Дополнительно мы постоянно проверяем стационарность спреда.

Интересной находкой стал коэффициент смешанной корреляции r^2 (показан на графике регрессии в начале статьи). Как мы видим, у хорошей пары он ближе к единице. Это может помочь нам фильтровать пары при поиске для торговли. Подробнее об этом я напишу в следующей статье.

💬В комментариях напишите, какие еще могут быть проблемы плохой результативности? Где я мог допустить ошибку? Что можно изменить?

Александр Румянцев
Автор на Quantrum.me
Telegram-канал📣: @quantiki

Экспертиза торговых стратегий и алгоритмов, оптимизация среднесрочных портфелей.
🎓Обучение «Парному трейдингу» у профессионалов👍.