Визуализация кластерного анализа инвестиционного портфеля с применением машинного обучения
Машинное обучение · Анализ портфелей

Кластерный анализ портфелей:
методы и практика

Группировка финансовых активов по схожим характеристикам — один из наиболее применимых случаев машинного обучения в количественных финансах. Алгоритмы кластеризации позволяют выявить скрытую структуру портфеля без заранее заданных меток. Подход работает с данными о доходности, волатильности и корреляционных зависимостях между активами.

4 Основных метода
6+ Инструментов Python
2017 Год основания

Процесс кластеризации по шагам

Стандартный пайплайн включает четыре этапа, каждый из которых влияет на итоговое качество разбивки. Пропуск нормализации или неверный выбор метрики расстояния приведёт к смещённым кластерам, не отражающим реальную структуру портфеля.

Верифицированная методология Проверено на реальных портфельных данных
ШАГ 01

Сбор и нормализация данных

Исходные данные — временные ряды котировок или дневной доходности активов за период не менее 2–3 лет. Перед кластеризацией значения масштабируют методом StandardScaler или MinMaxScaler. Без нормализации активы с высокой абсолютной ценой доминируют в метрике расстояния.

Нажмите Enter для подробностей
ШАГ 02

Снижение размерности

При работе с портфелем из 50+ активов признаковое пространство становится разреженным. PCA сохраняет 90–95% дисперсии при сокращении до 5–10 компонент. Для визуализации дополнительно применяют t-SNE, который лучше сохраняет локальную структуру данных.

Нажмите Enter для подробностей
ШАГ 03

Выбор алгоритма и построение кластеров

K-means работает быстро при известном числе кластеров, но чувствителен к выбросам. Иерархическая кластеризация с методом Уорда даёт стабильные результаты без фиксации числа групп заранее. DBSCAN полезен, когда часть активов не укладывается ни в один кластер и должна быть отмечена как аномальная.

Нажмите Enter для подробностей
ШАГ 04

Оценка и интерпретация результатов

Коэффициент силуэта показывает, насколько каждый актив «соответствует» своему кластеру — значения выше 0,5 считаются приемлемыми. Дендрограмма наглядно показывает расстояния слияния и помогает выбрать оптимальное число кластеров. Итоговые группы анализируют по составу секторов и корреляционной матрице.

Нажмите Enter для подробностей
Инструментарий

Python-стек для кластерного анализа

Большинство задач решается комбинацией стандартных библиотек. Ниже — набор инструментов, покрывающий весь цикл от загрузки данных до визуализации дендрограммы и расчёта метрик качества.

Силуэт > 0.5 — приемлемое разбиение
PCA: 90–95% сохранённой дисперсии
Данные: 2–3 года минимальный период
scikit-learn KMeans, DBSCAN, AgglomerativeClustering, PCA, метрики
pandas Загрузка, фильтрация и преобразование временных рядов
NumPy Матричные операции, нормализация, расчёт доходности
Matplotlib Визуализация scatter-plot кластеров и дендрограмм
SciPy Иерархическая кластеризация, linkage, dendrogram
Jupyter Notebook Интерактивная среда исследования и документирования
Контекст задачи

Почему кластеризация сложнее, чем кажется

Финансовые данные имеют специфику: корреляции между активами нестабильны во времени, распределения доходности имеют «тяжёлые хвосты», а выбросы в кризисные периоды сильно смещают центроиды кластеров. Алгоритм k-means предполагает сферические кластеры одинакового размера — в реальных портфелях это допущение часто нарушается.

Метрики качества

Как оценить результат без разметки

В задаче кластеризации нет «правильных» меток, поэтому качество оценивают косвенно. Коэффициент силуэта измеряет компактность кластеров относительно расстояния до соседних групп. Индекс Дэвиса–Болдина показывает среднее отношение внутрикластерного разброса к межкластерному расстоянию — меньшее значение означает лучшее разбиение.

K-means — скорость 91%
Иерархическая — стабильность 78%
DBSCAN — устойчивость к выбросам 85%