Блог им. 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 крупнее

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



414

Читайте на SMART-LAB:
Фото
Результаты ВОСА 15 декабря 2025 — обновленный состав СД Софтлайн
Друзья! 15 декабря (вчера) состоялось собрание акционеров. Сегодня рассказываем о принятых в рамках ВОСА решениях. ✅ Самое важное:...
Фото
Американские акции. Что выбрать инвестору в год рекордов?
Американский рынок акций ставит рекорды, но за фасадом бурного роста зреют тревожные сигналы — особенно в секторе технологий и...
Фото
🌾💼 ГК «Азот» проведет презентацию для инвесторов
📅  17 декабря в 11:00 МСК встречаемся с одним из лидеров по производству азотных удобрений и капролактама в России. 🔥 Почему стоит заглянуть...

теги блога dyadyakolya

....все тэги



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