金融数据分析中常见的三中类型

Cross Section Data横截面数据

描述的是不同个体在同一时间的属性或特征变量,比如不同公司在同一时间发布的财务报表中,可以得到同一时间的Net Income

Time Series Data时间序列数据

记录的是同一个体的某个特征随着时间的推移不断发展的过程。

Panel Data面板数据

刻画的是不同个体的某个特征随着时间的推移各自变化的经过

时间序列的基本性质

自相关性

相关性一般指两个变量之间是否存在某种关联,自相关性指一个时间序列的两个不同时间点的变量是否存在关联。如果时间序列不具有自相关性,那么根据过去推测未来毫无意义。

自相关系数函数ACF

statsmodels中的acf()函数


acf(x, unbiased=False, nlags=40, qstat=False, fft=False, alpha=None)


x:时间序列对象

unbias:如果该参数为True,python在计算自相关系数时会对分母进行调整,使结果为无偏估计值

nlags:数值型参数,表示计算自相关系数的最大滞后期数

qstat:表示是否返回Ljung-Box检验的结果

fft:默认为False,表明要使用的算法

alpha:表示计算自相关系数的置信区间所用的置信水平,默认为None,即不计算置信区间

画自相关系数图plot_acf


from statsmodels.graphis.tsaplots import *
plot_act(x, use_vlines=True, lags=30)


x:时间序列对象

use_vlines:True画垂直线

lags:水平轴滞后值

偏自相关系数函数PACF

statsmodels中的pacf()函数


pacf(x, nlags=40, method='ywunbiased', alpha=None)


类似于acf()

画偏自相关系数图plot_pacf


from statsmodels.graphis.tsaplots import *
plot_pact(x, use_vlines=True, lags=30)


平稳性

如果时间序列基本特性维持不变,那么该时间序列就是平稳的,相反,如果时间序列的基本特性只存在于所发生的当期,并不会延续到未来,那么这样一个时间序列并不足以昭示未来,那么该时间序列是非平稳的。

平稳性检验

观察时间序列图

如果数据的时序图围绕一个水平线上下以大致相同的幅度波动,那么该时间序列可能具备弱平稳性。如果时序图有着明显递增、递减趋势或周期性波动的形态,那么时间序列很有可能是不平稳的。

观察序列的自相关图和偏自相关图

一般对于平稳时间序列来说,其自相关系数或者偏自相关系数大都快速减小至0附近或者在某一阶段后变为0。很多非平稳时间序列则没有这样的特征,其自相关系数多会呈现缓慢下降的趋势,而不是快速减小。

单位根检验

arch包中的ADF函数

ADF(y, lags, trend, max_lags, method)

y:要进行单位根检验的序列

trend:用来控制检验模型类型

lag:滞后阶数

max_lags:使用method参数所指定的方法选择滞后阶数时所选择的阶数上限。

method:选择阶数时常用的方法,包括aic,bic和t_stat三种

from arch.unitroot import ADF

# 单位根检验
adfSHRet = ADF(SHRet)
print(adfSHRet.summary().as_text())

统计量<临界值:拒绝序列非平稳的原假设,即序列平稳

统计量>临界值:接受序列非平稳的原假设,即序列非平稳

白噪声

白噪声序列一定是平稳的时间序列,白噪声的均值方差为常数;其间隔大于0的自协方差都等于0。

白噪声检验-Ljung-Box检验

调用statsmodels中的q_stat()函数

q_stat(x, nobs, type='ljungbox')

x:所检验的自相关系数序列

nobs:表示自相关序列x所用的样本数

type:检验类型