小言_互联网的博客

R语言使用多元AR-GARCH模型衡量市场风险

409人阅读  评论(0)

原文链接:http://tecdat.cn/?p=19118

 本文分析将用于制定管理客户和供应商关系的策略准则。假设:

  • 贵公司拥有用于生产和分销聚戊二酸的设施,聚戊二酸是一种用于多个行业的化合物。
  • 制造和分销过程的投入包括各种石油产品和天然气。价格波动可能非常不稳定。
  • 营运资金管理一直是一个挑战,最近汇率的走势严重影响了资金。
  • 您的CFO使用期货和场外交易(OTC)工具对冲价格风险。

董事会感到关切的是,公司已连续第五个季度未能实现盈利预期。股东不高兴。罪魁祸首似乎是商品销售成本的波动。

示例

  1. 您应该问有哪些能源定价模式的关键业务问题?
  2. 您可以使用哪种方法来管理波动率?

这里有一些想法。关键业务问题可能是:

  • 哪些输入价格和汇率比其他输入价格和汇率更不稳定?何时?
  • 价格走势相关吗?
  • 在市场压力时期,它们的走势会有多动荡?
  • 是否有我们可以部署的套期工具或可以用来减轻定价风险?

管理波动

  • 建立输入监视系统,以了解哪些输入会影响运行制造和分销流程的哪些成本。
  • 监控价格走势和特征,并按流程衡量对关键营业收入构成部分的影响的严重性。
  • 内置价格无法承受预警指标。

 

在本文中,我们将

  • 使用波动率聚类
  • 拟合AR-GARCH模型
  • 从AR-GARCH模型模拟波动率
  • 衡量风险

ARCH模型

我们已经研究了波动性聚类。ARCH模型是对此进行建模的一种方法。

这些模型对于金融时间序列特别有用,因为金融时间序列显示出较大的收益率变动时期以及相对平稳的价格变化的间歇时期。

可以从z(t)标准正态变量和初始标准波动率开始指定AR + ARCH模型σ(t)2 = z(t)2。然后,我们用方差ε(t)=(sigma2)1 / 2z(t)ε的平方来调节这些变量。然后我们首先为每个日期计算t = 1 ... n,

使用该条件误差项,我们计算自回归

现在我们准备计算新的方差项。


  
  1. n <- 10500
  2. z <- rnorm(n) ## 样本标准正态分布变量
  3. sig2 <- z^ 2 ##创建波动率序列
  4. omega <- 1 ## 方差
  5. mu <- 0. 1 ## 平均收益率
  6. omega/( 1-alpha)
  7. sqrt(omega/( 1-alpha))
## [1] 2.222222
## [1] 1.490712

  
  1. for (t in 2 :n) ## 滞后于第二个日期开始
  2. {
  3. y[t] <- mu + phi*(y[t- 1 -mu) + e[t] ## 收益率
  4. sig2[t+ 1] <- omega + alpha * e[t ^ 2 ## 生成新的sigma ^ 2。

结果没有指导意义。

 

我们可以看到

  1. 条件标准偏差中较大的孤立峰
  2. 在ARCH图中也显示

 

估计

我们有多种方法来估计AR-ARCH过程的参数。首先,让我们加载一些数据。


  
  1. ## 汇率数据是从OANDA获得
  2. data.1 <- na.omit(merge(EUR_USD, GBP_USD,
  3. OIL_Brent))
  4. P <- data.1
  5. R <- na.omit(diff(log( P)) * 100)

然后,我们绘制数据自相关。

 


  
  1. # #
  2. # # Box-Ljung test
  3. # #
  4. # # data: Brent.r
  5. # # X-squared = 32.272, df = 14, p-value = 0.003664

纯随机性检验,p值小于5%,序列为非白噪声

拟合

我们的第一项任务是ARMA-GARCH模型。

  1. 指定普通sGarch 模型。
  2. garchOrder = c(1,1) 表示我们使用残差平方和方差的一期滞后:
  3. 使用 armaOrder = c(1,0) 指定长期平均收益模型 
  4. mean如上述方程式中包括 。
  5. 按照norm 正态分布 。我们还将使用赤池信息准则(AIC)将拟合与学生t分布进行比较 。
  6. 使用将数据拟合到模型 ugarchfit

  
  1. ugarchspec( variance.model = list( model = "sGARCH",
  2. garchOrder = c( 1, 1)), mean.model = list( armaOrder = c( 1,
  3. 0), include.mean = TRUE), distribution.model = "norm")

让我们看一下该模型中的条件分位数,也称为VaR,设置为99%。


  
  1. ## 首先是条件分位数
  2. plot(fit, which = 2)

 

 

现在,让我们生成一个绘图面板。


  
  1. # # 数据acf-显示序列相关
  2. plot(fit , which = 6)
  3. # # 数据的QQ图-显示标准化残基的峰度-不支持正态假设
  4. # # 标准化残差的acf
  5. # # 平方标准残差的acf

 

例子

让我们重做GARCH估计,现在使用Student t分布。


  
  1. ## 用学生t分布拟合AR(1)-GARCH(1,1)模型
  2. AR.GARCH.spec <- ugarchspec(variance.model = list(model = "sGARCH",
  3. garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1,
  4. 0), include.mean = TRUE), distribution.model = "std")

结果 

  1. 绝对观测值的ACF表明存在很大的波动性聚类。
  2. AR-ARCH估计具有有界的标准化残差(残差/标准误差),从而大大降低了这些误差。
  3. 看来t分布AR-GARCH解释了原油波动的大部分趋势。

用哪个模型?使用Akaike信息准则(AIC)测量模型中的信息。

使用正态分布模型的AIC = 4.2471。使用学生t分布模型的AIC = 4.2062。学生t分布模型更好。

这是我们可以从拟合模型中得出的一些常见结果:


  
  1. ## mu ar1 omega alpha1 beta1 shape
  2. ## 0 .04018002 0 .01727725 0 .01087721 0 .03816097 0 .96074399 7 .03778415

系数包括:

  • mu 是原油的长期平均收益率。
  • ar1 是一天后收益对今天收益的影响。
  • omega 是长期方差。
  • alpha1 滞后平方方差对今天的收益的影响。
  • beta1 滞后平方残差对今天收益率的影响。
  • shape 是学生t分布的自由度。

让我们来绘制随时间变化的波动性。


  
  1. ## mu ar1 omega alpha1 beta1 shape
  2. ## 0 .04018002 0 .01727725 0 .01087721 0 .03816097 0 .96074399 7 .03778415

 

 

接下来,我们绘制并检验残差:

 

 

hist(z.hat)

 

mean(z.hat)
## [1] -0.0181139
var(z.hat)

  
  1. # # [,1]
  2. # # [1,] 1.000682

  
  1. # # [1] -0.3207327
  2. # # attr(,"method")
  3. # # [1] "moment"
kurtosis(z.hat)

  
  1. # # [1] 2.048561
  2. # # attr(,"method")
  3. # # [1] "excess"

  
  1. # #
  2. # # Shapiro-Wilk normality test
  3. # #
  4. # # data: as.numeric(z.hat)
  5. # # W = 0.98439, p-value < 2.2e-16

  
  1. # #
  2. # # Jarque-Bera Normality Test
  3. # #
  4. # # data: as.numeric(z.hat)
  5. # # JB = 780.73, p-value < 2.2e-16
  6. # # alternative hypothesis: greater

我们看到了什么?

  • 左偏。
  • 厚尾。
  • 两种标准检验均表明拒绝该序列为正态分布的零假设。

模拟

  1. 使用fit 结果中的参数指定AR-GARCH。
  2. 生成2000条模拟路径。

  
  1. GARCHspec

  
  1. # #
  2. # # *---------------------------------*
  3. # # * GARCH Model Spec *
  4. # # *---------------------------------*
  5. # #
  6. # # Conditional Variance Dynamics
  7. # # ------------------------------------
  8. # # GARCH Model : sGARCH(1,1)
  9. # # Variance Targeting : FALSE
  10. # #
  11. # # Conditional Mean Dynamics
  12. # # ------------------------------------
  13. # # Mean Model : ARFIMA(1,0,0)
  14. # # Include Mean : TRUE
  15. # # GARCH-in-Mean : FALSE
  16. # #
  17. # # Conditional Distribution
  18. # # ------------------------------------
  19. # # Distribution : std
  20. # # Includes Skew : FALSE
  21. # # Includes Shape : TRUE
  22. # # Includes Lambda : FALSE

  
  1. ## 生成长度为2000的两个路径
  2. ugarchpath(GARCHspec, n.sim = 2000,
  3. n.start = 50, m.sim = 2)

提取波动率

 head(vol)

  
  1. ## [,1] [,2]
  2. ## T+1 2 .950497 5 .018346
  3. ## T+2 2 .893878 4 .927087
  4. ## T+3 2 .848404 4 .849797
  5. ## T+4 2 .802098 4 .819258
  6. ## T+5 2 .880778 4 .768916
  7. ## T+6 2 .826746 4 .675612

 

 

 

 


  
  1. ## 实际的模拟数据
  2. X <- series $seriesSim
  3. head(X)

  
  1. ## [,1] [,2]
  2. ## [1,] 0 .1509418 1 .4608335
  3. ## [2,] 1 .2644849 -2 .1509425
  4. ## [3,] -1 .0397785 4 .0248510
  5. ## [4,] 4 .4369130 3 .4214660
  6. ## [5,] -0 .3076812 -0 .1104726
  7. ## [6,] 0 .4798977 2 .7440751

示例

模拟的序列是否符合事实?


  
  1. X1 <- X[, 1]
  2. acf(X 1)
  3. acf(abs(X 1))
  4. qqnorm(X 1)
  5. qqline(X 1, col = 2)
  6. shapiro.test(X 1)

 

这是结果 


  
  1. # #
  2. # # Shapiro-Wilk normality test
  3. # #
  4. # # data: X1
  5. # # W = 0.97164, p-value < 2.2e-16

Shapiro-Wilk检验-零假设:正态分布。如果p值足够小,则拒绝原假设。-必须使用QQ图进行验证。

多元GARCH

从单变量GARCH到多元GARCH

  • 动态条件相关。
  • 具有随时间变化的波动性。
  • 如何使资产收益之间的相关性也随时间变化。

为什么?-如果我们拥有投资组合(例如应收账款,可能会面临汇率和原油价格变动的情况),该怎么办?-我们需要了解这三个因素的联合波动性和依赖性,因为它们会影响应收账款的整体波动性。我们将使用这些条件方差来模拟管理货币和商品风险的工具的期权价格。

 

dcc.garch11.spec

  
  1. # #
  2. # # *------------------------------*
  3. # # * DCC GARCH Spec *
  4. # # *------------------------------*
  5. # # Model : DCC(1,1)
  6. # # Estimation : 2-step
  7. # # Distribution : mvt
  8. # # No. Parameters : 21
  9. # # No. Series : 3

现在进行拟合

现在让我们得到一些结果:


  
  1. # #
  2. # # *---------------------------------*
  3. # # * DCC GARCH Fit *
  4. # # *---------------------------------*
  5. # #
  6. # # Distribution : mvt
  7. # # Model : DCC(1,1)
  8. # # No. Parameters : 21
  9. # # [VAR GARCH DCC UncQ] : [0+15+3+3]
  10. # # No. Series : 3
  11. # # No. Obs. : 4057
  12. # # Log-Likelihood : -12820.82
  13. # # Av.Log-Likelihood : -3.16
  14. # #
  15. # # Optimal Parameters
  16. # # -----------------------------------
  17. # # Estimate Std. Error t value Pr(>|t|)
  18. # # [EUR.USD].mu 0.006996 0.007195 0.97238 0.330861
  19. # # [EUR.USD].omega 0.000540 0.000288 1.87540 0.060738
  20. # # [EUR.USD].alpha1 0.036643 0.001590 23.04978 0.000000
  21. # # [EUR.USD].beta1 0.962357 0.000397 2426.49736 0.000000
  22. # # [EUR.USD].shape 9.344066 1.192132 7.83811 0.000000
  23. # # [GBP.USD].mu 0.006424 0.006386 1.00594 0.314447
  24. # # [GBP.USD].omega 0.000873 0.000327 2.67334 0.007510
  25. # # [GBP.USD].alpha1 0.038292 0.002217 17.27004 0.000000
  26. # # [GBP.USD].beta1 0.958481 0.000555 1727.86868 0.000000
  27. # # [GBP.USD].shape 10.481272 1.534457 6.83061 0.000000
  28. # # [OIL.Brent].mu 0.040479 0.026696 1.51627 0.129450
  29. # # [OIL.Brent].omega 0.010779 0.004342 2.48228 0.013055
  30. # # [OIL.Brent].alpha1 0.037986 0.001941 19.57467 0.000000
  31. # # [OIL.Brent].beta1 0.960927 0.000454 2118.80489 0.000000
  32. # # [OIL.Brent].shape 7.040287 0.729837 9.64639 0.000000
  33. # # [Joint]dcca1 0.009915 0.002821 3.51469 0.000440
  34. # # [Joint]dccb1 0.987616 0.004386 225.15202 0.000000
  35. # # [Joint]mshape 9.732509 0.652707 14.91100 0.000000
  36. # #
  37. # # Information Criteria
  38. # # ---------------------
  39. # #
  40. # # Akaike 6.3307
  41. # # Bayes 6.3633
  42. # # Shibata 6.3306
  43. # # Hannan-Quinn 6.3423
  44. # #
  45. # #
  46. # # Elapsed time : 11.89964
  • 联合条件协方差参数显着不同于零。

现在,使用来自拟合的所有信息,我们进行预测。我们用来模拟套期工具或投资组合VaR或ES,让我们先绘制随时间变化的sigma。

示例

鉴于条件波动性和相关性,请查看VaR和ES的三个风险因素。

这是一些结果。首先,计算,然后绘图。


  
  1. ## 1% 5% 50% 95% 99%
  2. ## -6 .137269958 -3 .677130793 -0 .004439644 3 .391312753 5 .896992710

  
  1. ## 1% 5% 50% 95% 99%
  2. ## -1 .3393119939 -0 .8235076255 -0 .0003271163 0 .7659725631 1 .2465945013

  
  1. ## 1% 5% 50% 95% 99%
  2. ## -1 .520666396 -0 .980794376 0 .006889539 0 .904772045 1 .493169076

我们看到:

  1. 在分布的负数部分权重更大。
  2. 汇率大致相同。
  3. 如果您在客户和分销过程中使用布伦特原油,则可能会在约1%的时间内遭受600%以上的损失。

让我们使用新的波动率模型和分布进行调整,以拟合不对称和厚尾。

在这里,我们尝试使用一种新的GARCH模型:gjr代表Glosten,Jagannathan和Runkle(1993)他们提出的一个波动模型:

σ2t=ω+ασ2t-1+β1ε2t-1+β2ε2t-1It-1

 

拟合此模型。


  
  1. # #
  2. # # *---------------------------------*
  3. # # * GARCH Model Fit *
  4. # # *---------------------------------*
  5. # #
  6. # # Conditional Variance Dynamics
  7. # # -----------------------------------
  8. # # GARCH Model : gjrGARCH(1,1)
  9. # # Mean Model : ARFIMA(1,0,1)
  10. # # Distribution : nig
  11. # #
  12. # # Optimal Parameters
  13. # # ------------------------------------
  14. # # Estimate Std. Error t value Pr(>|t|)
  15. # # mu -0.040275 0.027883 -1.4445e+00 0.148608
  16. # # ar1 0.996072 0.001900 5.2430e+02 0.000000
  17. # # ma1 -0.989719 0.000005 -1.8786e+05 0.000000
  18. # # omega 0.006346 0.003427 1.8517e+00 0.064071
  19. # # alpha1 0.009670 0.003841 2.5178e+00 0.011808
  20. # # beta1 0.968206 0.001237 7.8286e+02 0.000000
  21. # # gamma1 0.042773 0.007183 5.9547e+00 0.000000
  22. # # skew -0.120184 0.032059 -3.7488e+00 0.000178
  23. # # shape 2.362890 0.351494 6.7224e+00 0.000000
  24. # #
  25. # # Robust Standard Errors:
  26. # # Estimate Std. Error t value Pr(>|t|)
  27. # # mu -0.040275 0.030871 -1.3046e+00 0.192023
  28. # # ar1 0.996072 0.002107 4.7283e+02 0.000000
  29. # # ma1 -0.989719 0.000005 -1.8363e+05 0.000000
  30. # # omega 0.006346 0.003388 1.8729e+00 0.061086
  31. # # alpha1 0.009670 0.004565 2.1184e+00 0.034143
  32. # # beta1 0.968206 0.000352 2.7485e+03 0.000000
  33. # # gamma1 0.042773 0.008503 5.0300e+00 0.000000
  34. # # skew -0.120184 0.033155 -3.6249e+00 0.000289
  35. # # shape 2.362890 0.405910 5.8212e+00 0.000000
  36. # #
  37. # # LogLikelihood : -8508.439
  38. # #
  39. # # Information Criteria
  40. # # ------------------------------------
  41. # #
  42. # # Akaike 4.1989
  43. # # Bayes 4.2129
  44. # # Shibata 4.1989
  45. # # Hannan-Quinn 4.2038
  46. # #
  47. # # Weighted Ljung-Box Test on Standardized Residuals
  48. # # ------------------------------------
  49. # # statistic p-value
  50. # # Lag[1] 1.856 0.1730
  51. # # Lag[2*(p+q)+(p+q)-1][5] 2.196 0.9090
  52. # # Lag[4*(p+q)+(p+q)-1][9] 2.659 0.9354
  53. # # d.o.f=2
  54. # # H0 : No serial correlation
  55. # #
  56. # # Weighted Ljung-Box Test on Standardized Squared Residuals
  57. # # ------------------------------------
  58. # # statistic p-value
  59. # # Lag[1] 0.5109 0.474739
  60. # # Lag[2*(p+q)+(p+q)-1][5] 9.3918 0.013167
  61. # # Lag[4*(p+q)+(p+q)-1][9] 13.2753 0.009209
  62. # # d.o.f=2
  63. # #
  64. # # Weighted ARCH LM Tests
  65. # # ------------------------------------
  66. # # Statistic Shape Scale P-Value
  67. # # ARCH Lag[3] 10.26 0.500 2.000 0.001360
  68. # # ARCH Lag[5] 10.41 1.440 1.667 0.005216
  69. # # ARCH Lag[7] 11.06 2.315 1.543 0.010371
  70. # #
  71. # # Nyblom stability test
  72. # # ------------------------------------
  73. # # Joint Statistic: 2.5309
  74. # # Individual Statistics:
  75. # # mu 0.91051
  76. # # ar1 0.07050
  77. # # ma1 0.06321
  78. # # omega 0.70755
  79. # # alpha1 0.22126
  80. # # beta1 0.28137
  81. # # gamma1 0.17746
  82. # # skew 0.25115
  83. # # shape 0.16545
  84. # #
  85. # # Asymptotic Critical Values (10% 5% 1%)
  86. # # Joint Statistic: 2.1 2.32 2.82
  87. # # Individual Statistic: 0.35 0.47 0.75
  88. # #
  89. # # Sign Bias Test
  90. # # ------------------------------------
  91. # # t-value prob sig
  92. # # Sign Bias 1.1836 0.23663
  93. # # Negative Sign Bias 0.7703 0.44119
  94. # # Positive Sign Bias 1.8249 0.06809 *
  95. # # Joint Effect 9.8802 0.01961 **
  96. # #
  97. # #
  98. # # Adjusted Pearson Goodness-of-Fit Test:
  99. # # ------------------------------------
  100. # # group statistic p-value(g-1)
  101. # # 1 20 27.42 0.09520
  102. # # 2 30 46.32 0.02183
  103. # # 3 40 58.50 0.02311
  104. # # 4 50 70.37 0.02431
  105. # #
  106. # #
  107. # # Elapsed time : 6.630391

我们可以使用 tailplot() 函数解释结果。


  
  1. ## p quantile sfall
  2. ## [1,] 0 .900 3 .478474 5 .110320
  3. ## [2,] 0 .950 4 .509217 6 .293461
  4. ## [3,] 0 .975 5 .636221 7 .587096
  5. ## [4,] 0 .990 7 .289163 9 .484430
  6. ## [5,] 0 .999 12 .415553 15 .368772

quantile 给出我们的风险价值(VaR)和期望损失(ES)

可以看到尾部图。

 

  • 结果表明,使用AR-GARCH处理后,尾部更厚。

  • 我们可以回到市场和风险部分,了解平均超额价值以及VaR和ES的置信区间。

  • 对于应收帐款,缓解策略可能是通过再保险和总收益互换提供超额风险对冲。

  • 对客户的信用风险分析至关重要:频繁更新客户将有助于及早发现某些解决方案的问题。


最受欢迎的见解

1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

2.R语言GARCH-DCC模型和DCC(MVT)建模估计

3.R语言实现 Copula 算法建模依赖性案例分析报告

4.R语言COPULAS和金融时间序列数据VaR分析

5.R语言多元COPULA GARCH 模型时间序列预测

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

9.matlab使用Copula仿真优化市场风险


转载:https://blog.csdn.net/qq_19600291/article/details/105916352
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场