zoukankan      html  css  js  c++  java
  • 拓端数据tecdat|R语言使用多元AR-GARCH模型衡量市场风险

    原文链接: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.  
       
    4.  
      sig2 <- z^2 ##创建波动率序列
    5.  
       
    6.  
       
    7.  
      omega <- 1 ## 方差
    8.  
       
    9.  
       
    10.  
       
    11.  
      mu <- 0.1 ## 平均收益率
    12.  
       
    13.  
       
    14.  
      omega/(1-alpha)
    15.  
      sqrt(omega/(1-alpha))
    ## [1] 2.222222
    ## [1] 1.490712
    1.  
      for (t in 2:n) ## 滞后于第二个日期开始
    2.  
       
    3.  
       
    4.  
      {
    5.  
      y[t] <- mu + phi*(y[t-1 -mu) + e[t] ## 收益率
    6.  
       
    7.  
       
    8.  
      sig2[t+1] <- omega + alpha * e[t ^2 ## 生成新的sigma ^ 2。
    9.  
       

    结果没有指导意义。

    我们可以看到

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

    估计

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

    1.  
       
    2.  
      ## 汇率数据是从OANDA获得
    3.  
       
    4.  
       
    5.  
      data.1 <- na.omit(merge(EUR_USD, GBP_USD,
    6.  
      OIL_Brent))
    7.  
      P <- data.1
    8.  
      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.  
       
    3.  
       
    4.  
      plot(fit, which = 2)

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

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

    例子

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

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

    结果 

    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.  
       
    2.  
      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.  
       
    3.  
      ugarchpath(GARCHspec, n.sim = 2000,
    4.  
      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(X1)
    3.  
      acf(abs(X1))
    4.  
      qqnorm(X1)
    5.  
      qqline(X1, col = 2)
    6.  
      shapiro.test(X1)

    这是结果 

    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仿真优化市场风险

     
     
    ▍关注我们 【大数据部落】第三方数据服务提供商,提供全面的统计分析与数据挖掘咨询服务,为客户定制个性化的数据解决方案与行业报告等。 ▍咨询链接:http://y0.cn/teradat ▍联系邮箱:3025393450@qq.com
  • 相关阅读:
    Redis 安装
    Git的安装和使用
    HTML5 本地存储+layer弹层组件制作记事本
    PHP 微信公众号开发
    PHP 微信公众号开发
    Electron 安装与使用
    HTML5 桌面消息提醒
    Composer安装和使用
    玄 学
    区间内的真素数
  • 原文地址:https://www.cnblogs.com/tecdat/p/14314990.html
Copyright © 2011-2022 走看看