时间序列学习(6):单整、协整、格兰杰检验
时间序列学习(6):单整、协整、格兰杰检验
- 1、单整序列
- 2、协整关系
- 3、模型解释与协整检验
- 4、华泰柏瑞300与兴全300究竟能否搬砖?
前面的笔记里,我们都是在研究一个时间序列(不同时间段)中的关系及性质。
很显然,我们可以把方法推广到两个时间序列(相同时间段)的研究中去。这就是这篇要讲的协整关系。
1、单整序列
我们在第5篇笔记的第3节里对指数的对数收益率序列做了一次差分。实际我们可以在差分序列上再做差分。
当某一个不平稳的时间序列做了n次差分后第一次变成平稳序列了,那么我们就称这个时间序列为n阶单整。
根据重要统计量(之前介绍过的均值、方差、自相关系数)的可加性,我们有以下两个结论:
- 平稳序列的线性组合也是平稳的;
- 平稳序列和一阶单整序列的线性组合是一阶单整的;
那么问题来了,两个一阶单整序列的线性组合还是一阶单整的吗?答案是不一定。
2、协整关系
但是有一种情况我们可能用两个一阶单整的序列构造出平稳序列(平稳序列的一阶差分一定也是平稳的)。
对于两个走势很像的时间序列,比如,格力和美的的股价走势,它们的对数收益率序列可以看成股价序列的一阶差分。
从前面的笔记可以假设对数收益率序列是平稳的。所以格力和美的的股价走势可以说是一阶单整的。
因为格力和美的的股价走势强相关,那么可以想象它们股价的差值序列似乎应该是平稳的。如果是平稳的,我们就说格力和美的的股价走势序列具有协整关系(Cointegration)。
更为严格的定义如下。给定两个时间序列{xt}\{x_t\}{xt}和{yt}\{y_t\}{yt},它们有如下的线性关系:
yt=αxt+β+residty_t=\alpha x_t+\beta+resid_tyt=αxt+β+residt
其中{residt}\{resid_t\}{residt}是残差序列。若,{xt}\{x_t\}{xt}和{yt}\{y_t\}{yt}是一阶单整的,且{residt}\{resid_t\}{residt}是平稳的,那么{xt}\{x_t\}{xt}和{yt}\{y_t\}{yt}具有协整关系。
描述协整关系的模型和AR模型很像,都是线性模型。区别在于AR模型描述的是一个序列的不同时间点的关系;协整模型描述的是两个序列的相同时间点的关系。
协整关系通常用在配对交易中,用来判断两个走势相近的标的价格差值序列是否平稳,进而判断这两个标的走势是否平稳。
在实际应用中,我们通常会对标的价格取对数,以减小量纲的影响。
3、模型解释与协整检验
我们针对两个序列寻找它们的协整关系,我们在它们之间建立了下面的关系:
yt=αxt+β+residty_t=\alpha x_t+\beta+resid_tyt=αxt+β+residt
由上式,我们已经假设这两个序列之间是线性关系。究竟具不具有线性关系,实际上需要验证的。所以当我们拟合出模型后,我们首先应该看看模型是否有不错的解释效果(实际上很多人都忽略了这一点);然后我们再进行协整的检验。
验证线性模型的解释效果有很多指标,SSE(和方差)、MSE(均方误差)、RMSE(均方根误差)、MAE(平均绝对误差)、R-Squared(R平方检验,为R平方,修正R平方等)。
因为本篇笔记还是以协整为核心,所以上述方法不详述了。后面碰到实际问题再说。
那么协整性怎么检验呢?一般有两个方法,约翰森(Johansen)检验法与恩格尔-格兰杰(Engel-Granger)检验法。
约翰森(Johansen)检验法针对含有滞后项的情况,如下:
yt=α0xt+α1xt−1+...+β+residty_t=\alpha_0x_t+\alpha_1x_{t-1}+...+\beta+resid_tyt=α0xt+α1xt−1+...+β+residt
本篇笔记考虑更为简单的恩格尔-格兰杰(Engel-Granger)检验法。对于下述关系式进行两步检验:
yt=αxt+β+residty_t=\alpha x_t+\beta+resid_tyt=αxt+β+residt
- 第一步: 基于OLS方法回归上述模型得到系数;
- 第二步:基于ADF方法检验序列{residt}\{resid_t\}{residt}是否平稳;若平稳,则{xt}\{x_t\}{xt}和{yt}\{y_t\}{yt}具有协整关系;否则,“存在协整关系”不成立。
4、华泰柏瑞300与兴全300究竟能否搬砖?
我们用上面的方法来研究两个时间序列:华泰柏瑞300与兴全300的净值序列。这两个序列都是跟踪沪深300的,因此我们会感性上觉得他们的走势应该强相关,所以很多人会用来做搬砖。那么我们看看它们究竟有没有这种强相关的关系,也就是协整关系。
首先,获取华泰柏瑞300(510300.XSHG)与兴全300(163407.XSHE)的2017年1月1日至2019年12月13日的净值序列,然后做对数处理。两者的走势如下:
p1 = get_price('510300.XSHG', start_date='2017-01-01', end_date='2019-12-13', frequency='daily', fields='close')
p2 = get_price('163407.XSHE', start_date='2017-01-01', end_date='2019-12-13', frequency='daily', fields='close')
ln_p1 = log(p1)
ln_p2 = log(p2)
看上去还挺一致。
下面我们构建它们净值之间的线性模型:
Y=αX+β+residY=\alpha X+\beta+residY=αX+β+resid
import statsmodels.api as smx = ln_p2
y = ln_p1
# 所构建模型若含常数项使用这一步,不含常数项就不含这一句
X = sm.add_constant(x)
result = (sm.OLS(y,X)).fit()
打印拟合结果看看:
红色框体中的R平方分析是模型对原始数据的解释度。0.7左右说明模型的解释性马马虎虎。
绿色框体是我们求得的两个参数:α=0.7082;β=0.8818\alpha=0.7082; \beta=0.8818α=0.7082;β=0.8818。
按照这两个参数可以画出拟合的线性曲线(其实是直线):
fig, ax = plt.subplots(figsize=(8, 6))ax.plot(x, y, 'o', label="data")
ax.plot(x, result.fittedvalues, 'r', label="OLS")
ax.legend(loc='best')
有了上面的具体参数,残差序列就得到了:
resid=Y−0.7082X−0.8818resid=Y-0.7082X-0.8818resid=Y−0.7082X−0.8818
我们进一步用ADF检验看看其平稳性:
from statsmodels.tsa.stattools import adfulleradfuller(resid.close)
结果如下:
(-1.5651429207395833,0.5010757745369381,5,713,{'1%': -3.43955476721974,'5%': -2.865602155751202,'10%': -2.5689331692727135},-4994.155385095142)
t-检验值没有显著小于10%的临界值,说明不能拒绝不平稳的假设。
在statsmodels中有更方便的判断两者是否协整的函数。
from statsmodels.tsa.stattools import cointcoint(x, y)
(-1.4004315479475968,0.7973652863497567,array([-3.9117583774179283, -3.3446531236567063, -3.0503622399733086]))
可以看到程序自带的函数进行的协整结果的t-检验值(-1.4004315479475968)也没有显著地小于array
中的三个临界值,所以不能接受这两个序列平稳的结论。
我们看看残差序列:
从残差序列也可以大概看出其不平稳性。
因此,利用华泰柏瑞300与兴全300搬砖的小伙伴可要小心,要反复确认它们在所考察的时间段内是否协整,且是否这种协整关系可延续。
另外,我们在建模的时候加入了常数项,也可以将常数项去掉看看建模效果。
时间序列学习(6):单整、协整、格兰杰检验相关推荐
- 一文读懂伪回归、协整、格兰杰
一.什么叫做伪回归 若是所建立的回归模型在经济意义上没有因果关系,那么这个就是伪回归,例如路边小树年增长率和国民经济年增长率之间存在很大的相关系数,但是建立的模型却是伪回归.如果你直接用数据回归,那肯 ...
- 计量经济学之时间序列的平稳性、单位根检验、协整检验、时间序列数据的一般处理流程
时间序列的平稳性 为什么要把时间序列变成平稳的?--平稳性的意义 如何检验时间序列数据的平稳性?--单位根检验 数据不平稳怎么办?--协整检验 单整.协整(cointegration) 协整检验 总结 ...
- 模型描述的关系模式_单位根检验、协整检验和格兰杰因果关系检验三者之间的关系...
实证检验步骤:先做单位根检验,看变量序列是否平稳序列,若平稳,可构造回归模型等经典计量经济学模型:若非平稳,进行差分,当进行到第i次差分时序列平稳,则服从i阶单整(注意趋势.截距不同情况选择,根据P值 ...
- 基于协整理论的配对交易
基于协整理论的配对交易 前导知识 协整 协整与相关 配对交易 策略思想 策略实现 前导知识 协整 在实际生活中,大多数经济金融时间序列通常是非平稳的,如果用这些非平稳时间序列来建立回归模型,那么就会产 ...
- r语言 协整_《量化金融R语言初级教程》一1.3 协整
本节书摘来异步社区<量化金融R语言初级教程>一书中的第1章,第1.3节,作者: [匈牙利]Gergely Daróczi(盖尔盖伊) , 等 译者: 高蓉 , 李茂 责编: 胡俊英,更多章 ...
- 可交易性(tradability)检验即协整性检验:线性关系
两个时间序列的线性关系表示为: 左边是两个时间序列的线性组合.是协整系数. 右边是残差序列(residual series),表示为由两部分组成.是均衡值(equilibrium value),是一个 ...
- 格兰杰检验的基本步骤_格兰杰检验流程
单位根检验.协整检验和格兰杰因果关系检验三者之间的关系 实证检验步骤:先做单位根检验,看变量序列是否平稳序列,若平稳,可构造回归模型等经典计量经济学模型:若非平稳,进行差分,当进行到第i次差分时序列平 ...
- R语言EG(Engle-Granger)两步法协整检验、RESET、格兰杰因果检验、VAR模型分析CPI和PPI时间序列关系...
全文链接:http://tecdat.cn/?p=31108 作为衡量通货膨胀的基本指标,消费者价格指数CPI和生产者价格指数PPI的作用关系与传导机制一直是宏观经济研究的核心问题.(点击文末&quo ...
- 计量经济学之时间序列分析学习笔记(单位根检验、协整检验、单整阶数判断、ECM建模)——基于R(二)
一.生成时间序列 data1=matrix(0,1000,1) for(i in 1:1000) {data1[i+1]=data1[i]+rnorm(1)} plot(data1,type=&quo ...
最新文章
- docker 可视化管理工具 rancher 简介
- ecshop“发货查询”中加入收货人、收货地址、发货时间、配送方式
- Android 6.0.1 Location Service 分析
- Qt::Key_Return和Qt::Key_Enter区别
- 面试官 | 这位连单点登录都不知道,让他回家等通知去吧
- A fully managed website and blog hosting platform
- 为啥我从后台查到的值在页面显示的是undefined_【java笔记】046天,作购物车页面,学习JavaScript...
- 如何优化myeclipse.
- img之间出现缝隙的原因_神马情况?美缝剂施工出现脱胶是什么原因?
- 遍历字段_以字段覆盖标准指导的高效测试生成技术
- 在C#中使用自定义消息
- Java小白进阶笔记(5)-进阶面向对象
- 『中安网培』***游戏过关攻略
- java网上购物系统_Java Web 应用教程——网上购物系统的实现
- (转)量化投资发展史:野蛮、乱象、科学
- MATLAB读取xls文件的内容
- 一夜没睡,仍然精力充沛——工作规划-2013.07.23
- 计算机设备选型的基本原则,信息系统设备选型原则.doc
- 内盘外盘新手看热闹,老手在内盘外盘看门道
- 关于AntMotion动画使用