如何用Pandas计算协方差矩阵

时间:2017-02-07 16:20:52

标签: python pandas numpy dataframe covariance

我试图弄清楚如何用Pandas计算协方差矩阵。 我不是一个数据科学家或财务人员,我只是一个常规的开发者,不在他的联盟中。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(252, 4)), columns=list('ABCD'))
print(df.cov())

所以,如果我这样做,我会得到那种输出:

enter image description here

我发现这个数字是巨大的,我期待它们接近于零。在获得cov之前我是否必须计算回报?

是否有人熟悉这一点可以解释一下这一点或指出我与解释的良好联系?我无法找到Covariance Matrix For Dummies的任何链接。

此致 于连

2 个答案:

答案 0 :(得分:2)

协方差衡量两个资产(或任意两个向量或数组)的回报同步移动的程度。正协方差意味着资产收益一起移动,而负协方差意味着收益反向移动。

另一方面,我们有:

相关系数是一种度量,用于确定两个变量的移动关联的程度。请注意,相关系数测量两个数组/矢量/资产之间的线性关系

因此,prtfolio经理试图减少两个资产之间的协方差,并保持相关系数为负,以使投资组合具有更高的多样化,并且减少一个资产的回报不会导致第二个资产的回报减少(最后一个是负相关)。 / p>

也许你的意思是相关系数接近零,而不是协方差。

答案 1 :(得分:0)

您没有为随机生成的数字提供种子这一事实使您的实验难以重现。但是,我尝试了你在这里提供的代码,我得到的更接近的协方差矩阵就是这个:

covariance matrix

要理解为什么cov_matrix中的数字如此之大,你应该先了解什么是covarance矩阵。协方差矩阵是一个矩阵,其中i,j位置中的元素是随机向量的第i个和第j个元素之间的协方差。

您可能检查的好链接是https://en.wikipedia.org/wiki/Covariance_matrix。理解相关矩阵可能会有所帮助:https://en.wikipedia.org/wiki/Correlation_and_dependence#Correlation_matrices