【问题标题】:Calculating portfolio variance and volatility in python在python中计算投资组合方差和波动率
【发布时间】:2018-04-21 22:37:09
【问题描述】:

我对 python 2.7 还很陌生,在计算证券投资组合的方差和标准差时遇到了一些麻烦。这是我到目前为止所做的:

  1. 导入 numpy、pandas、pandas_datareader 和 matplotlib.pyplot 库
  2. 从 Excel 文档中导入证券列表的所有代码和权重(总共 9 个代码和权重)
  3. 创建了单独的列表来容纳代码和权重
  4. 从谷歌财经下载了所有历史价格数据
  5. 计算每种证券的每日对数回报并转换为年度估计值
  6. 计算每只证券估计的年度标准差和方差
  7. 创建的协方差和相关矩阵
  8. 将权重列表更改为数组

然后我在投资组合方差计算中遇到了错误。这是我正在使用的脚本:

# Portfolio variance calc
pfolio_var = np.dot(weightsarray.T, np.dot(sec_returns.cov() * 250, weightsarray))
pfolio_var

# Portfolio volatility
pfolio_vol = (np.dot(weightsarray.T, np.dot(sec_returns.cov() * 250, weightsarray))) ** 0.5
pfolio_vol

and here is the error I receive:

ValueError                                Traceback (most recent call last)
<ipython-input-30-6b33caaac89a> in <module>()
      1 # Portfolio variance calc
----> 2 pfolio_var = np.dot(weightsarray.T, np.dot(sec_returns.cov() * 250, weightsarray))
      3 pfolio_var

ValueError: shapes (9,9) and (1,9) not aligned: 9 (dim 1) != 1 (dim 0)

提前感谢您的帮助!

【问题讨论】:

  • 您可能希望使用weightsarray 的转置版本,即weightsarray.T。我的意思是,pfolio_var = np.dot(weightsarray, np.dot(sec_returns.cov() * 250, weightsarray.T))。还可以考虑阅读how-to-ask。话虽如此,欢迎 SO。
  • 你可能想阅读How to Askminimal reproducible example
  • 谢谢卡纳克和板骑手。转置版本效果很好。感谢您添加如何提问以及最小、完整和可验证的示例。我会看看这些链接以供以后的帖子

标签: python numpy


【解决方案1】:

试试下面的:

投资组合差异

portfolio_variance=np.dot(weights.T,np.dot(log_returns.cov()*252,weights))

投资组合波动

portfolio_vol = np.sqrt(np.dot(weights.T,np.dot(log_returns.cov()*252,weights)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    相关资源
    最近更新 更多