主要内容:

1. 自相关性和自相关系数

2. 强平稳和弱平稳

3. Python平稳性检验实战

重要性:10分 (1-10)。

时间序列数据的平稳性对于我们采用什么样的分析方式、选择什么样的模型有着至关重要的影响。

我们想一下,假如一个时间序列的波动趋势从来没有稳定过,那么它每个时期的波动对于之后一段时期的影响都是无法预测的,因为它随时可能“变脸”。而当一个时间序列的特征维持稳定,比如它的均值和方差是稳定的,那么我们认为在之后的一段时间里,它的数据分布跟历史的数据分布大概率是保持一致的,这时,我们就可以基于历史数据对未来的走势做一个预测,这能帮助我们找到更大概率成功的决策。

股票数据,就是极为常见的一种时间序列数据。在量化过程中应用时间序列分析手段时,我们往往需要先进行平稳性检验,从而选择合适的研究方法。

在学习平稳性之前,我们先了解一下自相关性的概念。

一、自相关性

自相关性与相关性

我们知道,相关性常用于统计两个变量之间是否存在某种关联。那么,自相关性代表了变量与自身之间的相关性,只不过一般情况下我们统计的是两组隶属于不同时间区间的数据。当两组数据的时间范围相同时,其相关性为1(相当于两组完全相同的数据)。

之前我们曾经学习过Pearson相关系数,自相关系数的计算和Pearson相关系数的计算过程非常相似,但是它们在分母上有些区别。Pearson相关系数的计算中,分母为两个变量的标准差之积;而在自相关系数的计算中,我们会直接使用第k期时间序列数据的方差:

自协方差的计算与协方差的计算是一致的:

事实上,自相关性存在一定的问题。一般来说,在一组时间序列数据中,相邻时间节点的数据间往往存在某些关联。第1期对第2期有影响,第2期对第3期有影响……也就是说,我们的自相关系数衡量的不仅仅是

期之前的数据对当前期数据的影响,也包含了更早期的数据带来的间接影响。

为了解决这个问题,我们引入了偏自相关系数,它是X(k)与X(k-l)之间的条件自相关系数。其计算非常复杂,这里不再展开。好在我们可以用Python的statsmodels库非常轻易地完成计算。

自相关系数和偏自相关系数的计算

在Python中,可以用statsmodels提供的工具来计算自相关性和偏自相关性。我们以上证综指的收益率数据来进行演示。

import tushare as tsfrom statsmodels.tsa import stattoolspro = ts.pro_api()df = pro.index_daily(ts_code='000001.SH', start_date='20180901')print('自相关系数: \n', stattools.acf(df.pct_chg, nlags=10))print('自相关系数: \n', stattools.pacf(df.pct_chg, nlags=10))

输出为:自相关系数: [ 1. -0.1692613 -0.03035227 0.22164563 -0.11543326 -0.05630536 -0.18736445 0.04942778 -0.02089329 -0.00722488 -0.03940862]自相关系数: [ 1. -0.17100626 -0.06204206 0.21965218 -0.04895894 -0.08142805 -0.30000036 0.00808857 0.01488787 0.11432786 -0.12407987]

可以看到,这里自相关系数和偏自相关系数的计算都返回了长度为10的数组。它们分别代表了当

的取值为从0到10时的自相关性统计。这里acf()方法用于计算自相关系数,pacf()用于计算偏自相关系数,nlags参数用于指定最大的l,这里我们指定了10,所以就会最多对比当前期与10期之前的时间序列数据,这里10期就是10个交易日。

二、平稳性

平稳性分为强平稳和弱平稳。

强平稳的要求非常严格,它要求两组数据之间的任何统计性质都不会随着时间改变。其要求过于严苛,理论上很难证明、实际中难以检验,因此它基本上没有什么应用场景。

弱平稳

与强平稳对应的是弱平稳,其应用比较广泛,它有三个要求:

简而言之,一组时间序列数据的均值恒定、方差始终存在、自协方差不随时间波动,即可认定其为弱平稳序列。

强平稳与弱平稳之间并没有包含关系,弱平稳不一定是强平稳,强平稳也不一定是弱平稳。这是因为符合强平稳标准的时间序列数据不一定存在均值和方差,而当强平稳序列存在均值和方差时,它就一定也是弱平稳序列。

另外,一个服从正态分布的弱平稳时间序列也是强平稳的。这是因为在正态分布中,确定了均值和方差,也就确定了整个分布,也就是说该时间序列的不同时期的分布是相同的,这就符合了强平稳的定义。

三、平稳性的检验

我们还是用上证综指的行情数据来演示如何在Python中进行平稳性检验。

时序图

这次我们取稍长一些的时间区间:从18年6月份至今的数据。然后我们将日期字符串转换成日期类型,并且设置为数据框的索引,并且对数据按照时间增序排列。

df = pro.index_daily(ts_code='000001.SH', start_date='20180601')df.index = pd.to_datetime(df.trade_date)df = df.sort_index(ascending=True)plt.figure(figsize=(10,5))df.pct_chg.plot();

可以看到,上证综指的收盘收益率数据基本上是围绕着0轴上下波动,在0轴上方和下方的波动幅度基本一致。我们可以初步认定,该时间序列是平稳的。

自相关图和偏自相关图

我们还经常结合自相关图和偏自相关图来判断时间序列的平稳性。plt.stem(stattools.acf(df.pct_chg));

可以看到,0阶自相关系数和0阶偏自相关系数都恒为1。在下面两幅图中,自相关系数和偏自相关系数迅速由1减小到0附近,之后随着阶数

的上升在0轴上下小幅波动,这基本上是符合平稳性的要求的。

plt.stem(stattools.pacf(df.pct_chg));

单位根检验

前两种方式很直观,但也很主观。它们全靠肉眼的判断和判断人的经验,不同的人看到同样的图形,很可能会给出不同的判断。

因此我们需要一个更有说服力、更加客观的统计方法来帮助我们检验时间序列的平稳性,这种方法,就是单位根检验。

当一个时间序列的滞后算子多项式方程存在单位根时,我们认为该时间序列是非平稳的;反之,当该方程不存在单位根时,我们认为该时间序列是平稳的。其原理比较复杂,想要理解它需要较好的数学基础,因此这里我们主要看如何在Python中应用它,原理部分可以自行搜索相关资料阅读。

常见的单位根检验方法有DF检、ADF检验和PP检验,今天我们会用ADF检验来为大家演示。

在Python中,有两个常用的包提供了ADF检验,分别是statsmodel和arch。from statsmodels.stats.diagnostic import unitroot_adfunitroot_adf(df.pct_chg)

输出为:

这里包含了检验值、p-value、滞后阶数、自由度等信息。我们看到了检验统计量为-14.46,远小于1%的临界值-3.47,即p值远小于0.01,因此我们拒绝原假设,认为该时间序列是平稳的。(这里原假设是存在单位根,即时间序列为非平稳的。)

使用arch的方法为:

from arch.unitroot import ADFADF(df.pct_chg)

其输出信息基本是一致的。

python时间序列平稳性检验_Python量化投资基础:时间序列的平稳性检验相关推荐

  1. python不同时间周期k线_Python量化交易基础讲堂-股票分笔数据跨周期处理

    <Python实战-构建基于股票的量化交易系统>小册子主要侧重于 Python 实战讲解,但在内容设计上提供了前置基础章节帮助读者快速掌握基础工具的使用.同时我们会持续更新一些关于Pyth ...

  2. 基于python的量化投资基础(Chapter.0)——概述

    量化交易概述 量化交易就是通过数理统计模型方式及计算机程序化发出买卖指令去实现投资理念.实现投资策略的过程,以获取稳定收益为目的的交易方式. 广义的量化投资=基于现代科学方法的理论体系+研究方式+工程 ...

  3. 金融统计分析python论文_Python量化投资远程班

    2017年6月10-11,17-18日四天 讲师介绍: 王小川,同济大学管理学博士,MATLAB技术论坛管理团队核心成员,经管之家(原人大经济论坛)数据分析与挖掘课程培训Python主讲导师,证券从业 ...

  4. python量化投资培训清华大学深研院_Python量化投资远程班

    2017年6月10-11,17-18日四天 讲师介绍: 王小川,同济大学管理学博士,MATLAB技术论坛管理团队核心成员,经管之家(原人大经济论坛)数据分析与挖掘课程培训Python主讲导师,证券从业 ...

  5. python与量化投资从基础到实战王小川_Python量化投资从基础到实战现场班_王小川老师主讲-经管之家官网!...

    课程特色: 1:现场教学,可现场和老师互动,解决从业疑惑: 2:课程内容丰富,囊括了许多量化投资的理论知识: 3:基础班从零开始,快速掌握Python金融编程所需: 4:教学过程深入浅出, 以实例与实 ...

  6. python量化投资实训班_Python量化投资实训营

    配合大鱼金融联手塑造 清华导师领衔授课,全程在清华校园上课 五天掌握Python量化投资必备技能 Python量化投资实训营 五大课程亮点 1. 结构化课程与实战教学 要深入学习量化投资,不仅需要学习 ...

  7. python实训收获_Python量化投资实训营

    原标题:Python量化投资实训营 时间:基础班:2018.2.2~2018.2.7(五天) 地点:清华大学深圳研究生院量化研究中心 在2017年,已经成功举办3期线下营队 公益支持方为 清华大学深圳 ...

  8. python量化投资数据类型_python量化投资(二):如何得到数据

    在python量化投资(一)中我们写到,我们计算的前提是有数据,但是如何得到数据?上次也说了几种途径,今天主要讲解怎样提取数据,有一个前提条件 安装了python,笔者还安装了pychramIDE 一 ...

  9. python assert 用法_Python量化投资实战营大咖开讲!

    点击上方蓝字,关注宽客空间 Python量化投资实战营进入第二周.经过周中的线上交流,同学们已经提前完成上周作业.信心满满开始了本周课程. 本周,某知名资管量化总监金焰博士带领量化投资团队来到实战营. ...

最新文章

  1. 多任务学习,如何设计一个更好的参数共享机制?| AAAI 2020
  2. sqlite3数据库最大可以是多大?可以存放多少数据?读写性能怎么样?详述
  3. oracle修改某表中的顺序,oracle 数据库 , 表中字段顺序修改
  4. python装饰器带参数函数_当我使用带参数的python装饰器时,如何将参数传递给最内部的函数?...
  5. go语言一天入门(下)
  6. gan 总结 数据增强_吴恩达Deeplearning.ai国庆上新:GAN专项课程
  7. Python读取文本文件
  8. python如何访问对象的属性_Python:从存储在字典中的对象访问对象属性
  9. MIT“食人花”机器人,能抓起120倍重的物体,软硬皆可,不问形状
  10. linux 内核网络,数据接收流程图
  11. QString和std::string转换乱码与sqlite存储汉字乱码
  12. NOD32 病毒定义更新程序 v2.1
  13. lora 调制解调器计算器_如何将Android手机用作调制解调器; 无需生根
  14. php在简历模版文件,PHP简历模板
  15. 分享5个宝藏文字转语音配音软件,错过太可惜
  16. 3D图形学基础 基本概念
  17. php模板如何使用,PHP自定义模板标签详细解答,让你轻松驾驭
  18. 期末前端web大作业——动漫客栈响应式bootstarp(7页) 排版整洁,内容丰富,主题鲜明
  19. Unity材质快速复制
  20. H5兼容问题及解决方法

热门文章

  1. oracle vm 产品介绍,Oracle VM Server for SPARC 产品概述
  2. Linux下Bluetooth编程
  3. java caller_【JavaScript】callee 与 caller
  4. Linux下父进程子进程先后终止的不同处理
  5. 【转】HDMI、DVI接口差异之解析
  6. Machine learning system design - Error analysis
  7. 电脑:键盘快捷键的更改(主要以dell笔记本电脑为模拟对象)
  8. WebDAV之葫芦儿·派盘+Ever play播放器
  9. 进cf一直连接服务器失败怎么办,Win7玩穿越火线提示连接服务器失败的原因及解决方法...
  10. 从大数据+AI 谈谈概念与场景