R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数|附代码数据
全文链接:http://tecdat.cn/?p=31023
最近我们被客户要求撰写关于GARCH族模型的研究报告,包括一些图形和统计输出。
如何构建合适的模型以恰当的方法对风险进行测量是当前金融研究领域的一个热门话题 ( 点击文末“阅读原文”获取完整代码数据******** )。
VaR方法作为当前业内比较流行的测量金融风险的方法,具有简洁,明了的特点,而且相对于方差来讲,更多的将投资人的损失作为风险具有更好的合理性。
我们和一位客户讨论如何在R软件中处理GARCH族模型。
数据的选取
本文选取Wind资讯发布的股票型券商理财指数作为数据处理对象。选取的时间期间为2011年1月4日至2015年11月24日,共1187个交易日。该指数基日为2007年12月31日,基点为1000点。

收益率的计算
采用对数收益率对指数收盘点位进行计算,表达式为
记为序列 。由图观察可知,该收益率序列存在波动聚集现象。
clpr<-stock$Clsprcyield<-diff(log(clpr))ts.plot(yield)

基本特征分析
对序列 进行基本统计分析,结果如表所示:
summary(yield)sd(yield)var(yield)
表 指数日收益率基本统计表****
Min.1st Qu.MedianMean3rd Qu.Max.Sdskewness'kurtosis-0.03517-0.003890.00037490.00019630.004730.033480.008163353-0.40184622.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-Bera261.3839< 2.2e-16
为了进一步探究序列 的分布形态,对样本数据作直方图、QQ图。由图可见,该收益率序列的尾部更长更厚,且其分布存在明显的不对称的现象,为非正态分布。


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


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来建模。
相关视频
**
拓端
,赞22
**
拓端
,赞11
**
拓端
,赞9
**
拓端
,赞15
表中,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")

表 收益率指数 GARCH 模型估计结果*
正态分布t分布GED偏t分布SGEDc0.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.0994133.5714138.724133.6884139.112LB2(1)0.00053850.031540.013270.026330.01035LB2(5)0.72820741.007170.884240.970890.83074LB2(9)1.20036921.630251.434851.584881.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分布SGEDc0.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.9344131.2644136.1634131.4384136.691LB2(1)0.18710.003690.032730.0043770.03288LB2(5)0.82440.936440.836190.8985160.76626LB2(9)1.43081.559341.416081.5115971.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分布SGEDc0.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.1444133.9554138.8494134.0634139.244LB2(1)0.000320.062940.034720.059740.02502LB2(5)0.688731.143460.987591.117920.91801 LB2(9)1.15402 1.817421.564721.784691.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)),

收益率指数 APARCH 模型估计结果
正态分布t分布GED偏t分布SGEDc0.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.3154134.1744139.324134.3084139.746LB2(1)0.077290.16130.12080.17720.09563LB2(5)0.943861.29981.12471.36361.05785LB2(9)1.451952.02421.72782.10421.64646
注:括号中是P值。***表示0.1%置信水平下统计显著;**表示在 1%置信水平下统计显著;*表示5%水平下统计显著。
对APARCH (1,1)模型来说, 除了方差方程 和 显著外,其他系数基本不显著。通过对比对数似然函数值,发现残差服从GED分布和SGED分布时,模型拟合效果要优于正态分布、t分布和偏t分布。LB2统计量显示模型的标准化残差平方均不再具有异方差现象,且在统计上都是显著的。
计算VaR
plotMSFT.garch11.fitwhich=2

点击标题查阅往期内容

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

左右滑动查看更多

01

02

03

04

序列预测
plotMSFT.garch11.boot

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


点击文末 “阅读原文”
获取全文完整代码数据资料。
本文选自《R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数》。
点击标题查阅往期内容
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言用Garch模型和回归模型对股票价格分析
R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言ARMA GARCH COPULA模型拟合股票收益率时间序列和模拟可视化
ARMA-GARCH-COPULA模型和金融时间序列案例
时间序列分析:ARIMA GARCH模型分析股票价格数据
GJR-GARCH和GARCH波动率预测普尔指数时间序列和Mincer Zarnowitz回归、DM检验、JB检验
【视频】时间序列分析:ARIMA-ARCH / GARCH模型分析股票价格
时间序列GARCH模型分析股市波动率
PYTHON用GARCH、离散随机波动率模型DSV模拟估计股票收益时间序列与蒙特卡洛可视化
极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析
Garch波动率预测的区制转移交易策略
金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据
R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测R语言GARCH-DCC模型和DCC(MVT)建模估计
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
R语言时间序列GARCH模型分析股市波动率
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
R语言多元Copula GARCH 模型时间序列预测
R语言使用多元AR-GARCH模型衡量市场风险
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言用Garch模型和回归模型对股票价格分析
GARCH(1,1),MA以及历史模拟法的VaR比较
matlab估计arma garch 条件均值和方差模型R语言POT超阈值模型和极值理论EVT分析