python - Python - 对风险的边际贡献
问题描述
有人可以帮助我解决以下问题,因为我已经挣扎了一段时间。
对风险的边际贡献= 要找到每种资产的边际贡献,请取权重向量和协方差矩阵的叉积除以投资组合标准差。
现在将每个资产的边际贡献乘以权重向量以获得总贡献。然后我们可以将资产贡献相加,并确保它等于总投资组合标准差。
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)
解决方案
如果您将 Relativeweights = Portweights 等同起来,那么乘法将得出您期望的答案。
推荐阅读
- webpack - 刚刚生成的 jhipster 应用程序 - 无法读取未定义的属性“替换”
- dart - Flutter Reloading List with Streams & RxDart
- elasticsearch - 由管道分隔的数据的 Grok 模式,其中包含空格和可选值
- javascript - 加载 xml 文件并在列表框中显示
- vb.net - 通过 VB.net 应用程序控制 Web 浏览器
- php - 如何访问函数上下文中的对象?
- python - 有什么方法可以使用套接字相对快速地在 UDP 上发送大量数据(大约 10,000 字节)?
- r - 用于查找 nxn 矩阵行列式的 R 代码不适用于 n>=4
- excel - EXCEL 无法取消隐藏工作表
- java - 无法使用 URLClassLoader 和反射转换为接口类