ARCH和GARCH模型

  • 一.概述
  • 二.ARCH模型优化方向
  • 三.模型
    • 1.总体模型
    • 2.优化实质
    • 3.ARCH(q)模型
    • 4.GARCH(p,q)模型
    • 5.检验GARCH效应
      • 【1】概述
      • 【2】算法:LM检验
    • 6.何时使用ARCHARCHARCH或GARCHGARCHGARCH模型
  • 四.一个实例
    • 1.摘要
    • 2.数据导入
    • 3.画出时间序列图
    • 4.计算日收益率数据
    • 5.检验序列r是否为单位根序列(ADFADFADF检验)
    • 6.判断AMRAAMRAAMRA模型的阶数(ACFACFACF图与PACFPACFPACF图)
    • 7.利用AICAICAIC和BICBICBIC选择模型
    • 8.ARMA(3,3)模型的估计结果
    • 9.残差序列的分布直方图
    • 10.检验残差是否为白噪声
    • 11.对残差的平方进行LM检验(检验是否存在GARCHGARCHGARCH误差)
    • 12.利用AIC、BIC选择合适的模型
    • 13.预测结果

一.概述

ARCH模型(Autoregressive conditional heteroskedasticity model)全称“自回归条件异方差模型”
在现代高频金融时间序列中,数据经常出现波动性聚集的特点,但从长期来看数据是平稳的,即长期方差(无条件方差)是定值,但从短期来看方差是不稳定的,我们称这种
异方差为条件异方差。传统的时间序列模型如ARMA模型识别不出来这一特征。

二.ARCH模型优化方向

数据呈现波动聚集性(volatility clustering)长期来看时间序列平稳,短期来看不平稳,存在异方差,这时会使用ARCH/GARCHARCH/GARCHARCH/GARCH模型

三.模型

1.总体模型

2.优化实质

因为加法条件异方差的性质不容易探究,因此我们所说的ARCH模型均是
下面的乘法条件异方差模型。
另外,大家可以看出
实际上ARCH模型是在ARMA模型的基础上提出来的,两者的区别在于扰动项的设置不同,在ARMA模型中扰动项是最简单的白噪声序列

3.ARCH(q)模型


其实就是改变了扰动项

4.GARCH(p,q)模型

5.检验GARCH效应

【1】概述

检验ARMAARMAARMA模型预测之后

  1. 对干扰项检验,若为白噪声,则均值模型估计完全了,否则更ARMAARMAARMA重新估计
  2. 检验干扰项的平方是否为白噪声,若是则无GARCHGARCHGARCH效应,否则存在GARCHGARCHGARCH效应

【2】算法:LM检验

// LM检验:是否存在ARCH误差
reg ressq l.ressq l2.ressq l3.ressq l4.ressq l5.ressq // 将残差平方项对其滞后项回归
gen LM_STAT=e(N)*e(r2) // 计算LM统计量
display LM_STAT // 输出LM统计量
display chiprob(e(df_m),LM_STAT) // 计算p值

6.何时使用ARCHARCHARCH或GARCHGARCHGARCH模型

四.一个实例

1.摘要


就是预测股票趋势

2.数据导入

clear  // 清空变量
* (1) 导入数据并生成时间序列  (*和//都可以用来注释一行)
insheet using "C:\Users\晨沉宸尘\Desktop\上课用的课件和代码(下载后记得解压,所有视频配套的都在里面)\清风数学建模课件和代码(全套下载后请解压)\更新视频的课件和代码\更新7 ARCH和GARCH模型\数据和代码\Bindex.csv"  //导入位于和代码同一文件夹下的csv数据文件
gen datevar = date(date,"YMD")   // 将csv中的变量date转换为stata能识别的时间数据datevar
format datevar %td // 对datevar的展示格式进行转换,转换后以:日月年 显示
label variable datevar "日期"  // 设置datevar的标签为日期,主要用于画图时的展示
tsset datevar   // 定义datevar是一个时间序列数据
gen time=_n  // 定义一个从1到n的time序列,n是观测值的个数,系统自动在后台记录的
tsset time   // 将time这个序列定义为时间序列,后续滞后算子时需要用到

3.画出时间序列图

// 画深成B指的时间序列图
line index datevar
graph export "深成B指的时间序列图.png", as(png) replace   // 导出图片到本地文件夹

line y,x;

根据2014年1月至2018年5月共计1064个交易日的收盘价数据,我们做出了B股指数的时序图从图中可以看出,指数序列非平稳,尤其是2015年到2016年之间波动十分剧烈。

4.计算日收益率数据

// 计算日收益率数据
gen r=100*(index-L.index)/L.index   //(今天的收盘价-昨天的收盘价)/昨天的收盘价   L是lag的缩写

L.indexL.indexL.index表示上一次的indexindexindex

// 对日收益率r进行描述性统计
summarize r

// 做出日收益率的时间序列图
line r datevar
graph export "深成B指日收益率的时间序列图.png", as(png) replace   // 导出图片到本地文件夹

5.检验序列r是否为单位根序列(ADFADFADF检验)

就是为了判断一下用ARMAARMAARMA模型还是ARIMAARIMAARIMA模型

// 检验收益率序列r是否为单位根,检验方法是ADF检验(原假设:是单位根序列,备择假设:是平稳序列)
dfuller r
// MacKinnon approximate p-value for Z(t) = 0.0000  p值为0意味着拒绝原假设,所以我们认为r序列平稳


ADFADFADF检验的原假设:数据是单位根序列,备择假设:数据是平稳序列
ppp值为000表示拒绝原假设,认为rrr序列平稳
上表结果显示ppp值为0,在99%的置信水平下拒绝原假设,故序列平稳。使用ARMAARMAARMA模型

注意:平稳数据建模用ARMA模型(或者ARIMA(p,0,q)),单位根数据建模用ARIMA模型。

6.判断AMRAAMRAAMRA模型的阶数(ACFACFACF图与PACFPACFPACF图)

// 观察acf图与pacf图 ,判断AMRA模型的阶数
ac r,lags(20)   // 自相关系数图,滞后20期
graph export "自相关系数图.png", as(png) replace   // 导出图片到本地文件夹pac r,lags(20)  // 偏自相关系数图,滞后20期
graph export "偏自相关系数图.png", as(png) replace   // 导出图片到本地文件夹


由ACF图和PACF图,3阶和8阶相关系数较为显著,8阶之后的显著可能由于误差导致,不予考虑。 (1阶虽然显著,但其包含的信息太少,我们对高频数据进行建模时往往不考虑)
因此,为保证模型选取的准确性,我们拟合了四个模型并从中选取最
优的模型。
其中
Model1:ARMA(3,3)Model1:ARMA(3,3)Model1:ARMA(3,3);Model2:ARMA(8,8)Model2:ARMA(8,8)Model2:ARMA(8,8);
Model3:ARMA(3,8)Model3:ARMA(3,8)Model3:ARMA(3,8);Model4:ARMA(8,3)Model4:ARMA(8,3)Model4:ARMA(8,3)。

7.利用AICAICAIC和BICBICBIC选择模型

太多的滞后项会增加预测的误差,太少的滞后项又会遗失部分相关信息。经验和理论知识通常是用来决定滞后项阶数的最好方式,然而,依然存在着一些准则帮助我们确定滞后的阶数。为了确定哪个模型拟合效果最好,我们分别估计出了这四种模型,并给出了对应的AICAICAIC和BICBICBIC值,我们认为AIC与BIC值较小,模型拟合效果较好。






我们根据AIC和BIC准则可知,这四个模型中应选取Model1,即ARMA(3,3)模型。此时,AIC值和BIC值的平均值最小。

8.ARMA(3,3)模型的估计结果


建立

9.残差序列的分布直方图

// ARIMA(3,0,3)模型的AIC值和BIC值的平均值最小,所以下面我们使用这个模型进行估计
arima r,arima(3,0,3)// 得到残差的预测值并生成残差分布直方图图
predict residess, residuals   // 保存残差
hist residess,norm freq  // norm freq表示加上标准正态分布的概率密度函数
graph export "残差分布直方图.png", as(png) replace   // 导出图片到本地文件夹

10.检验残差是否为白噪声

接着,我们使用Ljung‐Box Q检验,来检验ARMA模型的有效性,检验结果为下表所示:


// 检验残差是否为白噪声序列,检验方法为Q检验:原假设是白噪声,备择假设不是白噪声
wntestq residess, lag(12)   // 对残差序列进行白噪声检验
// 生成残差的平方,并进行Q检验
gen ressq = residess^2   // 生成残差平方序列ressq
wntestq ressq, lag(12) // 对残差平方序列ressq进行白噪声检验



滞后12项的检验值的P值大于0.05,在5%的显著性水平下并不能拒绝原假设。故可以认为通过白噪声检验,即我们认为回归得到的残差不存在较明显的相关性,因此模型有效性较好。

11.对残差的平方进行LM检验(检验是否存在GARCHGARCHGARCH误差)

// LM检验:是否存在ARCH误差
reg ressq l.ressq l2.ressq l3.ressq l4.ressq l5.ressq  // 将残差平方项对其滞后项回归
gen LM_STAT=e(N)*e(r2) // 计算LM统计量
display LM_STAT  // 输出LM统计量
display chiprob(e(df_m),LM_STAT) // 计算p值


12.利用AIC、BIC选择合适的模型

// 利用AIC BIC选择合适的模型进行估计
// 注意:扰动项的分布在金融数据中常服从t分布
// 正态分布下GARCH(1,1)估计
arch r,arima(3 0 3) arch(1) garch(1)
estat ic
// t分布下GARCH(1,1)估计
arch r,arima(3 0 3) arch(1) garch(1) distribution(t 3)  // 自由度为3的t分布
estat ic
// 正态分布下GARCH(2,2)估计
arch r,arima(3 0 3) arch(2) garch(2)
estat ic
// t分布下GARCH(2,2)估计
arch r,arima(3 0 3) arch(2) garch(2) distribution(t 3)
estat ic





相加平均找个最小
通过比较AIC和BIC,最终我们选择使用带有GARCH(1,1)且vt服从t分布的扰动项的ARMA(3,3)模型进行估计的

13.预测结果

// 得到拟合结果,并进行预测
arch r,arima(3 0 3) arch(1) garch(1) distribution(t 3)
tsappend ,add(10)  // 将时间延长10期
predict result // 对数据进行预测
tsline result r, legend(label(1 "预测值")  label(2 "真实值"))   // 绘制拟合图
graph export "预测结果图.png", as(png) replace   // 导出图片到本地文件夹


打开

只有四个预测准确,后面的一样由于MA模型的影响

数学建模更新7(ARCH和GARCH模型)相关推荐

  1. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  2. Python玩转金融时间序列之ARCH与GARCH模型

    01 引言 作为金融时间序列的专题推文,[手把手教你]时间序列之日期处理主要介绍了使用Python处理时间序列的日期和统计分析:[Python量化基础]时间序列的自相关性与平稳性主要介绍了时间序列的一 ...

  3. arch检验python_Python玩转金融时间序列之ARCH与GARCH模型

    01 引言 作为金融时间序列的专题推文,[手把手教你]时间序列之日期处理主要介绍了使用Python处理时间序列的日期和统计分析:[Python量化基础]时间序列的自相关性与平稳性主要介绍了时间序列的一 ...

  4. Algorithm:数学建模大赛之数学建模基础(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建模/文献)之详细攻略

    Algorithm:数学建模大赛之数学建模基础(经验/技巧).流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价).论文写作(意义/摘要/关键词/问题重述和模型假设/建模/求解/结论/参考文 ...

  5. 数学建模——一维、二维插值模型详解Python代码

    数学建模--一维.二维插值模型详解Python代码 一.一维插值 # -*-coding:utf-8 -*- import numpy as np from scipy import interpol ...

  6. 数学建模清风第一次直播:传染病模型和微分方程拟合

    学习网址:课件下载 数学建模清风第一次直播:传染病模型和微分方程拟合 数学建模清风第二次直播:模拟退火算法 数学建模清风第三次直播:excel在数学建模中的应用 博客笔记: 数学建模清风第一次直播:传 ...

  7. Matlab数学建模(七):连续模型

    一.学习目标 (1)了解连续模型及解题步骤. (2)掌握用 dsolve 求解常见的微分方程解析解. (3)掌握用 ODE 家族的求解器求解数值解. (4)掌握使用专用的求解器求解. 二.实例演练 ( ...

  8. 【数学建模】1层次分析法模型部分

    目录 1 数学建模的任务分配 2 简介 3 模型介绍 3.1 评价类问题 3.2 拿到建模问题 3.3 推荐搜索网站 3.4 确定好指标 3.5 确定指标权重 (1)采用分而治之的思想 (2)分而治之 ...

  9. 种群内禀增长率matlab求法,数学建模讲义:第三讲微分方程模型

    <数学建模讲义:第三讲微分方程模型>由会员分享,可在线阅读,更多相关<数学建模讲义:第三讲微分方程模型(74页珍藏版)>请在人人文库网上搜索. 1.第三讲 微分方程模型,动态模 ...

  10. 数学建模当中常用的十大模型及各对应算法

    数学建模当中常用的十大模型及各对应算法 图文展示:

最新文章

  1. 双宋喜结连理过程可以通过python爬虫Aispider 几行代码就能搞定!
  2. SqlServer 数据库 建立子账号
  3. Qt ffmpeg环境搭建
  4. Python 错误和异常小结
  5. 32个最热CPLD-FPGA论坛
  6. Zip4j开源jar包的简单使用
  7. Unity3d官方测试插件学习-单元测试,集成测试
  8. python如何将数组里的数提取出来_python – 从数组数组中提取数组
  9. redis插槽(slot)分配详解(集群动态新增或删除结点)
  10. 2022版首发,阿里Java开发手册(黄山版).PDF
  11. 钓鱼网站制作Kali
  12. angular4使用原生JS属性报错error TS2339: Property 'checked' does not exist on type 'HTMLElement'.
  13. 行列式java_n阶行列式的全排列求解(Java)
  14. 计算机系统的还原及备份,win7系统备份与还原功能怎么用?win7系统使用备份与还原功能的方法...
  15. 【Python】pyecharts 数据可视化模块
  16. 少儿编程培养孩子逻辑思维
  17. VRchat上传角色error无法保存蓝图解决
  18. C#/VB.NET 在Excel单元格中应用多种字体格式
  19. 创业都是从一个想法开始
  20. 数组,下标越界及小结

热门文章

  1. veu-cli 3.0使用教程
  2. Vue2.0 响应式原理 通俗易懂
  3. 卫星导航术语 -- 词汇与概念解释(200条)(转自今日北斗)
  4. 海淘也疯狂 跨境电商网站8月监测报告
  5. VUE解决背景图片没有铺满的问题
  6. MobSF分析.ipa文件,MobSF分析iOS app
  7. 我的世界java版1.7.10打不开怎么办_我的世界中国版打不开怎么办 怎么解决
  8. Java中的注解是什么意思,有什么用
  9. 阿里编程规范(精简版)
  10. 云数据库RDS和对象存储OSS