
Открываем новый цикл статей — «Ребалансинг в алго». В прошлом сборнике мы разобрали дивидендных роботов, которые торгуют отдельные события: отсечку реестра, тренд в дивидендно сильных бумагах, шорт слабых. Теперь поднимаемся на уровень выше — портфельное управление.
В этом цикле разберём трех роботов-ребалансировщиков из OsEngine. Они не ищут точки входа внутри дня. Они раз в неделю или раз в месяц, в заданный день и час, перекладывают капитал между акциями, золотом и денежным рынком. Все три уже встроены в OsEngine, исходный код открыт и лежит на ГитХабе — берите, изучайте, улучшайте.
Но прежде чем открывать код, давайте разберёмся с базой. В этой статье — основные понятия ребалансировки, без которых дальше будет непонятно. А в конце — оглавление всего сборника.
1) Что такое ребалансировка?
Ребалансировка — это периодическое приведение портфеля к целевому составу по заранее заданным правилам.
Простой пример. Вы решили: 60% капитала в акциях, 40% в золоте. Прошёл месяц, акции выросли — и теперь их уже 70% портфеля. Ребалансировка — это когда вы продаёте лишние 10% акций и докупаете золото, возвращаясь к исходным 60/40.
В алготрейдинге эту работу делает робот. По расписанию он проверяет свои правила отбора, закрывает одни позиции и открывает другие. Без эмоций, без «а может, ещё подожду» — строго по алгоритму.
2) Зачем вообще ребалансировать портфель?
Казалось бы, зачем что-то продавать, если оно растёт? На то есть четыре причины:
1) Контроль риска. Портфель без ребалансировки со временем превращается в портфель одной идеи. Если акции выросли до 90% капитала — вы уже не диверсифицированы, вы в одной ставке.
2) Правило «продай дорого, купи дёшево» на автомате. Ребалансировка систематически заставляет фиксировать выросшее и докупать подешевевшее. Именно это и есть источник её доходности.
3) Дисциплина. Робот не сомневается. Он не боится покупать упавшее и не жадничает продавать выросшее. Расписание есть расписание.
4) Переключение между режимами рынка. Когда по правилам робота в акциях делать нечего, капитал не стоит на месте — он уходит в защитный актив и продолжает работать.
3) Агрессивная и защитная части
Все роботы этого цикла построены одинаково: капитал делится между агрессивной и защитной частями.
Агрессивная часть — акции. Именно они дают основную доходность, и именно с ними связана основная просадка.
Защитная часть — инструменты с низкой волатильностью. В наших роботах их два:
1) TMON@ (LQDT) — биржевой фонд денежного рынка. По сути, это «почти рубль», который при этом зарабатывает ставку денежного рынка.
2) Золото — классический защитный актив, исторически слабо связанный с российскими акциями.
Смысл конструкции: когда у акций есть сигнал — робот в акциях, а когда сигнала нет — робот в защитном активе. Просадка по портфелю в плохие времена заметно снижается, а капитал всё равно работает.
4) Расписание ребалансировки
Сердце любого ребалансировщика — расписание. Во всех трёх роботах оно задаётся двумя параметрами: день недели и время внутри дня. Например: вторник, 11:00.
Периодичность бывает разной: ежедневно, еженедельно, ежемесячно. Наш выбор по умолчанию — еженедельная ребалансировка. Почему так:
Ребалансировать каждый день — значит платить комиссии за шум. Дневные колебания портфеля не несут полезного сигнала.
Ребалансировать раз в месяц — значит опоздать. За месяц рынок успеет несколько раз поменять режим, и ваша защита включится постфактум.
Неделя — разумная середина: достаточно часто, чтобы реагировать на смену режима, достаточно редко, чтобы не платить много комиссий.
5) Два способа сделать ребаланс
Технически ребалансировку можно исполнить двумя способами, и важно понимать разницу — в роботах она прямо отражена в настройках.
Способ первый, простой: закрыть все позиции и открыть заново по новым весам. Так делают в тестере — это быстро и честно для статистики. Минус: много лишних сделок. Если бумага была в портфеле и осталась в нём — её всё равно продали и купили обратно.
Способ второй, умный: закрыть только те позиции, которых нет в новом целевом портфеле, открыть недостающие, а по оставшимся — просто подровнять объёмы до целевых. Меньше сделок, меньше комиссий, меньше лишних налоговых событий. Так делают в реальной торговле.
В роботе RebalancerClassicDividend эти способы доступны на выбор прямо в параметре Regime — разберём его в следующей статье.
6) Что понадобится из прошлого цикла
Два робота этого сборника работают с дивидендами, поэтому нам пригодится база из цикла «Дивиденды в алготрейдинге». Если пропустили — вот что стоит прочитать:
Отсечка реестра и режим Т+1 — статья №1 прошлого цикла. Ребалансеры отбирают бумаги именно по датам отсечки.
Дивидендная доходность — там же. Оба дивидендных ребалансера фильтруют акции по минимальной доходности выплаты.
WikiMaster и база дивидендов — статьи №2 и №3. Роботы берут данные из локальной базы Wiki/Dividends и умеют обновлять её автоматически.
Начисление дивидендов в тестере — статья №2. Напомню: дивиденды зачисляются в общий портфель эмулятора через 7 дней после закрытия реестра, как в реальности.
7) Оглавление сборника
Итого, что нас ждёт в цикле:
1) Ребалансинг в алго №1. Мы здесь.
2) Ребалансинг в алго №2: RebalancerClassicDividend — акции и золото по расписанию. Классический ребаланс с фиксированными весами плюс дивидендный режим с приоритетом. Два способа исполнения: простой для тестера и умный для реала.
3) Ребалансинг в алго №3: RebalancerByDividendQuality — всё в дивиденды или всё в LQDT. Самый простой и наглядный ребалансер: неделя с ближайшими дивидендами — держим акции, нет дивидендов — сидим в денежном рынке.
4) Ребалансинг в алго №4: RebalancerByMomentum — акции, золото и LQDT по силе тренда. Самый технологичный: отбор топ-10 акций по моментуму, фильтр режима рынка по каналу Кельтнера, золото как промежуточная защита и айсберг-заявки для крупных входов.
Порядок не случаен: идём от простого к сложному. Следующая статья — RebalancerClassicDividend. Подписывайтесь, чтобы не пропустить!
Удачных алгоритмов!
https://smart-lab.ru/company/os_engine/blog/1024149.php
Скачать OsEngine: https://github.com/AlexWan/OsEngine
Официальная поддержка OsEngine в MAX: https://max
Канал Научный трейдинг в MAX: https://max.ru/
Поддержка OsEngine в Телеграм: https://t.me/osengine_official_support
Канал Научный трейдинг (Bad Quant) в Телеграм: https://t.me/bad_quant