Блог им. dyadyakolya

Динамческое управление долями инструментов в портфеле

Для лиги ленивых:

Цель изысканий – снизить волатильность портфеля через снижение доли наиболее волатильных инструментов и наоборот. Для трейдинга вряд ли подойдёт.

Идея понравилась, пока планирую использовать (как вспомогательный) вариант со сглаженным ATR + добавлю повышающий коэффициент, если цена выше sma200. Ребалансировка при отклонении текущей доли от рассчётной > 10% от значения (было 20% / стало 22%) хотя бы по одному из инструментов.
Вот код индикатора tradingview для тех, кому интересно самому покрутить:
//@version=6
indicator(«Динамическая ребалансировка портфеля»,  overlay = false)
string TS1_name = input.string(defval = 'RUS:IRUS2',title='IRUS2')
string TS2_name = input.string(defval = 'CAPITALCOM:US100',title='US100')
string TS3_name = input.string(defval = 'RUS:RGBITR',title='RGBITR')
string TS4_name = input.string(defval = 'TVC:GOLD',title='GOLD')
int SDlength = input.int(defval=100, title='StDiv', minval = 100)
int SMAlength = input.int(defval=100, title='StDiv', minval = 100)
// определяем фунцию, надо раскоментировать один из вариантов
getSecurityData(string symbol) =>
//    request.security(symbol, '1D', close/ta.atr(SDlength)) // ATR
    request.security(symbol, '1D', ta.ema(close/ta.atr(SDlength),4)) // сглаженный ATR
//    request.security(symbol, '1D', close/ta.stdev(close,SDlength)) // то же, но со стандартным отклонением
//    request.security(symbol, '1D', (ta.sma(close[0]-close[1],SMAlength))/ta.stdev(ta.sma(close,5),SDlength)) // гемини предложил добавить доходность в числитель
//    request.security(symbol, '1D', (close+ta.sma(close[0]-close[1],SMAlength))/ta.stdev(close,SDlength)) // моя попытка убрать шорты из предложения гемини
// приводим к 100%
float RawWeight_1 = getSecurityData(TS1_name)
float RawWeight_2 = getSecurityData(TS2_name)
float RawWeight_3 = getSecurityData(TS3_name)
float RawWeight_4 = getSecurityData(TS4_name)
float WeightSum=RawWeight_1+RawWeight_2+RawWeight_3+RawWeight_4
float Weight1=100*RawWeight_1/WeightSum
float Weight2=100*RawWeight_2/WeightSum
float Weight3=100*RawWeight_3/WeightSum
float Weight4=100*RawWeight_4/WeightSum
plot(Weight1, color=color.blue)
plot(Weight2, color=color.red)
plot(Weight3, color=color.green)
plot(Weight4, color=color.orange)

С болталогией

Когда-то по РБК выступал представитель какой-то управляющей компании и хвастался, что у них есть такой алгоритм ребалансировки портфелей – ракета, но мы вам её не покажем. Видимо, в голове где-то отложилась идея сделать что-то подобное. Позже наткнулся на статью уважаемого Yakovlev Aleksey «Таргетирование волатильности IMOEX». В комментариях упоминали, что вместо ATR можно использовать среднеквадратичное отклонение.

Начал я приставать с расспросами к ИИшечкам.

DeepSeek сказал, что такой подход называют Risk Parity (Паритет риска) – повышается волатильность, снижай долю в портфеле, чтобы зафиксировать прибыль или снизить убытки. Но та реализация, которую мы с ним (дипсиком) написали, не применима в жизни совершенно, даже показывать не буду.

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

Ну и 2 самых простых варианта – доля обратно пропорциональна ATR или стандартному отклонению.

Для тестирования взял RGBITR как самый не волатильный, но не LQDT; IRUS2, US100, GOLD – как инструменты с низкой корреляцией.

В начале уже объявил своего победителя, чуть поясню: чистый результат для меня слишком «нервный», немного сгладил ema’шкой. Но он определил RGBITR как самого спокойного и отдал ему самую большую долю, и на остальных инструментах показал вполне ожидаемые результаты в рамках Risk Parity, у дяди с РБК другой подход был, ему бы не подошёл. Чтобы немного испортить чистоту результата думаю добавить повышающие коэффициенты, но пока ничего умнее «если цена выше SMA200» не придумалось.

Удивил вариант со стандартным отклонением. Результат – фигня полная. Крутил я его по-разному, но адекватного результата получить не удалось. Наверное, не до конца понял идею.

Буду благодарен за идеи как ещё можно реализовать динамическую ребалансировку.

Картиночки:

ATR+EMA
Динамческое управление долями инструментов в портфеле

Стандартное отклонение
Динамческое управление долями инструментов в портфеле
Вариант Gemini
Динамческое управление долями инструментов в портфеле
Вариант Gemini крупнее

Динамческое управление долями инструментов в портфеле



Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
432

Читайте на SMART-LAB:
Фото
Скрипт сегодняшнего размещения ЗАО Прогресс (BB-.ru, 100 млн р., YTM 26,83%)
❗️Информация для квалифицированных инвесторов 🌾 Сегодня, 26 июня, стартует  размещение выпуска облигаций ЗАО «ПРОГРЕСС»...
Фото
БСПБ: дисконт оправдан до восстановления доходности капитала
Банк Санкт-Петербург подвел итоги за май 2026 года по РСБУ. Чистый процентный доход составил 5,7 млрд рублей (-12,1% г/г); Чистый...
Фото
Уже завтра! Встречаемся на Инвест Викенде РБК
Москва, Центр событий РБК 📌 13:30, Практик-гостиная На панельной дискуссии «Недвижимость как инвестиция» расскажем о влиянии...
Фото
Свежие идеи Элвиса Марламова в ПИФ Alenka Capital на июнь 2026
Продолжаем серию ежемесячных постов с отслеживанием покупок/продаж профессиональными управляющими. Особенно теми, кто управляет МИЛЛИАРДАМИ рублей...

теги блога dyadyakolya

....все тэги



UPDONW
Новый дизайн