Ксения Кузнецова
Ксения Кузнецова личный блог
28 февраля 2018, 12:41

Торговая стратегия для коинтегрированных пар: результаты бэктестов за 2017 год на Мосбирже

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

Торговая стратегия

Допустим, у нас есть коинтегрированная пара акций, X и Y, а также цены этих акций за некий период времени 0,...,T. Для примера возьмём пару акций с тикерами (MSNG,MRSB). Для неё у нас есть данные о ценах за 252 торговых дня.

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

Для дальнейших рассуждений нам понадобится спред двух акций. В нашем примере с парой (MSNG,MRSB) мы уже находили спред в блог-посте про коинтеграцию, так что здесь я просто продублирую картинку.
Торговая стратегия для коинтегрированных пар: результаты бэктестов за 2017 год на Мосбирже
Все мы хотим покупать дёшево и продавать дорого. Если разность уходит ниже нуля, акция Y (MSNG) дешевле, чем акция X (MRSB). И, наоборот, если разность поднимается выше нуля, акция Y дороже, чем акция X (ну или X дешевле по сравнению с Y).

По сути, торговая стратегия состоит в том, чтобы купить акцию Y и продать акцию X в соотношении 1:β, если разность находится несколько ниже нуля (ниже линии G на рисунке ниже). Когда же разность возвращается обратно к нулю, нам нужно закрыть позицию, продав Y и купив X в том же соотношении. В этом случае мы получаем прибыль размера G.
Торговая стратегия для коинтегрированных пар: результаты бэктестов за 2017 год на Мосбирже
Здесь важно понимать, что у нас должна быть возможность продавать акции, которыми мы не владеем, то есть осуществлять короткую продажу (шорт). Также необходимо отметить, что не все брокеры включают возможность короткой продажи в стандартный пакет услуг, так что, возможно, вам придётся дополнительно обратиться к нему для расширения своих инвестиционных возможностей.

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

Следующий вопрос, который возникает, — это «как найти значение G»?

Как найти значение G?

Вся матчасть представлена в статье на хабре. Здесь я лишь приведу реализацию в матлабе. Нам понадобится первая половина наблюдений, которую мы будем рассматривать как «историю».

T = length(testPrices);
half = round(T/2);
Для начала найдём среднее отношение Y и X для первой половины наблюдений:

sumRatio = 0;
for i = 1 : half
    sumRatio = sumRatio + testPrices(i,1) / testPrices(i,2);
end
r = sumRatio / half;
Для пары акций с тикерами (MSNG,MRSB) расчётное значение r=4,8548. Затем вычислим максимум абсолютного значения разности для первой половины наблюдений:

clear absspread
for i = 1 : half
    absspread(i,1) = abs(testPrices(i,1) - r * testPrices(i,2));
end
m = max(absspread);
Для пары акций с тикерами (MSNG,MRSB) расчётное значение m=0,3975. Теперь мы можем определить значение G путём перебора: возьмём некоторый процент от m и попробуем поторговать на «истории» при различных значениях этого процента, а затем выберем то значение, которое даст наибольшую прибыль. Это и будет искомое значение для линии G.

Для данной пары получилось, что G=0,159 (при 40% от m) даёт наибольшую прибыль.

Тестирование стратегии

После определения G торговая стратегия применяется ко второй половине наблюдений. При G=0,159 прибыль извлекается 4 раза. Другими словами, разность 4 раза перемещается от 0 до G и обратно. Обратите внимание, что реализация такой стратегии включает 8 сделок, так как для того, чтобы встать в позицию и выйти из неё, требуется совершить две сделки.

На рисунке ниже показаны все 8 моментов торговли.
Торговая стратегия для коинтегрированных пар: результаты бэктестов за 2017 год на Мосбирже
Прибыль, полученная здесь, составляет не менее 4G=0,636. Здесь используются цены закрытия вместо данных внутри дня, поэтому мы не «торгуем» в точках −G, 0 и G. Для данной пары доходность за 126 торговых дней составила 21,78% без учёта комиссий, объёма и пр. То есть это примерно 44,25% годовых по очень грубым прикидкам.

Всего на Московской бирже было протестировано 8287 пар. Там, если не считать нулевой прибыли, приблизительная годовая доходность при данной стратегии колебалась от 3% до 1226%.

Тестирование альтернативной стратегии

Вместо того, чтобы закрывать позицию, когда разность приближается к нулю, можно перевернуть позицию, когда разность достигает G на противоположной стороне от нуля. Предположим, что мы продали 1Y и купили 4,7796X, так как разность была больше G.

Теперь можно дождаться того момента, когда разность достигнет −G, купить 2Y и продать 2⋅4,7796X. В результате мы останемся с портфелем из длинной позиции размера 1Y и короткий позиции размера 4,7796X.

Такая стратегия в случае с рассматриваемой парой приводит к одной начальной сделке и трём сделкам, которые переворачивают позицию. Эти сделки представлены на рисунке.
Торговая стратегия для коинтегрированных пар: результаты бэктестов за 2017 год на Мосбирже
Обратите внимание, что прибыль от перевертывания позиции равна 2G=0,318, поэтому общая прибыль в данном случае составляет не менее 3⋅2G=0,954. Доходность за 126 торговых дней составила 27,36% без учёта комиссий, объёма и пр. То есть это примерно 55,59% годовых по очень грубым прикидкам.

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

Всего на Московской бирже было протестировано 8287 пар. Там, если не считать нулевой прибыли, приблизительная годовая доходность при данной стратегии колебалась от 5,67% до 1739,71%.
22 Комментария
  • Sergey Pavlov
    28 февраля 2018, 12:58
    Помогите понять вот это:
    Всего на Московской бирже было протестировано 8287 пар. Там, если не считать нулевой прибыли, приблизительная годовая доходность при данной стратегии колебалась от 5,67% до 1739,71%. 
    Вы перебрали все пары. Результат худшей пары это 5,67%, а лучшей 1739,71%?
      • Sergey Pavlov
        28 февраля 2018, 13:02
        Ксения Кузнецова, это, конечно, неприличный вопрос, но как такое возможно, что нет ни одной убыточной пары?:)
          • Sergey Pavlov
            28 февраля 2018, 13:52
            Ксения Кузнецова, в таком случае по окончанию теста нужно принудительно закрывать все открытые позиции. В противном случае результаты всегда будут завышены для стратегий типа mean-reversion.
  • Михаил
    28 февраля 2018, 13:22
    Вы коинтергацию оценивали за первые полгода или за год. Если за год, то это явная переподгонка.
  • Владимир Логинов
    28 февраля 2018, 13:23
    Очень красиво в своей простоте.
  • wrmngr
    28 февраля 2018, 13:35
    MRSB?  сегодня у нее прошло 13 (тринадцать) сделок с общим оборотом 133 тыс.руб. Такой шлак надо убирать из теста в самом начале исследования
    • Sergey Pavlov
      28 февраля 2018, 13:50
      wrmngr, и спрэд, чтобы зайти и выйти на 50 тысяч рублей 3%.....

      Кстати, вопрос к исследователю. Какие получились средние сделки и по каким ценам они рассчитываются? Цены открытия?

      И еще… бумагу MRSB в шорт вряд ли кто даст…
  • Осень
    28 февраля 2018, 14:00
    нормальная стратегия, рабочая вполне, вот только не на мосбирже) если вы введете в тестирование вероятность получить позицию по лучшей цене то в итоге будет хороший убыток учитывая что в большинстве инструментов спред в стакане больше годовой доходности по нему)) ну и действительно возьмите для правдоподобности хотя бы список маржинальных бумаг от финама чтоли
      • Осень
        14 июня 2020, 14:59
        Ксения Кузнецова, интересно узнать что получилось в итоге у Вас, и какой результат реальной торговли если конечно вы решились после всех исследований торговать на реальных счетах? и еще тогда остался не заданным вопрос — как вы  приводите цены бумаг к аджастности т.е. дивиденды и прочие корп события о которых мы можем знать заранее и которые точно влияют на цены, учитывали ли вы это или нет?
  • SergeyJu
    28 февраля 2018, 14:59
    Не увидел издержек по шортам и транзакционных издержек.  
  • Roman Ivanov
    28 февраля 2018, 19:31
    Как обычно для такого рода статей, ничего не сказано о самой важной составляющей — стратегии выхода, если спред уходит в неожиданно большой минус.
    Не учтена присадка в принципе, а ведь работать надо будет с плечом
    Также не оценена степень подгонки на контрольной выборке. Выбирая одну стратегию из тысяч, вы делаете довольно мощную оптимизацию т.е. фактически обучаетесь на контрольной выборке.
      • Roman Ivanov
        01 марта 2018, 21:04
        Ксения Кузнецова, под стратегией выхода я имел в виду случай, когда спред неожиданно расширяется не в вашу пользу. Выход при нулевом спреде — это прибыльная позиция, а я про убытки.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн