为什么我的协方差矩阵返回 NAN?

问题描述

我正在尝试使用 PyPortfolio 的 risk_models 中的 sample_cov 函数,但由于某种原因,它在某个 df 上返回几乎所有的 nan。我有 2009-2021 年 S&P500 收盘价的 df,我运行 cov 函数并返回一个 cov 矩阵。但是当我将 S&P500 与 2009-2019 拼接并尝试运行相同的函数时,它几乎返回所有 nan。

print(sp500_df.tail())

                   MMM         ABT  ...       ZION         ZTS
Date                                ...                       
2021-01-11  165.199997  110.395256  ...  49.869999  169.389999
2021-01-12  166.509995  108.403282  ...  50.360001  166.119995
2021-01-13  166.279999  111.700005  ...  49.790001  161.949997
2021-01-14  166.410004  110.040001  ...  50.919998  160.960007
2021-01-15  165.550003  111.300003  ...        NaN         NaN

[5 rows x 504 columns]

sp5002019 = pd.DataFrame(sp500_df['20080102':'20191231'])

print(sp5002019.tail())


                   MMM        ABT       ABBV  ...         ZBH       ZION         ZTS
Date                                          ...                                   
2019-12-24  170.337433  85.580559  84.152634  ...  149.438736  49.653328  132.162842
2019-12-26  170.250656  85.580559  84.133904  ...  149.111359  49.778591  132.272202
2019-12-27  170.896606  85.698227  83.543846  ...  148.823654  49.624416  132.490967
2019-12-30  169.517944  85.109917  82.906975  ...  147.573624  49.884586  131.456894
2019-12-31  170.086777  85.168739  82.925713  ...  148.496262  50.029121  131.596085

[5 rows x 504 columns]

除了结束日期之外,数据框看起来都一样。第一个 cov 矩阵看起来不错。


print(risk_models.sample_cov(sp500_df))

Output:
            MMM       ABT      ABBV  ...       ZBH      ZION       ZTS
MMM    0.052624  0.023464  0.024383  ...  0.030192  0.052260  0.022737
ABT    0.023464  0.049068  0.030018  ...  0.027599  0.027656  0.031028
ABBV   0.024383  0.030018  0.081892  ...  0.028986  0.027227  0.031080
ABMD   0.033188  0.032398  0.029215  ...  0.033710  0.063857  0.029714
ACN    0.031301  0.027153  0.025652  ...  0.032252  0.044981  0.029861
ATVI   0.021826  0.022935  0.023921  ...  0.018736  0.031229  0.024610
ADBE   0.032903  0.029217  0.031165  ...  0.030865  0.050882  0.032634
AMD    0.042523  0.036737  0.034804  ...  0.042089  0.072795  0.040516
AAP    0.025178  0.020672  0.024203  ...  0.025371  0.041170  0.024762
AES    0.038340  0.023397  0.024108  ...  0.039963  0.073331  0.025160
AFL    0.044464  0.026346  0.025432  ...  0.044552  0.113288  0.027762
A      0.038961  0.030574  0.031437  ...  0.037080  0.064816  0.031587
APD    0.034406  0.025295  0.024556  ...  0.031004  0.051604  0.027288
AKAM   0.031521  0.026439  0.024881  ...  0.026390  0.053587  0.025767
ALK    0.043832  0.026042  0.031339  ...  0.047166  0.080761  0.033610
ALB    0.045296  0.029126  0.025334  ...  0.040942  0.077265  0.031627
ARE    0.035900  0.024384  0.023103  ...  0.031971  0.076300  0.023462
ALXN   0.029687  0.033087  0.041106  ...  0.032400  0.042256  0.032157
ALGN   0.044160  0.041374  0.040065  ...  0.053207  0.065849  0.044842
ALLE   0.031640  0.028391  0.027681  ...  0.033004  0.044273  0.031188
LNT    0.021437  0.018027  0.015366  ...  0.020523  0.029265  0.017602
ALL    0.034743  0.024792  0.021483  ...  0.035532  0.076166  0.024567
GOOGL  0.028971  0.025376  0.028720  ...  0.029479  0.045219  0.028221
GOOG   0.029060  0.025198  0.028590  ...  0.029586  0.045503  0.028164
MO     0.019681  0.017218  0.015343  ...  0.019890  0.022259  0.017586
AMZN   0.026677  0.022868  0.024878  ...  0.024491  0.039035  0.026355
AMCR   0.017236  0.010889  0.010404  ...  0.020770  0.017653  0.014053
AEE    0.022735  0.020096  0.016084  ...  0.019617  0.029254  0.019089
AAL    0.054863  0.030110  0.030088  ...  0.057510  0.107462  0.033565
AEP    0.018154  0.016108  0.013244  ...  0.015221  0.022727  0.014972
        ...       ...       ...  ...       ...       ...       ...
VNO    0.044229  0.024267  0.024902  ...  0.044596  0.099375  0.023228
VMC    0.037842  0.022388  0.025079  ...  0.038869  0.074202  0.027251
WRB    0.029512  0.023697  0.020820  ...  0.029898  0.055913  0.025015
WAB    0.042811  0.024439  0.027991  ...  0.043960  0.082264  0.027546
WMT    0.015086  0.015828  0.013120  ...  0.009665  0.016128  0.013396
WBA    0.027833  0.023533  0.024841  ...  0.026301  0.044154  0.021086
dis    0.034821  0.022121  0.022360  ...  0.034202  0.060829  0.024608
WM     0.024294  0.019601  0.018229  ...  0.023547  0.035900  0.020957
WAT    0.032464  0.026008  0.027578  ...  0.033631  0.044716  0.027234
WEC    0.019671  0.018611  0.014496  ...  0.016155  0.016651  0.016841
WFC    0.050526  0.031091  0.028623  ...  0.047327  0.150764  0.027511
WELL   0.031998  0.019244  0.022225  ...  0.038771  0.066317  0.023819
WST    0.024363  0.025749  0.025073  ...  0.026957  0.041133  0.026859
WDC    0.042739  0.030026  0.033162  ...  0.044116  0.073640  0.037750
WU     0.031999  0.021716  0.020522  ...  0.030557  0.059615  0.023742
WRK    0.050932  0.036719  0.039445  ...  0.045034  0.082942  0.039414
WY     0.045963  0.032298  0.029116  ...  0.047939  0.084548  0.034711
WHR    0.049995  0.032365  0.029894  ...  0.046949  0.088162  0.035569
WMB    0.040960  0.026998  0.037858  ...  0.043304  0.080750  0.030579
WLTW   0.026414  0.021585  0.020351  ...  0.026741  0.044352  0.023688
WYNN   0.053590  0.027558  0.036621  ...  0.057206  0.109107  0.039082
XEL    0.018366  0.017677  0.014536  ...  0.016419  0.017565  0.017329
XRX    0.045710  0.028037  0.030391  ...  0.050903  0.085452  0.033955
XLNX   0.034990  0.026122  0.026388  ...  0.027270  0.048978  0.029090
XYL    0.034939  0.026976  0.026629  ...  0.029862  0.042624  0.029577
YUM    0.030559  0.022006  0.021038  ...  0.031350  0.046246  0.026969
ZBRA   0.036057  0.030041  0.030166  ...  0.035673  0.056049  0.035629
ZBH    0.030192  0.027599  0.028986  ...  0.073080  0.051597  0.028890
ZION   0.052260  0.027656  0.027227  ...  0.051597  0.223081  0.023668
ZTS    0.022737  0.031028  0.031080  ...  0.028890  0.023668  0.064356

[504 rows x 504 columns]

但是当我尝试使用 2019 df 时,我得到了:

print(risk_models.sample_cov(sp5002019))

            MMM  ABT  ABBV  ABMD  ACN  ATVI  ...  XYL  YUM  ZBRA  ZBH  ZION  ZTS
MMM    0.042993  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ABT         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ABBV        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ABMD        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ACN         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ATVI        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ADBE        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AMD         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AAP         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AES         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AFL         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
A           NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
APD         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AKAM        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ALK         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ALB         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ARE         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ALXN        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ALGN        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ALLE        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
LNT         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ALL         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
GOOGL       NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
GOOG        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
MO          NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AMZN        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AMCR        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AEE         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AAL         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
AEP         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
        ...  ...   ...   ...  ...   ...  ...  ...  ...   ...  ...   ...  ...
VNO         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
VMC         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WRB         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WAB         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WMT         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WBA         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
dis         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WM          NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WAT         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WEC         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WFC         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WELL        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WST         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WDC         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WU          NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WRK         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WY          NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WHR         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WMB         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WLTW        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
WYNN        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
XEL         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
XRX         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
XLNX        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
XYL         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
YUM         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ZBRA        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ZBH         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ZION        NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN
ZTS         NaN  NaN   NaN   NaN  NaN   NaN  ...  NaN  NaN   NaN  NaN   NaN  NaN

[504 rows x 504 columns]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)