Александр Румянцев
Александр Румянцев личный блог
06 августа 2019, 15:29

Python в помощь тестированию структурных продуктов

Воодушевлённый статьёй с рекламой структурных продуктов на Хабре, адаптировал python-скрипт для их самостоятельного тестирования. Основная идея в том, что подобные продукты предлагают 100% защиту капитала.  А учитывая 10 лет бычьего рынка, исторические показатели подобных продуктов одурманивают безрисковым раем.

Скрипт подойдёт для быстрого и понятного тестирования своих портфелей с ребалансировкой в разные периоды. Ну а кому-то данный инструмент может пригодиться для самостоятельного построения подобных стратегий. Их наипростейшей формы. Однако брокеры пишут, что это не каждому под силу.

Код выложен в GitHub в виде Jupyter-блокнота. Поехали!

Пара слов, для введения

Тестировать буду на американских акциях и там доходность будет пониже, чем в рублях. Российский рынок в абсолютных значениях на графиках поинтересней, но и рисков в нём побольше. Суть тестов от этого не поменяется.

Данные берём из бесплатного Alpha Advantages, где предварительно нужно получить ключ, поделившись email-адресом. Краткая инструкция в блокноте. Котировки российских бумаг вы можете взять на Финаме.

«Обаяние» структурного продукта

Общая суть — ваш капитал в сохранности, а доходность выше банковского депозита. Вот только пропущено несколько элементов уравнения:

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

Стратегия

Рассмотрим самую простую стратегию:

  • Покупаем на 90% капитала краткосрочные казначейские облигации;
  • На остаток покупаем высокорискованный актив;
  • Ставим стоп на 10% от цены на старте периода.

В основе стратегии: казначейские облигации дают 1-3% годовых практически исключая просадку (если доходность есть). 10% от просадки актива, купленного на 10% капитала, как раз будут тем самым риском, который покроют облигации. В периоды бычьего рынка некоторые акции могут вырасти в несколько раз, что и подарит нам счастье.

Для ручного повторения данной стратегии необходимо выполнить следующие неподсильные действия:

  • Купить облигации или низкорисковый доходный инструмент. Например, в виде ETF.
  • Купить акции.
  • Поставить стоп-приказ.

Как тестируем

Кратко опишу некоторые решения с выдержками кода, которые позволили сделать тестирование достаточно гибким и удобным.

Расписание

Производить ребалансировку можно в следующие периоды: неделя, месяц, год. А также в любой день внутри периода: первый, N-ый, последний. За это отвечает класс Schedule():

Исходный код и ссылка на репозиторий на Quantrum.me.

Цикл по данным

StructuredProductMill().run()

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

Ребалансировка

StructuredProductMill().rebalance()

Здесь активы, которые можно открывать, распределяются на доступный капитал. После сравнения расчёта с открытыми позициями производится исполнение сделок на нужное количество:

Исходный код и ссылка на репозиторий на Quantrum.me.

Сделки

StructuredProductMill().trade()

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

Запуск

Для запуска необходимо указать набор активов с долями и параметры теста. Мы же будем тестировать структурные продукты за календарный год:

Исходный код и ссылка на репозиторий на Quantrum.me.

Внизу блокнота есть графики с доходностью и просадками в даты ребаланса (в конце года), что подтверждает крайне низкие просадки капитала в моменты отчёта и постоянно растущую доходность. Хоть эта доходность и проигрывает широкому индексу американских компаний S&P 500.

Какие результаты

В тестах участвовали свободно торгующихся американские инструменты с 2011 года:

  • BIL — ETF на краткосрочные казначейские облигации с доходностью 2% годовых на момент написания статьи. Помним, что в период с 2009 до 2017 ставки были рядом с нулём. Альтернативой можно использовать MINT (фонд на краткосрочные инструменты с фиксированной доходностью).
  • AAPL — акции компании Apple.
  • MSFT — акции компании Microsoft.
  • TSLA — акции компании Tesla.

AAPL

Данная конструкция принесла за 8 лет доход в 24% (среднегодовая 2.6%) с просадкой между ребалансировками -6%. Но на стыке лет просадка около нуля. Стопа не коснулись, рынку со 180% дохода порядком проиграли.

Python в помощь тестированию структурных продуктов

Python в помощь тестированию структурных продуктов

MSFT

Данная конструкция принесла за 8 лет доход в 26% (среднегодовая 2.75%) с просадкой между ребалансировками -2%. На стыке лет просадка отсутствует.

Python в помощь тестированию структурных продуктов

Python в помощь тестированию структурных продуктов

TSLA

Данная конструкция принесла за 8 лет доход в 45% (среднегодовая 4.6%) с просадкой между ребалансировками аж -15%. Но всё это в 2013 году, когда Тесла выросла почти в 5 раз. На стыке лет просадка до -2%. Самый беспокойный, но и прибыльный пассажир.

Python в помощь тестированию структурных продуктов

Python в помощь тестированию структурных продуктов

Заключение

Вы можете воспользоваться данным блокнотом для поиска своих стратегий с минимальным риском или потестировать простые портфели. 

В комментариях задавайте вопросы и напишите, что вам не понравилось в статье. А может есть совет, что улучшить?

 

16 Комментариев
  • Serenity
    06 августа 2019, 16:36
    Ни одного слова про Украину, урожаи ваты. Патриотических призывов тоже нет. Значит в оффтоп. Админ — фас!
    • Баграт
      07 августа 2019, 21:50
      это делается через опционы
  • Serenity
    06 августа 2019, 16:43
    Интересно посмотреть стратегию глубиной в пару кризисов 2000 — 2019.
    Понятно что ставки за этот срок искать и котировки муторно, но от этого менее интересным не становится. :)
      • Serenity
        06 августа 2019, 17:50
        В долгосрочном плане, если ориентироваться на бенч-доу и SP конечно будут отставать, но во времена проливов рынка на 10% от портфолио можно поменять условия на банальные — пробой 200ема вверх вход и стоп как у тебя указано или другие «не особо сложные» входы-выходы в рынок. И остальные деньги в фондах облиг или в др.структурных продуктах
        • Serenity
          06 августа 2019, 17:51
          … и тут результат улучшится
    • ANTI_Finsov
      06 августа 2019, 19:07
      Александр Румянцев, идея тестирования структурных продуктов на мой взгяд крайне интересна. Причём интересно тестировать их именно сейчас, потому, что брать исторические данные, когда американский рынок рос не совсем корректно. В этот период структурные продукты очень хорошо себя чувствовали. Что же касается структурных продуктов с полной защитой капитала на мой взгляд у них нет будущего. Единственное где их можно применить это в составе страхового продукта и это уже благополучно делатся в так называемом ИСЖ. Правда и там всё не так гладко. Не смотря на высокие коэффициенты участия под 100-200% от роста актива, исторически их доходность не очень высока. Другое дело, что есть страховка, но правда только от несчастного случая, что тоже не прибавляет привлекательности данному продукту. На мой взгляд самая идеальная структурка это ноты на основе евробондов. Причём нота торугется на бирже как облигация, а доходность находится на уровне 4-6% выше банковского вклада.
        • EasyTrade
          07 августа 2019, 11:22
          Александр Румянцев, безусловно, как им еще иначе рубануть комиссию) Я так понимаю, что если добавить их косты в модель, то мы даже инфляцию не побьем.
  • Врач-бондиатОр
    06 августа 2019, 23:08
    Насколько я понял, речь идет об американских бондах и акциях? 
    Считать безрисковыми ОФЗ затруднительно
  • EasyTrade
    07 августа 2019, 11:18
    Александр, как же я люблю Ваши статьи, все описано и оформлено просто превосходно)

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

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