【发布时间】:2020-05-20 07:40:27
【问题描述】:
由于我一直在苦苦挣扎,有人可以帮忙解决以下问题吗?
对风险的边际贡献= 要找到每种资产的边际贡献,请取权重向量和协方差矩阵的叉积除以投资组合标准差。
现在将每个资产的边际贡献乘以权重向量以获得总贡献。然后我们可以将资产贡献相加,并确保它等于总投资组合标准差。
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)
【问题讨论】:
-
@P Micallef 发布每一步的数学公式
-
@P Micallef 我的意思是这样的:blog.thinknewfound.com/2014/07/risk-attribution-in-a-portfolio
-
@Zaraki Kenpachi - breakingdownfinance.com/finance-topics/modern-portfolio-theory/…
标签: python matrix multiplication