由于我一直在努力,有人可以提供以下帮助吗?
风险的边际贡献=要找到每种资产的边际贡献,可将权重向量与协方差矩阵的叉积除以投资组合标准差。
现在,将每个资产的边际贡献乘以权重向量,以获得总贡献。然后,我们可以对资产贡献进行求和,并确保其等于投资组合的总标准差。
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/