我有以下返回的数据帧
ret
Out[3]:
Symbol FX OGDC PIB WTI
Date
2010-03-02 0.000443 0.006928 0.000000 0.012375
2010-03-03 -0.000690 -0.007873 0.000171 0.014824
2010-03-04 -0.001354 0.001545 0.000007 -0.008195
2010-03-05 -0.001578 0.008796 -0.000164 0.015955
以及每个符号的以下权重:
^{pr2}$我试图获得每天的加权回报,并尝试:
port_ret = ret.dot(df3)
但我收到以下错误消息:
ValueError: matrices are not aligned
我的目标是每个日期都有一个加权回报,例如2010年3月2日,如下所示:
weighted_ret = 0.000443*.131243+.006928*.182022+0.000*0.151921+0.012375*.534814 = 0.007937512
我不知道为什么我会得到这个错误,但会很高兴有一个替代的解决办法加权回报
检查你调用点积的矩阵的形状。只有当A的第二个轴与B的第一个轴的大小相同时,才能计算矩阵
A.dot(B)
的点积。在您的例子中,您有额外的列和日期,这会破坏您的计算。你应该在计算中去掉它。尝试运行
port_ret = ret[:,1:].dot(df3[1:])
,并检查它是否产生您想要的结果。对于将来的情况,使用
numpy.shape()
函数来调试矩阵计算,这是非常有用的工具。在权重矩阵中有两列:
将该矩阵的索引设置为
^{pr2}$Symbol
,以获得正确的dot
:相关问题 更多 >
编程相关推荐