Может ли кто-нибудь помочь с нижеследующим, поскольку я некоторое время боролся.
Предельный вклад в риск = Чтобы найти предельный вклад каждого актива, возьмите перекрестный продукт вектора весов и матрицы ковариации делится на стандартное отклонение портфеля.
Теперь умножьте предельный вклад каждого актива на вектор весов, чтобы получить общий вклад. Затем мы можем суммировать вклады активов и убедиться, что они равны общему стандартному отклонению портфеля.
Relativeweights = np.array([0.02, -0.025, -0.015, 0.0, 0.02,0,0,0])
cov_matrix_a= 8x8 matrix
Port_volatility= 0.05882615906289199
Итак, я попробовал следующий код:
MCTAR=(np.dot(Relativeweights,cov_matrix_a))/Port_volatility
TCTPR=MCTAR*Relativeweights
np.sum(TCTPR, axis=0)
Это не сумма волатильности портфеля, так что не знаете, что не так?
Любая помощь приветствуется. Спасибо
Полный код ниже;
Извлечение доходов из CSV-файла
import numpy as np
import ST as STPL
Assetreturns = STPL.get_Asset_returns()
Построение ковариационной матрицы для ежедневных доходностей портфеля с помощью .cov () метод
cov_matrix_Assetreturns = Assetreturns.cov()
cov_matrix_Assetreturns
Годовая дневная ковариационная матрица со стандартными 252 торговыми днями
cov_matrix_a = cov_matrix_Assetreturns * 252
cov_matrix_a
Назначение относительных весов
Relativeweights = np.array([0.02, -0.025, -0.015, 0.0, 0.02,0,0,0])
Relativeweights
Назначение весов портфеля
Portweights = np.array([0.49, 0.15, 0.125, 0.215, 0.02, 0, 0,0])
Portweights
Стандартное отклонение портфеля - это просто квадрат root его дисперсии
Port_volatility = np.sqrt(np.dot(Portweights.T, np.dot(cov_matrix_a, Portweights)))
Port_volatility
Предельный вклад каждого актива, возьмите перекрестный продукт вектора весов и ковариационной матрицы, деленный на стандартное отклонение портфеля.
MCTAR=(np.dot(Relativeweights,cov_matrix_a))/Port_volatility
Теперь умножьте предельный вклад каждого актива на вектор весов, чтобы получить общий вклад. Затем мы можем суммировать вклады активов и убедиться, что они равны общему стандартному отклонению портфеля.
TCTPR=MCTAR*Relativeweights
np.sum(TCTPR, axis=0)