学习记录653@python时间序列自相关检验之混成检验

原理

学习记录653@python时间序列自相关检验之混成检验_第1张图片

代码

import tushare as ts
ts.set_token('你的code')
df=ts.get_k_data('399300', index=True,start='2016-01-01', end='2016-12-31')
df.head()
本接口即将停止更新,请尽快使用Pro版接口:https://tushare.pro/document/2
date open close high low volume code
0 2016-01-04 3725.86 3470.41 3726.25 3469.01 115370674.0 sz399300
1 2016-01-05 3382.18 3478.78 3518.22 3377.28 162116984.0 sz399300
2 2016-01-06 3482.41 3539.81 3543.74 3468.47 145966144.0 sz399300
3 2016-01-07 3481.15 3294.38 3481.15 3284.74 44102641.0 sz399300
4 2016-01-08 3371.87 3361.56 3418.85 3237.93 185959451.0 sz399300
import numpy as np
# 基于价格的原始收益率
df['r']=(df['close'] - df['close'].shift(1)) / df['close'].shift(1)

# df['close'].shift(1) 下移一行
# 对数收益率定义为ln(e/s),其中e为下一期价格,s为上一期价格
df['rtn']=np.log(df['close'] / df['close'].shift(1))
df=df.dropna()
df.head()
date open close high low volume code r rtn
1 2016-01-05 3382.18 3478.78 3518.22 3377.28 162116984.0 sz399300 0.002412 0.002409
2 2016-01-06 3482.41 3539.81 3543.74 3468.47 145966144.0 sz399300 0.017544 0.017391
3 2016-01-07 3481.15 3294.38 3481.15 3284.74 44102641.0 sz399300 -0.069334 -0.071855
4 2016-01-08 3371.87 3361.56 3418.85 3237.93 185959451.0 sz399300 0.020392 0.020187
5 2016-01-11 3303.12 3192.45 3342.48 3192.45 174638387.0 sz399300 -0.050307 -0.051617
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
%matplotlib inline
fig = plt.figure(figsize=(10,5))
ax1=fig.add_subplot(111)
fig = plot_acf(df['rtn'],ax=ax1,lags=50) #最高50阶
plt.show()

学习记录653@python时间序列自相关检验之混成检验_第2张图片

# 对最高十阶的自相关系数进行检验
import statsmodels.api as sm
import pandas as pd
# 检验10个自相关系数
m = 10
acf,q,p = sm.tsa.acf(df['rtn'],nlags=m,qstat=True)
out = np.c_[range(1,11), acf[1:], q, p]
output=pd.DataFrame(out, columns=['lag', "AC", "Q", "P-value"])
output = output.set_index('lag')
output
AC Q P-value
lag
1.0 -0.178514 7.839777 0.005111
2.0 0.156326 13.876707 0.000970
3.0 -0.099271 16.321298 0.000974
4.0 0.056385 17.113263 0.001837
5.0 -0.166990 24.088764 0.000209
6.0 -0.026627 24.266859 0.000466
7.0 0.002090 24.267962 0.001022
8.0 0.000263 24.267979 0.002066
9.0 0.116595 27.726689 0.001059
10.0 -0.006233 27.736615 0.001989

以0.05为置信水平的话,这些p值均小于0.05,因此拒绝原假设,得出结论:自相关是显著的,可信的。

你可能感兴趣的:(python)