【发布时间】:2018-04-21 22:37:09
【问题描述】:
我对 python 2.7 还很陌生,在计算证券投资组合的方差和标准差时遇到了一些麻烦。这是我到目前为止所做的:
- 导入 numpy、pandas、pandas_datareader 和 matplotlib.pyplot 库
- 从 Excel 文档中导入证券列表的所有代码和权重(总共 9 个代码和权重)
- 创建了单独的列表来容纳代码和权重
- 从谷歌财经下载了所有历史价格数据
- 计算每种证券的每日对数回报并转换为年度估计值
- 计算每只证券估计的年度标准差和方差
- 创建的协方差和相关矩阵
- 将权重列表更改为数组
然后我在投资组合方差计算中遇到了错误。这是我正在使用的脚本:
# 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。 -
谢谢卡纳克和板骑手。转置版本效果很好。感谢您添加如何提问以及最小、完整和可验证的示例。我会看看这些链接以供以后的帖子