Блог им. Neon73
Дисклеймер: Материал носит исключительно образовательный и научно-исследовательский характер. Приведенные формулы, код и другие примеры не являются индивидуальной инвестиционной рекомендацией.
Краткое введение
Довольно долго думал, о чем же написать свой первый не книжный пост, и мне вспомнилась одна замечательная научная статья 2008 года, авторы которой работали в не менее замечательном для 2008 года банке.
Когда я в 2021 году закинул первые деньги на брокерский счет, я даже не задумывался о том, что диверсификацию можно оценить математически (народная метафора про «яйца и корзины» не в счет). Но со временем, читая блоги более опытных инвесторов и проверяя всё на своей шкуре, я стал четко ощущать: российский рынок работает совсем не так просто, как классические модели из западных учебников...
HHI
Начнем с базы — индекса Херфиндаля-Хиршмана (HHI) [для ознакомления см. 1]. Он оценивает исключительно концентрацию активов.
Суть проста: мы берем долю каждого актива в портфеле (в долях единицы), возводим в квадрат и суммируем. На выходе получаем число, по которому можно судить, насколько портфель перекошен в сторону отдельных бумаг.
Но HHI имеет болезненный ключевой изъян: он совершенно не учитывает, как активы коррелируют между собой и насколько они волатильны. Из-за этого портфель из 10 разных акций может казаться диверсифицированным по HHI, но рушиться как единое целое при падении одного сектора. С точки зрения нашего рынка это фатально, и с другой стороны почти неизбежно. Если мы откроем график наших голубых фишек, то увидим как синхронно они падают и поднимаются.
DR
Попытка узнать, как профи (на тот момент я ориентировался на западных) решают эту проблему и привела меня к фундаментальной работе Ива Шуэйфати и Ива Койнара [2], о коэффициенте диверсификации которому и посвящена эта заметка.
Авторы статьи предлагают метрику под названием Diversification Ratio (DR) на русском Коэффициент диверсификации.
В отличие от HHI, этот показатель смотрит не только на вес бумаги в портфеле, но и на то, как активы ведут себя по отношению друг к другу (учитывается их волатильность и корреляция).
Математически все довольно просто:

Где w_i вес актива в портфеле, а сигмы – это волатильности.
Для начала постараюсь привести объяснение на пальцах:
Как интерпретировать результаты?
Итог статьи и заключение:
На российском рынке часто возникает ситуация, когда у вас в портфеле 10 различных компаний, но 70% из них — это сырьевой сектор с высокой корреляцией. Индекс HHI может показать, что портфель неплохо распределен по бумагам. Но формула DR сразу выявит проблему: из-за того, что акции движутся синхронно при изменении курса рубля или цен на нефть, знаменатель почти не уменьшится, и DR будет крутиться около 1.1–1.2.
Настоящая диверсификация по Шуэйфати начинается тогда, когда мы находим активы с низкой корреляцией и выжимаем из DR максимум. На мой взгляд, такая система хороша даже для инвестора долгосрочника, который следует див. стратегии так как в реалиях ру рынка даже далекие отрасли на самом деле коррелируют весьма сильно.
С точки зрения своего личного опыта могу сказать следующее, получить высокий DR на нашем рынке очень тяжело (особенно если вы собираете чистый долгосрочный див. портфель) если не использовать активы в валюте, например, GLDRUB.
Практическая часть:
Хочу напомнить, что у MOEX есть свое API, а нужные нам .json файлы лежат здесь: iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities/{ticker}.json
Чтобы получить .json файл по нужному нам отрезку используем следующее:
iss.moex.com/iss/history/engines/stock/markets/shares/boards/TQBR/securities/{ticker}.json?from=YYYY-MM-DD&till=YYYY-MM-DD
По большому счету нам хватит всего три библиотеки для Python: pandas, numpy, math. Также замечу, что .json файлик придется распарсить, так как данные там представлены весьма специфическим образом.
Приведу кусок кода с некоторыми основными вычислениями (без обращения к api и первичной обработки данных):
# Индивидуальная волатильность активов
vols = df_returns.std()
# Матрица корреляций
corr_matrix = df_returns.corr()
# Расчет числителя (средневзвешенный индивидуальный риск)
w = np.array(weights)
sigma = np.array([vols[t] for t in tickers])
weighted_vol_sum = np.sum(w * sigma)
# Расчет знаменателя (реальный риск портфеля через ковариационную матрицу)
cov_matrix = df_returns.cov()
portfolio_variance = np.dot(w.T, np.dot(cov_matrix, w))
portfolio_vol = math.sqrt(portfolio_variance)
# Коэффициент диверсификации (DR)
dr_value = weighted_vol_sum / portfolio_vol if portfolio_vol > 0 else 1.0 Источники:
[1] Индекс Херфиндаля // Википедия. [2026]. Дата обновления: 20.01.2026. URL: ru.wikipedia.org/?curid=1461284&oldid=151267126 (дата обращения: 20.01.2026).
[2] Choueifaty Y., Coignard Y. Toward Maximum Diversification // The Journal of Portfolio Management. — 2008. — Vol. 35, no. 1. — P. 40-51.
[3] Программный интерфейс АПИ (API) к ИСС — Московская биржа. URL: www.moex.com/a2193
Важные замечания
Основной фокус статьи [2] это MDP максимально диверсифицированный портфель, который можно попытаться найти, используя scipy.optimize, но в рамках маленькой заметки навряд ли удастся отразить в полной мере как это работает.
Дисклеймер (да, да, еще один раз...): Материал носит исключительно образовательный и научно-исследовательский характер. Приведенные формулы, код и другие примеры не являются индивидуальной инвестиционной рекомендацией.
Абсолютно согласен! Коэффициент DR как раз математически подсвечивает то, о чем Вы говорите: сколько акций внутри одного рынка ни покупай, без выхода в другие отрасли и другие классы активов (золото, облигации, валюта) корреляция останется высокой, а реальная диверсификация низкой.
К сожалению, полноценная страновая диверсификация сейчас ограничена инфраструктурными рисками… Поэтому приходится в некотором роде собирать франкенштейна из доступных локальных инструментов…