garch模型python步骤_GARCH模型的建模步骤?

泻药,我将建立道琼斯工业平均指数(DJIA)日交易量对数比的ARMA-GARCH模型来演示建模步骤。

原文链接:R语言: GARCH模型股票交易量的研究道琼斯股票市场指数​tecdat.cn

获取数据

load(file='DowEnvironment.RData')

日交易量

每日交易量内发生的 变化。

plot(dj_vol)

首先,我们验证具有常数均值的线性回归在统计上是显着的。

在休息时间= 6时达到最小BIC。

以下是道琼斯日均交易量与水平变化(红线) 。

summary(bp_dj_vol)##

## Optimal (m+1)-segment partition:

##

## Call:

## breakpoints.formula(formula = dj_vol ~ 1, h = 0.1)

##

## Breakpoints at observation number:

##

## m = 1 2499

## m = 2 896 2499

## m = 3 626 1254 2499

## m = 4 342 644 1254 2499

## m = 5 342 644 1219 1649 2499

## m = 6 320 622 924 1251 1649 2499

## m = 7 320 622 924 1251 1692 2172 2499

## m = 8 320 622 924 1251 1561 1863 2172 2499

##

## Corresponding to breakdates:

##

## m = 1

## m = 2 0.296688741721854

## m = 3 0.207284768211921

## m = 4 0.113245033112583 0.213245033112583

## m = 5 0.113245033112583 0.213245033112583

## m = 6 0.105960264900662 0.205960264900662 0.305960264900662

## m = 7 0.105960264900662 0.205960264900662 0.305960264900662

## m = 8 0.105960264900662 0.205960264900662 0.305960264900662

##

## m = 1

## m = 2

## m = 3 0.41523178807947

## m = 4 0.41523178807947

## m = 5 0.40364238410596 0.546026490066225

## m = 6 0.414238410596027 0.546026490066225

## m = 7 0.414238410596027 0.560264900662252

## m = 8 0.414238410596027 0.516887417218543 0.616887417218543

##

## m = 1 0.827483443708609

## m = 2 0.827483443708609

## m = 3 0.827483443708609

## m = 4 0.827483443708609

## m = 5 0.827483443708609

## m = 6 0.827483443708609

## m = 7 0.719205298013245 0.827483443708609

## m = 8 0.719205298013245 0.827483443708609

##

## Fit:

##

## m 0 1 2 3 4 5 6

## RSS 3.872e+19 2.772e+19 1.740e+19 1.547e+19 1.515e+19 1.490e+19 1.475e+19

## BIC 1.206e+05 1.196e+05 1.182e+05 1.179e+05 1.178e+05 1.178e+05 1.178e+05

##

## m 7 8

## RSS 1.472e+19 1.478e+19

## BIC 1.178e+05 1.178e+05

lwd = c(3,1), col = c("red", "black"))

每日交易量对数比率模型

每日交易量对数比率:plot(dj_vol_log_ratio)

异常值检测

下面我们将原始时间序列与调整后的异常值进行比较。

相关图

pacf(dj_vol_log_ratio)

上图可能表明 ARMA(p,q)模型的p和q> 0.

单位根测试

我们 提供Augmented Dickey-Fuller测试。

根据 测试统计数据与临界值进行比较,我们拒绝单位根存在的零假设。

ARMA模型

我们现在确定时间序列的ARMA结构,以便对结果残差运行ARCH效果测试。

ma1系数在统计上不显着。因此,我们尝试使用以下ARMA(2,3)模型。

所有系数都具有统计显着性,AIC低于第一个模型。然后我们尝试使用ARMA(1,2)。##

## Call:

## arima(x = dj_vol_log_ratio, order = c(1, 0, 2), include.mean = FALSE)

##

## Coefficients:

## ar1 ma1 ma2

## 0.6956 -1.3183 0.3550

## s.e. 0.0439 0.0518 0.0453

##

## sigma^2 estimated as 0.06598: log likelihood = -180.92, aic = 367.84

## z test of coefficients:

##

## Estimate Std. Error z value Pr(>|z|)

## ar1 0.695565 0.043874 15.8537 < 2.2e-16 ***

## ma1 -1.318284 0.051787 -25.4557 < 2.2e-16 ***

## ma2 0.355015 0.045277 7.8409 4.474e-15 ***

## ---

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

该模型在集合中具有最高的AIC,并且所有系数具有统计显着性。

我们还可以尝试 进一步验证。eacf(dj_vol_log_ratio)

## AR / MA

## 0 1 2 3 4 5 6 7 8 9 10 11 12 13

## 0 xooxxooxooxooo

## 1 xxoxoooxooxooo

## 2 xxxxooooooxooo

## 3 xxxxooooooxooo

## 4 xxxxxoooooxooo

## 5 xxxxoooooooooo

## 6 xxxxxoxooooooo

## 7 xxxxxooooooooo

以“O”为顶点的左上角三角形似乎位于{(1,2),(2,2),(1,3),(2,3)}之内,代表潜在的集合( p,q)根据eacf()函数输出的值。

我们已经在集合{(3,2)(2,3)(1,2)}内验证了具有(p,q)阶的ARMA模型。让我们试试{(2,2)(1,3)}##

## Call:

## arima(x = dj_vol_log_ratio, order = c(2, 0, 2), include.mean = FALSE)

##

## Coefficients:

## ar1 ar2 ma1 ma2

## 0.7174 -0.0096 -1.3395 0.3746

## s.e. 0.1374 0.0560 0.1361 0.1247

##

## sigma^2 estimated as 0.06598: log likelihood = -180.9, aic = 369.8

## z test of coefficients:

##

## Estimate Std. Error z value Pr(>|z|)

## ar1 0.7173631 0.1374135 5.2205 1.785e-07 ***

## ar2 -0.0096263 0.0560077 -0.1719 0.863536

## ma1 -1.3394720 0.1361208 -9.8403 < 2.2e-16 ***

## ma2 0.3746317 0.1247117 3.0040 0.002665 **

## ---

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ar2系数在统计上不显着。##

## Call:

## arima(x = dj_vol_log_ratio, order = c(1, 0, 3), include.mean = FALSE)

##

## Coefficients:

## ar1 ma1 ma2 ma3

## 0.7031 -1.3253 0.3563 0.0047

## s.e. 0.0657 0.0684 0.0458 0.0281

##

## sigma^2 estimated as 0.06598: log likelihood = -180.9, aic = 369.8

## z test of coefficients:

##

## Estimate Std. Error z value Pr(>|z|)

## ar1 0.7030934 0.0656902 10.7032 < 2.2e-16 ***

## ma1 -1.3253176 0.0683526 -19.3894 < 2.2e-16 ***

## ma2 0.3563425 0.0458436 7.7730 7.664e-15 ***

## ma3 0.0047019 0.0280798 0.1674 0.867

## ---

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

ma3系数在统计上不显着。

ARCH效果测试

如果ARCH效应对于我们的时间序列的残差具有统计显着性,则需要GARCH模型。

我们测试候选平均模型ARMA(2,3)。## ARCH LM-test; Null hypothesis: no ARCH effects

##

## data: resid_dj_vol_log_ratio - mean(resid_dj_vol_log_ratio)

## Chi-squared = 78.359, df = 12, p-value = 8.476e-12

根据报告的p值,我们拒绝无ARCH效应的零假设。

让我们看一下残差相关图。par(mfrow=c(1,2))

acf(resid_dj_vol_log_ratio)

pacf(resid_dj_vol_log_ratio)

我们测试了第二个候选平均模型ARMA(1,2)。## ARCH LM-test; Null hypothesis: no ARCH effects

##

## data: resid_dj_vol_log_ratio - mean(resid_dj_vol_log_ratio)

## Chi-squared = 74.768, df = 12, p-value = 4.065e-11

根据报告的p值,我们拒绝无ARCH效应的零假设。

让我们看一下残差相关图。par(mfrow=c(1,2))

acf(resid_dj_vol_log_ratio)

pacf(resid_dj_vol_log_ratio)

要检查 对数比率内的不对称性,将显示汇总统计数据和密度图。## DJI.Volume

## nobs 3019.000000

## NAs 0.000000

## Minimum -2.301514

## Maximum 2.441882

## 1. Quartile -0.137674

## 3. Quartile 0.136788

## Mean -0.000041

## Median -0.004158

## Sum -0.124733

## SE Mean 0.005530

## LCL Mean -0.010885

## UCL Mean 0.010802

## Variance 0.092337

## Stdev 0.303869

## Skewness -0.182683

## Kurtosis 9.463384

plot(density(dj_vol_log_ratio))

因此,对于每日交易量对数比,还将提出eGARCH模型。

为了将结果与两个候选平均模型ARMA(1,2)和ARMA(2,3)进行比较,我们进行了两次拟合

ARMA-GARCH:ARMA(1,2)+ eGARCH(1,1)

所有系数都具有统计显着性。然而,基于上面报道的标准化残差p值的加权Ljung-Box检验,我们拒绝了对于本模型没有残差相关性的零假设。

ARMA-GARCH:ARMA(2,3)+ eGARCH(1,1)##

## *---------------------------------*

## * GARCH Model Fit *

## *---------------------------------*

##

## Conditional Variance Dynamics

## -----------------------------------

## GARCH Model : eGARCH(1,1)

## Mean Model : ARFIMA(2,0,3)

## Distribution : sstd

##

## Optimal Parameters

## ------------------------------------

## Estimate Std. Error t value Pr(>|t|)

## ar1 -0.18607 0.008580 -21.6873 0.0e+00

## ar2 0.59559 0.004596 129.5884 0.0e+00

## ma1 -0.35619 0.013512 -26.3608 0.0e+00

## ma2 -0.83010 0.004689 -177.0331 0.0e+00

## ma3 0.26277 0.007285 36.0678 0.0e+00

## omega -1.92262 0.226738 -8.4795 0.0e+00

## alpha1 0.14382 0.033920 4.2401 2.2e-05

## beta1 0.31060 0.079441 3.9098 9.2e-05

## gamma1 0.43137 0.043016 10.0281 0.0e+00

## skew 1.32282 0.031382 42.1523 0.0e+00

## shape 3.48939 0.220787 15.8043 0.0e+00

##

## Robust Standard Errors:

## Estimate Std. Error t value Pr(>|t|)

## ar1 -0.18607 0.023940 -7.7724 0.000000

## ar2 0.59559 0.022231 26.7906 0.000000

## ma1 -0.35619 0.024244 -14.6918 0.000000

## ma2 -0.83010 0.004831 -171.8373 0.000000

## ma3 0.26277 0.030750 8.5453 0.000000

## omega -1.92262 0.266462 -7.2154 0.000000

## alpha1 0.14382 0.032511 4.4239 0.000010

## beta1 0.31060 0.095329 3.2582 0.001121

## gamma1 0.43137 0.047092 9.1602 0.000000

## skew 1.32282 0.037663 35.1225 0.000000

## shape 3.48939 0.223470 15.6146 0.000000

##

## LogLikelihood : 356.4994

##

## Information Criteria

## ------------------------------------

##

## Akaike -0.22888

## Bayes -0.20698

## Shibata -0.22891

## Hannan-Quinn -0.22101

##

## Weighted Ljung-Box Test on Standardized Residuals

## ------------------------------------

## statistic p-value

## Lag[1] 0.7678 0.38091

## Lag[2*(p+q)+(p+q)-1][14] 7.7336 0.33963

## Lag[4*(p+q)+(p+q)-1][24] 17.1601 0.04972

## d.o.f=5

## H0 : No serial correlation

##

## Weighted Ljung-Box Test on Standardized Squared Residuals

## ------------------------------------

## statistic p-value

## Lag[1] 0.526 0.4683

## Lag[2*(p+q)+(p+q)-1][5] 1.677 0.6965

## Lag[4*(p+q)+(p+q)-1][9] 2.954 0.7666

## d.o.f=2

##

## Weighted ARCH LM Tests

## ------------------------------------

## Statistic Shape Scale P-Value

## ARCH Lag[3] 1.095 0.500 2.000 0.2955

## ARCH Lag[5] 1.281 1.440 1.667 0.6519

## ARCH Lag[7] 1.940 2.315 1.543 0.7301

##

## Nyblom stability test

## ------------------------------------

## Joint Statistic: 5.3764

## Individual Statistics:

## ar1 0.12923

## ar2 0.20878

## ma1 1.15005

## ma2 1.15356

## ma3 0.97487

## omega 2.04688

## alpha1 0.09695

## beta1 2.01026

## gamma1 0.18039

## skew 0.38131

## shape 2.40996

##

## Asymptotic Critical Values (10% 5% 1%)

## Joint Statistic: 2.49 2.75 3.27

## Individual Statistic: 0.35 0.47 0.75

##

## Sign Bias Test

## ------------------------------------

## t-value prob sig

## Sign Bias 1.4929 0.13556

## Negative Sign Bias 0.6317 0.52766

## Positive Sign Bias 2.4505 0.01432 **

## Joint Effect 6.4063 0.09343 *

##

##

## Adjusted Pearson Goodness-of-Fit Test:

## ------------------------------------

## group statistic p-value(g-1)

## 1 20 17.92 0.5278

## 2 30 33.99 0.2395

## 3 40 44.92 0.2378

## 4 50 50.28 0.4226

##

##

## Elapsed time : 1.660402

所有系数都具有统计显着性。没有找到标准化残差或标准化平方残差的相关性。模型可以正确捕获所有ARCH效果。调整后的Pearson拟合优度检验不拒绝零假设,即标准化残差的经验分布和所选择的理论分布是相同的。然而:

*对于其中一些模型参数随时间变化恒定的Nyblom稳定性测试零假设被拒绝

par(mfrow=c(2,2))

plot(garchfit, which=8)

plot(garchfit, which=9)

plot(garchfit, which=10)

plot(garchfit, which=11)

我们用平均模型拟合(红线)和条件波动率(蓝线)显示原始道琼斯日均交易量对数时间序列。

对数波动率分析

以下是我们的模型ARMA(2,2)+ eGARCH(1,1)产生的条件波动率图。

plot(cond_volatility)

显示了按年度的条件波动率的线图。par(mfrow=c(6,2))

pl

pl

显示了按年度计算的条件波动率框图。

结论

我们研究了基本统计指标,如平均值,偏差,偏度和峰度,以了解多年来价值观的差异,以及价值分布对称性和尾部。从这些摘要开始,我们获得了平均值,中位数,偏度和峰度指标的有序列表,以更好地突出多年来的差异。

密度图可以了解我们的经验样本分布的不对称性和尾部性。

对于对数回报,我们构建了ARMA-GARCH模型(指数GARCH,特别是作为方差模型),以获得条件波动率。同样,可视化作为线和框图突出显示了年内和年之间的条件波动率变化。这种调查的动机是,波动率是变化幅度的指标,用简单的词汇表示,并且是应用于资产的对数收益时的基本风险度量。有几种类型的波动性(有条件的,隐含的,实现的波动率)。

交易量可以被解释为衡量市场活动幅度和投资者兴趣的指标。计算交易量指标(包括波动率)可以了解这种活动/利息水平如何随时间变化。

非常感谢您阅读本文,有任何问题请在下面留言!

最受欢迎的见解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript里面的居民们1-数据

编码 首先练习数字相关的一些操作&#xff1a; <div><label>Number A:<input id"radio-a" type"radio" name"math-obj" value"a"></label><input id"num-a" type"text"> <label…

GCC + pthread

多线程介绍POSIX 1003.1-2001 定义了多线程编程的标准API。这个API就是广为人知的pthreads。它的目的在于为跨平台编写多线程程序提供便利。本文介绍了Linux 和 WIN32 平台下的多线程程序的编写方法Linux 系统对 pthreads 提供了良好的支持。一般地安装完Linux系统后在/usr/inc…

MATLAB的size、length函数

size&#xff08;&#xff09;&#xff1a;获取矩阵的行数和列数 &#xff08;1&#xff09;ssize(A), 返回一个行向量&#xff0c;该行向量的第一个元素是矩阵的行数&#xff0c;第二个元素是矩阵的列数。 &#xff08;2&#xff09;[r,c]size(A), 当有两个输出参数…

python两个时间内的工作日_如何在Python中找到两个日期之间的星期一或任何其他工作日的数目?...

这是高效的-即使在开始和结束之间有一万天的时间-而且仍然非常灵活(它在sum函数内最多迭代7次)&#xff1a;def intervening_weekdays(start, end, inclusiveTrue, weekdays[0, 1, 2, 3, 4]):if isinstance(start, datetime.datetime):start start.date() # make a date from …

JS--继承

构造函数、原型、实例、原型链之间的联系 描述&#xff1a;每个构造函数都有一个原型对象&#xff1b; 每个原型对象都有一个指针&#xff0c;指向构造函数&#xff1b; 每个实例对象都有一个内部指针&#xff0c;指向原型对象&#xff1b; 若此时的原型对象是另一个类型的实例…

Linux C/C++多线程pthread实例

inux中C/C开发多线程程序多遵循POSIX线程接口&#xff08;也就是pthread&#xff09;&#xff0c;pthread涉及函数很多个&#xff08;更多参见pthread.h头文件&#xff09;&#xff0c;常用的有pthread_create、pthread_dispath、pthread_mutex_lock&#xff08;互斥锁定&#…

python 横向合并_使用Python横向合并excel文件的实例

起因&#xff1a;有一批数据需要每个月进行分析&#xff0c;数据存储在excel中&#xff0c;行标题一致&#xff0c;需要横向合并进行分析。数据示意&#xff1a;具有多个代码&#xff1a;# -*- coding: utf-8 -*-"""Created on Sun Nov 12 11:19:03 2017author:…

javafx游戏_JavaFX游戏(四连环)

javafx游戏这是我的第一个JavaFX游戏教程&#xff0c;也是我关于JavaFX面板的第一篇博客文章。 我仅用200几行代码就完成了这四款连接游戏&#xff0c;足以应付一个简单的游戏。 我在这里使用GridPane面板对磁盘进行布局&#xff0c;GridPane是JavaFX布局窗格之一&#xff0c;但…

Matlab的sort函数

1、Matlab自带排序函数sort用法 [Y,I] sort(X,DIM,MODE) sort函数默认Mode为ascend为升序&#xff0c;sort(X,descend)为降序排列。 sort(X)若X是矩阵&#xff0c;默认对X的各列进行升序排列 sort(X,dim) dim1时等效sort(X)dim2时表示对X中的各行元素升序…

django HttpResponse的用法

一、传json字典 def back_json(rquest):#JsonResponse父类是HttpResponse&#xff0c;原码里调用了json.dumps()from django.http import JsonResponseback_msg {name:name,age:123}return JsonResponse(back_msg) 二、传列表 def back_json(rquest):#JsonResponse父类是HttpR…

gcc/g++ 链接库的编译与链接

程序编译一般需要经预处理、编译、汇编和链接几个步骤。在实际应用中&#xff0c;有些公共代码需要反复使用&#xff0c;就把这些代码编译成为“库”文件。在链接步骤中&#xff0c;连接器将从库文件取得所需的代码&#xff0c;复制到生成的可执行文件中&#xff0c;这种库称为…

Speedment 3.0的新功能

如果您关注我的博客&#xff0c;那么您会知道我已经参与开源项目Speedment已有一段时间了。 在夏季和秋季&#xff0c;我完成了工具包的下一个3.0.0大型发行版的大量工作。 在这篇文章中&#xff0c;我将展示我们已经在平台中内置的一些很酷的新功能&#xff0c;并说明如何入门…

Matlab在坐标点上按顺序标序号

程序一&#xff1a; clear x[1 3 7 10]; y[2 4 9 43]; plot(x,y,r-) hold on for i1:4%用这个循环cnum2str(i);c[ ,c];text(x(i),y(i),c) end axis([0 10 0 50]) 程序二&#xff1a; xrand(10,1)*10; yrand(10,1)*10; %x,y表示任意10个点的坐标 plot(x,y,*); for i1:10text(x(…

python表情符号编码大全_Emoji的编码以及常见问题处理

我在虎嗅上看过一篇关于Emoji的趣闻, 特别有意思, 在这里跟大家分享一下。里面提到了Emoji是怎么诞生的。1999年前后&#xff0c;日本一个名叫栗田穰崇的年轻人&#xff0c;和许多直男一样&#xff0c; 给女友发的短信经常会被误解。比如&#xff0c;“知道了”被解读成“生气了…

机器学习套路三步走

机器学习的套路 1.model如何对现实的场景进行抽象2.model如何对参数进行求解3.model的效果如何评价1.抽象 例如线性回归&#xff0c;就是认为预测变量y和特征X之间存在线性关心&#xff0c;老掉牙的例子就是房价和地区收入&#xff0c;人口密度等等的线性关系 线性回归的数学假…

C及opencv指针释放问题

一个图像处理的项目运行时没有问题&#xff0c;最后关掉显示的图片时提醒触发一个断点&#xff0c;点击继续则出现以下画面&#xff1a;断点停留在释放指针的那一行。究其原因如下&#xff1a; 1.错用free释放IplImage* IplImage* input cvLoadImage("data/LOGO/2_1.jpg&…

gcc/g++基本命令简介

gcc & g现在是gnu中最主要和最流行的c & c编译器 。 g是c的命令&#xff0c;以.cpp为主&#xff0c;对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。 其实编译器是根据gcc还是g来确定是按照C标准还是C标准编译链接。 下面以Test.cpp为例&#x…

python返回长度值_Python 文件 truncate() 方法(截断返回截取长度)

概述Python 文件 truncate() 方法用于截断文件并返回截断的字节长度。指定长度的话&#xff0c;就从文件的开头开始截断指定长度&#xff0c;其余内容删除&#xff1b;不指定长度的话&#xff0c;就从文件开头开始截断到当前位置&#xff0c;其余内容删除。语法truncate() 方法…

Opencv中IplImage的四字节对齐问题

一、结构解释IplImage数据结构体中有两个宽度&#xff1a;1 是width属性&#xff0c;表示图像的每行像素数&#xff1b;2 是widthStep属性&#xff0c;表示存储一行像素需要的字节数。在OpenCV里边&#xff0c;widthStep必须是4的倍数&#xff0c;从而实现字节对齐&#xff0c;…

庞佐错觉_水晶球错觉

庞佐错觉我注意到人们有时会避免进行彻底的测试。 对于某些人来说&#xff0c;这听起来像是伪造的&#xff0c;但请听我说…… 测试会产生被困的感觉&#xff0c;每引入一个新的测试&#xff0c;负担就会加重。 建立稳定&#xff0c;无干扰且质量保证的测试套件是一项艰巨的任务…