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

Равновесная кластеризация по корреляции. Формулы и интерфейсы. Аллокация №4.

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

Сегодня первый практический алгоритм — равновесная кластеризация по корреляции. Это самый простой и прозрачный способ: собрали похожих роботов в кластеры и поделили капитал поровну. Никаких оценок волатильности — только корреляция.

Равновесная кластеризация по корреляции. Формулы и интерфейсы. Аллокация №4.

1) Торговая идея

Идея на поверхности: если два робота торгуют почти одинаково, не надо давать им обоим полный капитал. Сначала соберём похожих в группы, а уже потом поделим деньги между группами поровну.

Почему «равновесный»: капитал делится ровно — 1/N на кластер, внутри кластера — поровну на каждого робота. Просто, предсказуемо, и никакой оценки риска не требуется.

 

2) Формулы

Шаг 1. Доходность. По файлам позиций OsEngine считает доходность каждого робота за период (неделю или месяц). На выходе — матрица «роботы × периоды», где каждая ячейка — процент за период. Пропущенные у робота периоды добиваются нулями.

Шаг 2. Корреляция. Между каждой парой роботов считается корреляция Пирсона:

ρ = cov(x, y) / (σx · σy)

где x и y — ряды доходностей двух роботов.

 

Шаг 3. Расстояние. Корреляция — это «похожесть», а для кластеризации удобнее «расстояние». Превращаем одно в другое:

d = √(0,5 · (1 − ρ))

Смотрите, как красиво: ρ = 1 → d = 0 (роботы близнецы), ρ = 0 → d ≈ 0,71, ρ = −1 → d = 1 (максимально разные).

 

Шаг 4. Кластеризация. Метод — полная связь (complete-linkage): робот попадает в кластер, только если его корреляция выше порога со ВСЕМИ роботами этого кластера. Другими словами, кластер — это «клика»: любая пара внутри неё достаточно похожа.

Порог задаёт один параметр — min_correlation. Чем он выше, тем жёстче требование и тем больше кластеров (вплоть до «каждый сам по себе»). Чем ниже — тем крупнее группы.

 

Шаг 5. Веса. Капитал делится поровну: 1/N на кластер, внутри — поровну на робота. Вес робота:

w = 1 / (N · M)

где N — число кластеров, M — число роботов в его кластере.

 

3) Почему именно полная связь, а не «похожесть к лидеру»

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

Полная связь лишена обоих недостатков: кластер определяется только данными (порогом), а не порядком. Результат детерминирован — два запуска дают одинаковые кластеры.

 

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

В OsEngine алгоритм живёт на вкладке «Расчёты» → «Равновесная кластеризация».

Равновесная кластеризация по корреляции. Формулы и интерфейсы. Аллокация №4.

Поле min_correlation — тот самый порог (по умолчанию 0,4).
Кнопка «Рассчитать» — запускает расчёт.
Таблица результата — по кластерам: № кластера, № в кластере, имя робота и колонки весов 100%–600% (плечи).
Граф связей — роботы нарисованы точками, цвет точки — кластер, линии — корреляция выше порога. Сразу видно, кто с кем.
Кнопка «Журнал» у кластера — открывает позиции всех роботов кластера.
Кнопка «Сохранить результат» — пишет файл с весами (формат — в статье #6).

 

5) MCP API

Тот же алгоритм доступен через MCP — для автоматической работы ИИ:

allocation_clustering_settings_set — задать min_correlation;
allocation_clustering_calculate — рассчитать;
allocation_clustering_result_get — получить кластеры и веса.

Ответ result_get повторяет таблицу на экране: по каждому кластеру — номер и список роботов, по каждому роботу — его номер в кластере и веса-плечи 100%–600%.

 

6) Когда выбирать этот алгоритм

Равновесная кластеризация — это «просто и понятно». Она не пытается оценить, какой робот рискованнее, а просто разносит капитал по группам. Выбирайте её, когда важна прозрачность и не хочется полагаться на оценку волатильности. Если же хочется, чтобы менее волатильные роботы получали больше капитала — нужен HRP, о нём следующая статья.

 

Удачных алгоритмов!

Равновесная кластеризация по корреляции. Формулы и интерфейсы. Аллокация №4.

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

Равновесная кластеризация по корреляции. Формулы и интерфейсы. Аллокация №4.
https://www.tbank.ru/invest/

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

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

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