由于我一直在努力,有人可以提供以下帮助吗?

风险的边际贡献=要找到每种资产的边际贡献,可将权重向量与协方差矩阵的叉积除以投资组合标准差。

现在,将每个资产的边际贡献乘以权重向量,以获得总贡献。然后,我们可以对资产贡献进行求和,并确保其等于投资组合的总标准差。

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


投资组合的标准偏差只是其方差的平方根

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)

最佳答案

如果将“相对权重=端口权重”等价,则乘法可以解决您期望的答案。

关于python - Python-风险的边际贡献,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60058043/

10-09 06:15