一: 平稳性判定。在建模前,决定数据预处理步骤。
- 序列图存在明显的周期性或趋势性。
- 序列图无明显的周期性或趋势性,查看自相关系数:
- 若自相关系数很快衰减到0,则序列平稳,同时随机性不强。(k阶截尾表示X(t)与X(t-k)含有一定的关系:短期自相关,k要尽可能小)
- 若自相关系数一开始便始终处于2倍标准差内波动,则序列平稳,同时具有较强随机性。
- 若自相关系数长期为同一符号,则具有一定趋势性。
- 若自相关系数呈三角函数曲线变化,则有一定周期性。
二: 纯随机性检验。
- 使用ACF和PACF并观察图像,但两者均只考虑是否存在某一特定滞后阶数的相关:
- 采用ACF和PACF指标对模型定阶并无统一标准,主观性成分居多同时不好程序化。
- 因此,多采用AIC、BIC等统计量对模型定阶。即,采用枚举的方法拟合所有模型,而后分别计算AIC,选取具有最小AIC的模型即可
- LB检验是基于一些列滞后阶数,判断序列总体的相关性或者随机性是否存在:
- 建模前,判断原始序列是否具有随机性,若随机则无法分析,若不随机则开始建模。
- 建模后,判断残差是否随机,对于方差齐性假设的ARIMA模型,如果残差随机则表示模型已提取全部相关组分,模型有效,若不随机则模型无效。
三: ARMA(p,q)模型的平稳性由AR部分决定,可逆性由MA部分决定:
- AR(p)模型讲求平稳性,引出偏自相关系数。给定X(t-1),.....,X(t-k+1)的情况下,考察X(t)和X(t-k)的关系。AR(p)模型自相关系数拖尾,偏相关系数p阶截尾。
- MA(q)模型讲求可逆性。MA(q)模型自相关系数q阶截尾,偏自相关系数拖尾。
- ARMA(p,q)自相关系数不截尾,其可以转化为无穷阶MA模型(传递形式),同时偏自相关系数不截尾,其可以转化为无穷阶AR模型(逆转形式)。
- 若自相关系数拖尾,偏自相关系数拖尾,则可以采用ARMA模型拟合。
四: ARIMA(p,d,q)模型是指d阶差分后自相关最高阶数为p,表示为自回归项(AR模型部分),移动平均项最高阶数为q的模型(MA模型部分)。
五: 个人总结:
- 时序模型在分析之余,略有点“套”的嫌疑,尤其是自相关系数与偏相关系数均不太稳定时,ARIMA模型建模尤其如此。正如回归分析采用枚举的方法找最大相关因子一样,目前所接触的统计方法中大抵如此。
- 直观上,通过ACF和PACF定阶存在一定困难,不会理论上完美截尾。有理论证明,当样本容量n充分大时,样本自相关系数与样本偏自相关系数近似服从正态分布。因此自相关系数与偏自相关系数需满足2倍标准差范围。
- 个人认为无必要刻意去追求构建ARIMA模型,只需将差分后的序列视作一个时间序列,了解它的内涵,预测时有所注意即可。
- 方差齐性假设采用ARIMA模型,异方差则采用GARCH模型。但建模前后均要LB检验模型是否符合原假设。
六: 实战:《Matlab Garch Toolbox.pdf》—— 单变量金融时序建模。
- 数据预处理:ascii2fts读取ascii2文件ibm95xxx.dat,并将其转化为金融时序对象ftsObj。2、ftsObj.X提取ftsObj中的某一列X,并使用fts2mat将其转换为矩阵向量Y。
- 定性查看序列相关性:收盘价Y必然不平稳,使用price2ret对其进行连续复利差分,将其转化为收益率Z。此处,对价格序列取对数做差分有2点解释,但两者是内在一致的:连续复利(取对数)作差分(价格转化为收益率);异方差消除(取对数)作差分(非平稳转平稳)。使用autocorr和parcorr对收益率Z进行查看,观察ACF和PACF指数,通查发现该序列是纯随机的,ACF和PACF直接截尾,无任何相关性。但无相关性并不代码序列独立,对收益率Z取平方,发现该Z^2的ACF和PACF具有相关性。(若截尾,则Z^2平稳,若拖尾,则可能仍未平稳。)GARCH模型的研究对象之一就是原始序列不相关但不独立的序列,因为对其进行某些变化后,原始序列的变换或许会存在相关性。
- 定量检测序列相关性
3.1 相关性的假设检验,例如LBP Q检验和Engles's ARCH检验。(说明文档对这一块论述有误!)
3.1.1 lbqtest实现LBP Q检验看序列间是否真的有随机性。因为Q检验的虚无假设为残差序列间对于一个固定的滞后水平无自相关性,备择假设为存在某些自相关系数非零,所以经常用于建模后残差检验。但由于GARCH(1,1)默认收益率为一个常数与一个纯随机残差的和,所以此时也能作为建模前的检验。Q检验统计量服从一个渐进的卡方分布。
3.1.2 archtest实现了Engle's test去探测ARCH效应。虚无假设为序列间无ARCH效应,即残差序列无条件异方差性,备择假设为存在一个特定滞后水平的ARCH模型来描述残差的平方项。(所以archtest在示例中没有看平方项)Engle's test统计量服从一个渐进的卡方分布。
3.1.3 简言之,如果上述两类检验在0.05的置信度上经过10,15,20滞后水平,lbqtest检验该序列是否有自相关性,是否有可能采用GARCH建模,0表示无可能,1表示有可能。而archtest检验则是直接看该序列是否可以采用GARCH建模,0表示不可以,1表示可以(即在1~lags水平上残差存在ARCH效应,存在不为0建模参数)。故采用archtest较为直观和简洁,不易犯错,注意是残差序列是否具有ARCH效应。因为ARCH检验的是残差是否属于异方差。
3.2 注意:
3.2.1 在GARCH(1,1)模型中可以对(序列-序列均值)进行检验。因为 y(t) = C + e(t),所以预测误差e(t) = y(t) - C,此时C即为y(t)的均值。
3.2.2 正确理解大数定理与中心极限定理。同时,因为任何检验分布的统计方法只能有把握得出“数据不服从某种分布”的结论,而没法说“经检验,数据服从某分布”——零假设可以有很多种,比如我们可以检验出数据不服从正态分布,不服从指数分布,不服从某t分布,等等,唯独不能得出结论说数据服从某分布,很可能最后的结果是“不能拒绝数据服从某Poisson分布、不能拒绝爱尔兰分布、不能拒绝……”。 - 参数估计
4.1 模型参数估计。使用garchfit对原始回报序列进行拟合,它使用ARMAX定义条件均值,使用GARCH,EGARCH或GJR定义条件方差,参数估计的过程在于使用最大似然法对残差的推断。若只将回报序列作为残差输入,则仅采用默认的GARCH(1,1)模型+高斯分布假定残差进行建模。
4.2 参数查看。使用garchdisp函数列表查看各参数与参数估计的标准误差,同时还可以使用garch11grid查看在最优LLF下各Gi和Aj的关系。
5. 估计后处理
5.1 使用garchplot,对比innovation(预测误差),条件标准差和回报序列。预测误差和汇报序列通常具有较强的集群性。
5.2 画图并比较标准化预测误差的相关性(标准化: 预测误差 / 条件标准差)
标准化后的预测误差通常集群性大大降低,同时标准化受预测误差平方的自相关系数autocorr非常低,通常没有相关性。若此时将该自相关系数与原始回报序列平方的自相关系数相比,该GARCH模型已经充分提取了原始回报序列的自相关性。
5.3 量化并比较标准化预测误差的相关性
6. 模型定义
若需要采用更复杂的模型对回报序列进行建模,需要定义模型结构,并将定义后的结果作为参数传入到garchfit中。
(1)使用garchset对模型结构参数完全定义。
(2)使用garchget对定义的模型结构进行索引查看。
(3)对定义的模型结构使用域操作符。
7. 使用定义的模型做参数估计、模拟和预测
7.1 参数估计:garchfit
7.2 模型预测:garchpred,采用最小均方误差,默认预测单期。
7.3 使用蒙特卡洛路径模拟:garchsim。可以将garchsim看作是一个过滤器,可以使用它从一个白噪声输入的序列中生成一个可能的相关回报序列。即输入一个白噪声序列,它能使用fit出的模型模拟出相对应的innovations(预测误差),条件标准差和回报序列。初始白噪声序列会发生衰减。
7.4 使用garchinfer,推断sim模拟回报序列所对应的预测误差和条件标准差,同时可以与garchsim出来的结果进行比照。直接通过最大似然法从回报序列中进行推断。两者的差分体现的是由推断所引入的瞬时效应。
8. 实战总结
8.1 在时序数据分析中,MATLAB工具盒中的lbqtest检验和archtest都是对残差的检验。前者主要用于建模后的检验,目的是检查所建立的ARMAX模型是否对规律性提取完全(趋势性或季节性),若提取完全,则残差应当是纯随机白噪声的,若提取不完全,残差间仍具有相关性。此时,要么重新建立ARMAX模型,要么做残差自回归建模,即将残差再用时序模型建立一次。而后者,个人理解也应当是建立时序模型后对残差进行检验,毕竟ARCH模型提出的原因就是作者在研究英国通胀时发现无论怎么ARMAX建模都无法很好的预测,最后发现残差是异方差才建立了ARCH模型,由它的经验中我们可以知道,实际上作者本人也是建模之后才发现有ARCH效应的。所以我认为Benlaron的说法是合理的,需要先建模,再看建模后的残差序列。
8.2 针对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假设说明有误!
8.3 对于通常的时序序列建模,应该首先考虑是否可以使用常规ARMAX模型,若建模后残差具有自相关性,则需要残差自相关建模,若具有显著异方差性,即ARCH效应,则采用GARCH建模。
|