是前因还是后果?——在真格量化中进行格兰杰因果检验

论坛 期权论坛 期权     
真格量化   2019-8-26 08:43   2431   0
“格兰杰因果检验”由2003年诺贝尔经济学奖得主克莱夫·格兰杰(Clive W. J. Granger)在20世纪60年代末提出并经过逐步完善。该方法的基本着眼点,是两个自由变量呈高度相关,并不能说明它们之间一定存在因果关系,可能有别的因素存在,使之显示出协同变化趋势,因此,须对相关变量进行因果关系检验。
“格兰杰因果检验”作为一种归因分析的方法,实现了跨学科的推广,特别是近年来,从社会经济学科被成功引入自然科学,尤其难得。






“格兰杰因果检验”的基本原理


简单的因果关系检验认为:如果事件A的发生改变了事件B发生的概率P,即P(B∣A)≠P(B),则可以认为事件A与事件B之间存在因果关系。但事实上,A可能并不是B的原因,可能有一个共同因素C影响着A和B,造成了A与B之间的联系,也可能存在A除了直接影响B,还通过影响C来间接影响B等更为复杂的联系。


“格兰杰因果检验”运用了信息集的概念,且强调事件发生的时间序列。要检验A和B之间的因果性,设Ωn为到时间n为止宇宙中有恒定时间间隔(t=1,2,…,n)的所有信息的集合(亦包含除A和B以外的信息),Bn为到时间n为止所有B的信息,Bn∈Ωn,则Ωn-Bn为到时间n为止B以外的所有信息。Bn和Ωn均为多元变量,且为随机变量。假设:(1)现在和过去可以影响未来,但未来不能影响过去;(2)Ωn不包含任何冗余信息,如果某变量Zn与其他一个或多个变量在功能上相关,则需将其从Ωn中去除。


如果有:P(An+1∣Ωn)≠P(An+1∣Ωn-Bn),则认为变量B是变量A的因,Bn包含一些独有的信息影响接下来An+1的发生。


“格兰杰因果检验”的思路与简单因果关系检验类似,但它集信息集的概念,把需要考虑的因素拓展。要得出B是A的原因的结论,理论上必须全面考虑论域中所有的变量,但实际操作中,不可能获得宇宙中所有的信息,而在有限的信息集中保证不遗漏重要的相关变量是非常关键的。目前很多采用“格兰杰因果检验”的研究是在两个变量之间进行检验,很容易出现遗漏重要信息的情况。例如,观察到气压计变动(A),下雨(B)的概率就会增加,即P(B|A)>P(B),显然气压计变动并不是下雨的真正原因,而气压计变动和下雨背后有一个共同的原因,即气压的降低,如果把气压降低(C)纳入信息集,A就不再是B发生的原因了。






时间序列因果检验是该方法的核心,即如果B对A构成格兰杰因果性,则Bn会影响An+1的概率分布。传统因果关系的一个缺点是没有考虑事件发生的先后,导致有时从统计上无法区分原因和结果,从公式推导上,如果P(B|A)>P(B),则P(A|B)>P(A)一定成立,即:如果A是B的原因,则必然可以推导出B是A的原因。例如,如果P(关节痛|阴天)>P(关节痛),即阴天导致关节痛的概率增加,那么按照公式一定可以推出P(阴天|关节痛)>P(阴天),关节痛导致阴天的概率更大,这显然是不合逻辑的。“格兰杰因果检验”通过考虑时间发生的先后顺序来解决类似问题。时间序列分析是格兰杰对经济学界做出的伟大贡献,诺贝尔奖评委会认为,格兰杰的工作改变了经济学家处理时间序列数据的方法,对研究财富与消费、汇率与价格以及短期利率与长期利率之间的关系具有非常重要意义。


在真格量化中进行格兰杰因果关系检验






格莱杰因果检验基于一个假设,即 X 导致了 Y 的发生,那么基于 Y 的先前值与 X 的先前值得到的 Y 的预测值,要优于仅根据 Y 本身得到的预测值。






statsmodels包提供了便捷的检验方法。它可以接受一个二维数组,其中第一列为值,第二列为预测因子。


例如在真格量化中:






零假设为:第二列的序列与第一列不存在格兰杰因果关系。如果 P 值小于显著性水平 0.05,就可以拒绝零假设,从而知道 X 的滞后是起作用的。
第二个参数 maxlag 表示该检验中涉及了 Y 的多少个滞后期。


在上面的例子中,全部测试结果中的 P 值都为零,说明 'month' 可用作预测‘value’的数量。





— — — — — — E N D — — — — — —



真格量化可访问:
https://quant.pobo.net.cn


真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887






往期文章:
Numpy处理tick级别数据技巧
真正赚钱的期权策略曲线是这样的
多品种历史波动率计算
如何实现全市场自动盯盘
AI是怎样看懂研报的
真格量化策略debug秘籍
真格量化对接实盘交易
常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法
如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

活用订单类型规避频繁撤单风险

真格量化回测撮合机制简介

如何调用外部数据

如何处理回测与实盘差别

如何利用趋势必然终结获利

常见量化策略介绍

期权交易“七宗罪”

波动率交易介绍

推高波动率的因素

波动率的预测之道

趋势交易面临挑战
如何构建知识图谱
机器学习就是现代统计学

AI技术在金融行业的应用

如何避免模型过拟合

低延迟交易介绍

架构设计中的编程范式

交易所视角下的套利指令撮合

距离概念与特征识别

气象风险与天气衍生品

设计量化策略的七个“大坑”

云计算在金融行业的应用

机器学习模型评估方法
真格量化制作期权HV-IV价差
另类数据介绍

TensorFlow中的Tensor是什么?

机器学习的经验之谈

用yfinance调用雅虎财经数据

容器技术如何改进交易系统
Python调用C++
如何选择数据库代理
统计套利揭秘

[h1]一个Call搅动市场?让我们温习一下波动率策略[/h1][h1]如何用真格量化设计持仓排名跟踪策略[/h1][h1]还不理解真格量化API设计?我们不妨参考一下CTP平台[/h1][h1]理解同步、异步、阻塞与非阻塞[/h1][h1]隐波相关系数和偏度——高维风险的守望者[/h1]Delta中性还不够?——看看如何设计Gamma中性期权策略

[h1]Python的多线程和多进程——从一个爬虫任务谈起[/h1]线程与进程的区别
皮尔逊相关系数与历史K线匹配

Python2和Python3的兼容写法
Python代码优化技巧

理解Python的上下文管理器

如何写出更好的Python代码?这是Python软件基金会的建议
评估程序化模型时我们容易忽视的指标

看看如何定位Python程序性能瓶颈

什么是Python的GIL

投资研究中的大数据分析趋势及应用

理解CTP中的回调函数

如何围绕隐含波动率设计期权交易策略                    
看看如何用Python进行英文文本的情感分析
算法交易的分类

Python编码的最佳实践总结

什么是波动率锥?如何用波动率锥设计期权策略?
期权的波动率策略与时间价值收集策略对比

期权用于套期保值和无风险套利

隐含波动率对期权策略的影响

卖出期权交易的风险管理原则和技巧
期权交易中的“大头针”风险
期权做市商策略简介

精细化您的交易——交易成本评估与交易执行策略
海外市场交易执行策略的实践
设计期权套期保值方案时应注意的问题
美式期权、欧式期权比较分析——定价与风险管理
构建您的AI时代武器库——常用的机器学习相关Python库
期权波动率“微笑曲线”之谜
运算任务愈发繁重,如何加速Python程序运行?
证券市场微观结构理论模型是什么

是瞬间成交还是漫长等待?——如何衡量市场流动性
波动率指数及其衍生品介绍

Python的异常处理技巧

Python中的阻塞、异步与协程

"香草"之外的更多选择——几种常见的路径依赖奇异期权
什么是CTP?——了解上期所CTP快速交易系统
了解季节性——以谷物和油籽为例
















分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:870
帖子:180
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP