Изображение блога
OS_Engine_team
OS_Engine_team Блог компании OsEngine
Сегодня в 18:28

Иерархический риск-паритет. Формулы и интерфейсы. Аллокация №5.

Продолжаем цикл «Аллокация капитала».

Сегодня — второй алгоритм, академический: иерархический риск-паритет, или HRP. В отличие от равновесной кластеризации из прошлой статьи, он не делит капитал поровну, а распределяет его обратно волатильности: менее волатильные роботы получают больше.

Иерархический риск-паритет. Формулы и интерфейсы. Аллокация №5.

1) Откуда ноги растут

Метод описал Маркос Лопес де Прадо в 2016 году. Он решает ту самую проблему, о которой мы говорили в статье про Марковица: классическая оптимизация весов неустойчива — малые ошибки в оценке ковариаций дают большие скачки весов.

Идея де Прадо: не решать задачу оптимизации «в лоб», а сначала построить иерархию (дерево) из активов по корреляции, а потом делить капитал сверху вниз по этому дереву. Устойчивость — потому что дерево меняется мало, даже если входные оценки слегка шумят.

 

2) Три шага алгоритма

Шаг 1. Tree Clustering — строим дерево. По корреляционной матрице считаем расстояния:

d = √(0.5 · (1 − ρ))

и строим дендрограмму — дерево, в котором похожие роботы сливаются раньше, разные — позже. Метод слияния задаётся параметром линковки: single (по ближайшим), complete (по дальним), average (по средним) или ward.

 

Шаг 2. Quasi-Diagonalization — упорядочиваем. Обходим дерево так, чтобы похожие роботы оказались рядом. На выходе — порядок роботов, где соседи максимально похожи.

 

Шаг 3. Recursive Bisection — делим капитал. Идём сверху вниз по дереву: на каждом разветвлении считаем дисперсию левой и правой ветки и делим капитал между ними обратно дисперсии. Ветка с меньшей волатильностью получает большую долю.

 

3) Формулы

Дисперсия ветки считается как дисперсия портфеля с весами ∝ 1/σ² внутри неё. Грубо: сначала каждому роботу внутри ветки даётся вес, обратный его волатильности, потом из этого считается дисперсия всей ветки.

На каждом разветвлении доли:

α = 1 − v₁ / (v₁ + v₂)

где v₁ и v₂ — дисперсии двух веток. Менее волатильная ветка получает больше. Веса роботов перемножаются по пути от корня к листьям.

 

4) Интерфейсы

В OsEngine алгоритм живёт на вкладке «Расчёты» → «Иерархический риск-паритет».

Иерархический риск-паритет. Формулы и интерфейсы. Аллокация №5.

Линковка (single / complete / average / ward) — метод слияния в дереве.

Ковариация (sample / shrinkage) — как оценивается ковариационная матрица. Shrinkage — это сглаживание Ледойта–Вольфа, устойчивее обычной выборочной оценки.

Корреляция (Pearson / Spearman) — какой мерой считается похожесть.

Кнопка «Рассчитать».

Дендрограмма — дерево, точки роботов раскрашены по кластерам. Клик по точке — подсветка робота в таблице.

Таблица результата — те же колонки весов 100%–600%.

Кнопка «Сохранить результат».

 

5) MCP API

Через MCP — те же действия:

allocation_hrp_settings_set — linkage / covariance / correlation;

allocation_hrp_calculate — рассчитать;

allocation_hrp_result_get — веса, кластеры, а также дерево (allocation_merges) и порядок листьев (allocation_leaf_order).

 

Удачных алгоритмов!
Комментарии открыты для друзей!

Иерархический риск-паритет. Формулы и интерфейсы. Аллокация №5.

https://smart-lab.ru/company/os_engine/blog/1024149.php


Скачать OsEngine: https://github.com/AlexWan/OsEngine

Официальная поддержка OsEngine в MAX: https://max.ru/join/Yar1c0k41XMwbnBXWutnmj4rWMk3RrhXIUqpGl8wOog

Канал Научный трейдинг в MAX: https://max.ru/id2373023082_biz

Поддержка OsEngine в Телеграм: https://t.me/osengine_official_support

Канал Научный трейдинг (BadQuant) в Телеграм: https://t.me/bad_quant

Иерархический риск-паритет. Формулы и интерфейсы. Аллокация №5.

https://www.tbank.ru/invest/

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

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

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