【问题标题】:Python - Marginal contribution to riskPython - 对风险的边际贡献
【发布时间】: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)

【问题讨论】:

标签: python matrix multiplication


【解决方案1】:

如果您将 Relativeweights = Portweights 等同起来,那么乘法将得到您期望的答案。

【讨论】:

  • 谢谢你-为什么我没看到!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 2017-03-03
  • 2011-09-13
  • 2018-08-27
  • 1970-01-01
相关资源
最近更新 更多