Alexander Rumyantsev
0
All posts from Alexander Rumyantsev
Alexander Rumyantsev in Quantrum,

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

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

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

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

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

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

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

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

 

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

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

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

  

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

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

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

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

CIT, STT

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

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

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

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

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

ALNY, DATA

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

DRE, O

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

Код в студию

Исходный код доступен на Quantrum.me

Вывод

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

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

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

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

Александр Румянцев aka "i.am.raa"
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде. Пишите в личку или на email.

Обучение «Парному трейдингу» у профессионалов.