熊猫.cov()不是半正定的

时间:2018-01-02 19:55:01

标签: pandas math matrix covariance

简短的问题。方差 - 协方差矩阵应该是正半定且对称的。使用Pandas函数.cov()不会在我的结尾返回正矩阵。相反,所有非对角线条目都是否定的:

首先,我生成几何布朗运动并计算日志返回

import numpy as np
import pandas as pd

def gen_paths(S0, r, sigma, T, M, I):
    dt = float(T) / M
    paths = np.zeros((M + 1, I), np.float64)
    paths[0] = S0
    for t in range(1, M + 1):
        rand = np.random.standard_normal(I)
        rand = (rand - rand.mean()) / rand.std()
        paths[t] = paths[t - 1] * np.exp((r - 0.5 * sigma ** 2) * dt +
        sigma * np.sqrt(dt) * rand)
    return paths

S0 = 100.
r = 0.05
sigma = 0.2
T = 1.0
M = 500
I = 5

paths = gen_paths(S0, r, sigma, T, M, I)
data = pd.DataFrame(paths)
rets = np.log(data / data.shift(1)).dropna()

现在,在数据帧上运行pandas .cov()函数返回

In[1]: rets.cov()

Out[1]: 
          0         1         2         3         4
0  0.000086 -0.000022 -0.000026 -0.000016 -0.000021
1 -0.000022  0.000080 -0.000018 -0.000022 -0.000018
2 -0.000026 -0.000018  0.000082 -0.000017 -0.000021
3 -0.000016 -0.000022 -0.000017  0.000074 -0.000019
4 -0.000021 -0.000018 -0.000021 -0.000019  0.000078

给出了对称性。肯定不是......

0 个答案:

没有答案