R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数

简介: R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数

全文链接:http://tecdat.cn/?p=31023


如何构建合适的模型以恰当的方法对风险进行测量是当前金融研究领域的一个热门话题点击文末“阅读原文”获取完整代码数据


VaR方法作为当前业内比较流行的测量金融风险的方法,具有简洁,明了的特点,而且相对于方差来讲,更多的将投资人的损失作为风险具有更好的合理性。

我们和一位客户讨论如何在R软件中处理GARCH族模型。

数据的选取

本文选取Wind资讯发布的股票型券商理财指数作为数据处理对象。选取的时间期间为2011年1月4日至2015年11月24日,共1187个交易日。该指数基日为2007年12月31日,基点为1000点。

@A02U~41N7OM$S58VU`{SLF.png

收益率的计算

采用对数收益率对指数收盘点位进行计算,表达式为

BT$5R$K_]68V{BF3L@R8N4Y.png

记为序列 。由图观察可知,该收益率序列存在波动聚集现象。

clpr<-stock$Clsprc
yield<-diff(log(clpr))
ts.plot(yield)


[53DFPG(VW5UJVQPGP0@V54.png

基本特征分析

对序列 进行基本统计分析,结果如表所示:

 

summary(yield)
sd(yield)
var(yield)

指数日收益率基本统计表****

Min. 1st Qu. Median Mean 3rd Qu. Max. Sd skewness' kurtosis
-0.03517 -0.00389 0.0003749 0.0001963 0.00473 0.03348 0.008163353 -0.4018462 2.169439

 

由表可知,收益率序列 的最小值为-0.03517,最大值为0.03348,平均值为0.0001963,标准差为0.008163353。偏度为-0.4018462,表现为右偏。峰度为2.169439,该分布比正态分布更陡峭。

1、正态性检验

对指数的日收益率序列进行正态性检验。检验方法采用Jarque-Bera统计量。检验结果显示Jarque-Bera统计量为261.3839,P值接近0,拒绝对数收益率服从正态分布的原假设,表明序列为非正态分布。

 

Jarque-Bera检验结果

检验方法 统计量 P值
Jarque-Bera 261.3839 < 2.2e-16

 

为了进一步探究序列 的分布形态,对样本数据作直方图、QQ图。由图可见,该收益率序列的尾部更长更厚,且其分布存在明显的不对称的现象,为非正态分布。

9SS1UQJ{7_B13N09A(HAA%4.png

K@[T@PH}[I7SO)WJ8Q2%AU0.png

2、自相关性检验

对指数的日收益率序列的自相关性进行检验。检验方法采用Ljung-Box检验。表中LB2(12)指滞后期为12的收益率平方的Ljung-Box统计量,该统计量在无序列相关的零假设下,服从自由度为12的 分布。具体检验结果如下:收益率平方的Ljung-Box统计量为34.1853,P值为0.0006306,拒绝无自相关的零假设,表明收益率的平方存在自相关现象。

 

Ljung-Box检验结果

检验方法 统计量 P值
LB2(12) 34.1853 0.0006306

 

为了进一步探究序列的自相关性,对序列作ACF、PACF图。由图可见,该收益率序列存在自相关现象。

V%M$42V%U27ZZ[A7%}47E4G.png

CIBEH17%2_0]GKG7]CUXA6T.png

3、异方差性检验

对指数的日收益率序列进行异方差性检验。检验方法采用ARCH-LM检验。表中LM(12)指ARCH效应的拉格朗日乘数检验,在没有ARCH效应的零假设下,统计量服从自由度为12的 分布。具体检验结果如下:LM统计量为170.9818,P值接近0,故拒绝无ARCH效应的零假设,表明收益率序列存在ARCH效应。

 

ARCH-LM检验结果

检验方法 统计量 P值
LM(12) 170.9818 < 2.2e-16

 

4、平稳性检验

在时间序列模型中,序列的平稳性会直接影响到模型的拟合效果,非平稳的序列容易产生谬误回归(Spurious Regression)。本节将采用 ADF 检验来对收益率序列进行单位根检验。检验结果显示Dickey –Fuller值为-9.7732(滞后10阶),P值小于0.01,故拒绝存在单位根的原假设,认为该收益率序列是平稳的。


ADF检验结果

检验方法 统计量 P值
ADF -9.7732 <0.01


综上,收益率序列存在明显的尖峰厚尾效应,JB检验同样否认了收益率服从正态分布的假设。LM检验表明收益率存在ARCH效应,而LB检验表明收益率的平方存在自相关现象,因此可以采用条件异方差模型来分析收益率序列的波动特性

GARCH族模型的建立

本文将分别采用基于正态分布、t分布、广义误差分布(GED)、偏态t分布(ST)、偏态广义误差分布(SGED) 的GARCH(1,1)、EGARCH、TGARCH来建模。

相关视频

01E6QLEUK8~JJINL29~4B09.png

$P_A{Y%6A2NPR8LJY@T2_{3.png

0(BF%9M1%Y}4}S@B$TXS0[N.png

AK2)`VRH(S)(H$090U2BOM0.png



表中,c为收益率的均值, 为方差方程的常数项, 为方差方程的ARCH项系数, 为GARCH项系数, 反映杠杆效应的大小。参数 为概率分布中的参数,其中 控制尖峰高度和尾部厚度, 控制偏斜度。

GARCH(1,1)模型

GARCH(1,1)模型表示如下:

spec<-ugarchspec(variance.model=list(garchOrder=c(1,1)),
       mean.model=list(armaOrder=c(0,0)))
fit <- ugarchfit(spec = spec, data = yield)
ariance.model=list(garchOrder=c(1,1)),
       mean.model=list(armaOrder=c(0,0)),distribution.model = "std")

(9_8K9VI24X~9Y63_XU_D(H.png

收益率指数 GARCH 模型估计结果*

  正态分布 t分布 GED 偏t分布 SGED
c 0.000264( 0.21277) 0.000342 ( 0.077829) 0.000342 (0.040020) 0.000299(0.161218) 0.000230 (0.587094)

0.000001 ( 0.14473) 0.000001  ( 0.257057) 0.000001(0.441759) 0.000001(0.259532) 0.000001(0.456113)

0.048706( 0.00000) *** 0.054123 ( 0.000001) *** 0.050726 (0.002247) *** 0.053698(0.000001) *** 0.050853(0.00353) ***
** 0.927184( 0.00000) *** 0.933160(0.00000) *** 0.931267(0.000000) *** 0.933230(0.000000) *** 0.930511  (0.000000) ***




0.981867(0.000000) *** 0.939087(0.000000) ***


5.219963(0.00000) *** 1.201313(0.00000) *** 5.243745(0.000000) *** 1.202264 (0.000000) ***
LOG(L) 4098.099 4133.571 4138.72 4133.688 4139.112
LB2(1) 0.0005385 0.03154 0.01327 0.02633 0.01035
LB2(5) 0.7282074 1.00717 0.88424 0.97089 0.83074
LB2(9) 1.2003692 1.63025 1.43485 1.58488 1.36785

注:括号中是P值。***表示0.1%置信水平下统计显著;**表示在 1%置信水平下统计显著;*表示5%水平下统计显著。

对GARCH(1,1)模型来说,无论收益率残差服从哪种分布,其方差方程中ARCH项和GARCH项系数均高度显著,然而均值方程和方差方程中的的常数项均不显著。

EGARCH(1,1)模型

EGARCH是从GARCH衍生出的模型,可用于解释“杠杆效应”。“杠杆效应”是指金融资产收益率的涨和跌对未来波动性的影响是不同的。

chspec(variance.model=list(model="eGARCH", garchOrder=c(1,1)),
       mean.model=list(armaOrder=c(0,0)))

收益率指数 EGARCH 模型估计结果

  正态分布 t分布 GED 偏t分布 SGED
c 0.000271(0.075278) 0.000336( 0.079723) 0.000340( 0.016498) 0.000271(0.12507) 0.000199 ( 0.14978)

-0.206804(0.000000) *** -0.157944(0.000000) *** -0.184483(0.000000) *** -0.160675(0.000000) *** -0.190357(0.00000) ***

0.001715(0.862698) -0.013118 ( 0.388489) -0.007304( 0.603938) -0.012933(0.393570) -0.007622 (0.41512)
** 0.978191(0.000000) *** 0.983721(0.000000) *** 0.981159(0.000000) *** 0.983429(0.000000) *** 0.980540(0.00000) ***

0.107504( 0.001149)*** 0.128684(0.000000) *** 0.118786(0.001145)** 0.128607(0.000001)*** 0.119496(0.00000) ***




0.978059(0.000000) *** 0.970479(0.00000) ***


4.999931(0.000000) *** 1.185703(0.000000) *** 5.025099(0.000000) *** 1.186277(0.00000) ***
LOG(L) 4092.934 4131.264 4136.163 4131.438 4136.691
LB2(1) 0.1871 0.00369 0.03273 0.004377 0.03288
LB2(5) 0.8244 0.93644 0.83619 0.898516 0.76626
LB2(9) 1.4308 1.55934 1.41608 1.511597 1.32613 

 

注:括号中是P值。***表示0.1%置信水平下统计显著;**表示在 1%置信水平下统计显著;*表示5%水平下统计显著。

对EGARCH(1,1)模型来说,无论收益率残差服从哪种分布,其方差方程中常数项和GARCH项系数均高度显著,然而均值方程和方差方程中的的ARCH项系数均不显著。

GJR-GARCH模型

GJR-GARCH模型即是在GARCH模型的基础上考虑到杠杆效应,引入一个虚拟变量来表示正负冲击对 的影响。

ariance.model=list(model="gjrGARCH", garchOrder=c(1,1)),
  mean.model=list(armaOrder=c(0,0)),distribution.model = "std")

收益率指数 GJR- GARCH 模型估计结果

  正态分布 t分布 GED 偏t分布 SGED
c 0.000275( 0.198829) 0.000335 ( 0.084013) 0.000338( 0.040523)* 0.000292(0.17233) 0.000221 (0.540614)

0.000001( 0.171795) 0.000001 (0.298628) 0.000001(0.000000) *** 0.000001( 0.30375) 0.000001(0.590270)

0.051272( 0.000072)*** 0.051272 (0.000072)*** 0.046304(0.012649) * 0.045985(0.00000)*** 0.046440 (0.007732)**
** 0.928798(0.000000) *** 0.928798(0.000000) *** 0.927762 (0.000000) *** 0.929132(0.00000) *** 0.928254  (0.000000) ***

-0.005443( 0.702778) -0.005443(0.702778) 0.010575(0.493464) 0.018174(0.32446) 0.010036(0.542627)




0.983235(0.00000) *** 0.975509(0.000000) ***


4.999931(0.000000) *** 1.197353(0.000000) *** 5.148342(0.00000) *** 1.199348 (0.000000) ***
LOG(L) 4098.144 4133.955 4138.849 4134.063 4139.244
LB2(1) 0.00032 0.06294 0.03472 0.05974 0.02502
LB2(5) 0.68873 1.14346 0.98759 1.11792 0.91801 
LB2(9) 1.15402  1.81742 1.56472 1.78469 1.48424

注:括号中是P值。***表示0.1%置信水平下统计显著;**表示在 1%置信水平下统计显著;*表示5%水平下统计显著。

对GJR-GARCH(1,1)模型来说, 无论收益率残差服从哪种分布,其杠杆系数 都是不显著的。但是就其他参数而言,GED分布下,参数拟合都是显著的。方差方程中ARCH项和GARCH项系数均高度显著,然而均值方程和方差方程中的的常数项均不显著。通过对比对数似然函数值,发现残差服从GED分布和SGED分布时,模型拟合效果要优于正态分布、t分布和偏t分布。另外,五种分布条件下, 均接近1,这说明尽管收益率的波动会逐步衰减,但是持续的时间将会非常长。最后,LB2统计量显示模型的标准化残差平方均不再具有异方差现象,且在统计上都是显著的。

APARCH模型

APARCH(1,1)模型波动性方程为:

variance.model=list(model="apARCH", garchOrder=c(1,1)),

DP7@A6FQA(B@JCNM(F09K29.png

收益率指数 APARCH 模型估计结果

  正态分布 t分布 GED 偏t分布 SGED
c 0.000301( 0.15463) 0.000349 (0.071965) 0.000349( 0.049846)* 0.000338 (0.108480) 0.000239 (0.379013)

0.000000(0.92767) 0.000000(0.979064) 0.000000(0.972073) 0.000000(0.984476) 0.000000(0.992160)

0.036457(0.00021)*** 0.036235(0.061548) 0.036665(0.123664) 0.038866(0.179902) 0.036743 (0.540439)
** 0.914738(0.00000) *** 0.920788(0.000000) *** 0.917647(0.000000) *** 0.920930(0.000000) *** 0.919184 (0.000000) ***

0.001559( 0.98256) 0.076905(0.416691) 0.048123(0.624721) 0.063356(0.277636) 0.019934 (0.835479)

2.770787(0.00000) *** 2.835321(0.000000) *** 2.732345(0.000000) *** 2.774741(0.000000) *** 2.794404(0.000000) ***




0.991283 (0.000000) *** 0.970652(0.000000) ***


5.534190(0.000017) *** 1.207995(0.000000) *** 5.400260  (0.000001) *** 1.213429(0.000687) ***
LOG(L) 4100.315 4134.174 4139.32 4134.308 4139.746
LB2(1) 0.07729 0.1613 0.1208 0.1772 0.09563
LB2(5) 0.94386 1.2998 1.1247 1.3636 1.05785
LB2(9) 1.45195 2.0242 1.7278 2.1042 1.64646

注:括号中是P值。***表示0.1%置信水平下统计显著;**表示在 1%置信水平下统计显著;*表示5%水平下统计显著。

对APARCH (1,1)模型来说, 除了方差方程 和 显著外,其他系数基本不显著。通过对比对数似然函数值,发现残差服从GED分布和SGED分布时,模型拟合效果要优于正态分布、t分布和偏t分布。LB2统计量显示模型的标准化残差平方均不再具有异方差现象,且在统计上都是显著的。

计算VaR

plotMSFT.garch11.fitwhich=2

PO5IGNO20KZY3%@37H~UUXS.png


点击标题查阅往期内容


7PX}0AK4}~D3~JOVE7ZDVQ5.png

R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格

左右滑动查看更多

01

1LA`UZ~C1XJGIW6XRKZ8BG4.png

02

XD9W~CRM8DWF[0S8CDPM7%S.png

03

5R63F5~IUW3R{T6{~~`F$9U.png

04

WBY4[F54SPT2X{GUOGHK_5K.png



序列预测

plotMSFT.garch11.boot

A(K1_Y5N]NWI2U(DD`L`LH5.png

GARCH11滚动预测

MSFT.garch11.roll =spec y  
  
  
classMSFT.garch11.roll
## [1] "uGARCHroll"  
## attr"package"  
## [1] "rugarch"
## VaR Backtest Report  
## ===========================================  
## Model:               eGARCH-norm  
## Backtest Length: 1000  
## Data:                 
##  
## ==========================================  
## alpha:               1%  
## Expected Exceed: 10  
## Actual VaR Exceed:   50  
## Actual %:            5%  
##  
## Unconditional Coverage Kupiec  
## Null-Hypothesis: Correct Exceedances  
## LR.uc Statistic: 82.582  
## LR.uc Critical:      3.841  
## LR.uc p-value:       0  
## Reject Null:     YES  
##  
## Conditional Coverage Christoffersen  
## Null-Hypothesis: Correct Exceedances and  
##                  Independence of Failures  
## LR.cc Statistic: 118.726  
## LR.cc Critical:      5.991  
## LR.cc p-value:       0  
## Reject Null:     YES

[RSDOO0TIXZ8`A42VGZ]$_D.png

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
16天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
39 3
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
67 3
|
6月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
下一篇
无影云桌面