全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
4446 0
2014-10-16
本文翻译自楼主学习《Matlab Garch Toolbox.pdf》的翻译和总结

一、数据预处理
1、ascii2fts读取ascii2文件ibm95xxx.dat,并将其转化为金融时序对象ftsObj。2、ftsObj.X提取ftsObj中的某一列X,并使用fts2mat将其转换为矩阵向量Y


二、定性查看序列相关性
1、因为收盘价Y必然不平稳,使用price2ret对其进行连续复利差分,将其转化为收益率Z
此处,对价格序列取对数做差分有2点解释,但两者是内在一致的。
1)、连续复利(取对数)作差分(价格转化为收益率)
2)、异方差消除(取对数)作差分(非平稳转平稳)


2、使用autocorr和parcorr对收益率Z进行查看,观察ACF和PACF指数,通查发现该序列是纯随机的,ACF和PACF直接截尾,无任何相关性。但无相关性并不代码序列独立,对收益率Z取平方,发现该Z^2的ACF和PACF具有相关性。(若截尾,则Z^2平稳,若拖尾,则可能仍未平稳。)GARCH模型的研究对象之一就是原始序列不相关但不独立的序列,因为对其进行某些变化后,原始序列的变换或许会存在相关性。


三、定量检测序列相关性
1、相关性的假设检验,例如LBP Q检验和Engles's ARCH检验。(说明文档对这一块论述有误!)
(1)、lbqtest实现LBP Q检验看序列间是否真的有随机性。因为Q检验的虚无假设为残差序列间对于一个固定的滞后水平无自相关性,备择假设为存在某些自相关系数非零,所以经常用于建模后残差检验。但由于GARCH(1,1)默认收益率为一个常数与一个纯随机残差的和,所以此时也能作为建模前的检验。Q检验统计量服从一个渐进的卡方分布。
(2)、archtest实现了Engle's test去探测ARCH效应。虚无假设为序列间无ARCH效应,即残差序列无条件异方差性,备择假设为存在一个特定滞后水平的ARCH模型来描述残差的平方项。(所以archtest在示例中没有看平方项)Engle's test统计量服从一个渐进的卡方分布。
(3)、简言之,如果上述两类检验在0.05的置信度上经过10,15,20滞后水平,lbqtest检验该序列是否有自相关性,是否有可能采用GARCH建模,0表示无可能,1表示有可能。而archtest检验则是直接看该序列是否可以采用GARCH建模,0表示不可以,1表示可以(即在1~lags水平上残差存在ARCH效应,存在不为0建模参数)。故采用archtest较为直观和简洁,不易犯错,注意是残差序列是否具有ARCH效应。因为ARCH检验的是残差是否属于异方差。
2、注意:
(1)、在GARCH(1,1)模型中可以对(序列-序列均值)进行检验。因为 y(t) = C + e(t),所以预测误差e(t) = y(t) - C,此时C即为y(t)的均值。
(2)、正确理解大数定理与中心极限定理。同时[size=18.8888893127441px]因为任何检验分布的统计方法只能有把握得出“数据不服从某种分布”的结论,而没法说“经检验,数据服从某分布”——零假设可以有很多种,比如我们可以检验出数据不服从正态分布,不服从指数分布,不服从某t分布,等等,唯独不能得出结论说数据服从某分布,很可能最后的结果是“不能拒绝数据服从某Poisson分布、不能拒绝爱尔兰分布、不能拒绝……”。
[size=18.8888893127441px](首先,在时序数据分析中,MATLAB工具盒中的lbqtest检验和archtest都是对残差的检验。前者主要用于建模后的检验,目的是检查所建立的ARMAX模型是否对规律性提取完全(趋势性或季节性),若提取完全,则残差应当是纯随机白噪声的,若提取不完全,残差间仍具有相关性。此时,要么重新建立ARMAX模型,要么做残差自回归建模,即将残差再用时序模型建立一次。而后者,个人理解也应当是建立时序模型后对残差进行检验,毕竟ARCH模型提出的原因就是作者在研究英国通胀时发现无论怎么ARMAX建模都无法很好的预测,最后发现残差是异方差才建立了ARCH模型,由它的经验中我们可以知道,实际上作者本人也是建模之后才发现有ARCH效应的。所以我认为Benlaron的说法是合理的,需要先建模,再看建模后的残差序列。
其次,针对楼住的问题,我最近认真研究了一下MATLAB GARCH TOOLs的说明文档,请注意它采用lbqtest 和archtest检验时的大前期,即假设收益率序列为GARCH(1,1)模型,其中条件均值模型为: Y(t) = C + e(t),在这个大前提下,示例使用了 y - mean(Y)对e(t)来进行检验,mean(Y)就是对C的估计,可以看到,它确实是对建模后残差进行检验的。但为啥lbqtest用了平方,而archtest没有呢,从archtest的help中我们知道,archtest是对输入的残差项的平方检查是否可以建立ARCH(lags)模型,而lbqtest则就是检查输入的残差项是否具有自相关性。同时,我认为说明书中关于archtest检验方法的H0假设说明也是有误的。
总之,我认为,对于通常的时序序列建模,应该首先考虑是否可以使用常规ARMAX模型,若建模后残差具有自相关性,则需要残差自相关建模,若具有显著异方差性,即ARCH效应,则采用GARCH建模。
这是我最近关于GARCH建模的理解,希望能对楼主有所帮助。

[size=18.8888893127441px]

四、参数估计[size=18.8888893127441px]

(1)、模型参数估计。使用garchfit对原始回报序列进行拟合,它使用ARMAX定义条件均值,使用GARCH,EGARCH或GJR定义条件方差,参数估计的过程在于使用最大似然法对残差的推断。若只将回报序列作为残差输入,则仅采用默认的GARCH(1,1)模型+高斯分布假定残差进行建模。

(2)、参数查看。使用garchdisp函数列表查看各参数与参数估计的标准误差,同时还可以使用garch11grid查看在最优LLF下各Gi和Aj的关系。

五、估计后处理
(1)、使用garchplot,对比innovation(预测误差),条件标准差和回报序列。预测误差和汇报序列通常具有较强的集群性。
(2)、画图并比较标准化预测误差的相关性(标准化: 预测误差 / 条件标准差)
标准化后的预测误差通常集群性大大降低,同时标准化受预测误差平方的自相关系数autocorr非常低,通常没有相关性。若此时将该自相关系数与原始回报序列平方的自相关系数相比,该GARCH模型已经充分提取了原始回报序列的自相关性。
(3)、量化并比较标准化预测误差的相关性

六、模型定义
若需要采用更复杂的模型对回报序列进行建模,需要定义模型结构,并将定义后的结果作为参数传入到garchfit中。
(1)、使用garchset对模型结构参数完全定义。
(2)、使用garchget对定义的模型结构进行索引查看。
(3)、对定义的模型结构使用域操作符。

七、使用定义的模型做参数估计、模拟和预测
(1)、参数估计:garchfit
(2)、模型预测:garchpred,采用最小均方误差,默认预测单期。
(3)、使用蒙特卡洛路径模拟:garchsim。可以将garchsim看作是一个过滤器,可以使用它从一个白噪声输入的序列中生成一个可能的相关回报序列。即输入一个白噪声序列,它能使用fit出的模型模拟出相对应的innovations(预测误差),条件标准差和回报序列。初始白噪声序列会发生衰减。
(4)、使用garchinfer,推断sim模拟回报序列所对应的预测误差和条件标准差,同时可以与garchsim出来的结果进行比照。直接通过最大似然法从回报序列中进行推断。两者的差分体现的是由推断所引入的瞬时效应。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群