金融ネタとか備忘録とか

社会人6年目になりました(23年4月)。個人的に勉強したことをメモしていきます(2018年3月)。

RによるGARCHモデル,EGARCHモデルの推計

概要

  • はてなブログを始めてみたので,試しに初投稿

  • 日経225のボラティリティをGARCHモデル,EGARCHモデルで推計してみた

  • 推計結果の解釈はともあれ,Rによる推計手順をメモ

日経225のデータの取得

 とりあえず,日銀によって現在行われている量的・質的金融緩和(QQE)以降の日経平均株価を取得。 QQEが導入されたのは2013年4月4日*1

nikkei <- getSymbols("^N225", src = "yahoo", from = as.Date("2013-04-04"),
                     to = as.Date("2017-08-18"), auto.assign = FALSE)
nikkei.price <- nikkei$N225.Close

 日経平均株価終値の推移は,次の図。 f:id:shiba_ryu0209:20170820144107j:plain

 終値の対数差分をとって,収益率の過程を計算。 欠損値はスプライン補間。

nikkei.return <- diff(log(nikkei.price))[-1]
nikkei.return <- na.spline(nikkei.return)

f:id:shiba_ryu0209:20170820145225j:plain

GARCHモデルとEGARCHモデル

 モデルの説明は,渡部(2000)を援用。

ボラティリティ変動モデル (シリーズ 現代金融工学)

ボラティリティ変動モデル (シリーズ 現代金融工学)

  GARCH(p,q) モデルは

 \varepsilon_{t} = R_{t} - E_{t-1} ( R_{t} ) \\
 \varepsilon_{t} = \sigma_{t} z_{t}, \ \ \sigma_{t} > 0, \ \ z_{t}~i.i.d., \ \ E(z_{t}) = 0, \ \ Var(z_{t})= 1\\
 \sigma_{t}^{2} = \omega + \sum_{i=1}^{p} \beta_{i} \sigma_{t-i}^{2} + \sum_{j=1}^{q} \alpha_{j} \varepsilon_{t-j}^{2}, \\
 \omega > 0, \ \ \beta_{i}, \ \ \alpha_{j} > 0, \ \ i = 1,2,...,p; \ \ j = 1,2,...,q

である。ただし, R_t は株価の収益率, \varepsilon_t は期待収益率の乖離(すなわち予測誤差)。  z_t正規分布である必要はない。

  EGARCH(p,q) モデルは

 \ln(\sigma_{t}^{2}) = \omega + \sum_{i=1}^{p} \beta \ln( \sigma_{t-i}^{2} ) + \sum_{j=1}^{q} \alpha_{j} [ \theta z_{t-i} + \gamma (|z_{t-j}| - E (|z_{t-j}|) ] \\
 z_{t} = \varepsilon_t / \sigma_{t}

である。 z_t は予測誤差 \varepsilon_tボラティリティ  \sigma_t で除した変数。

 以下では,GARCHモデルとEGARCHモデルの次数  p q はそれぞれ1とする*2

 GARCHモデルとEGARCHモデルの違いは, \gamma に表れる。 現実のマーケットでは,株価の下落(負のショック)の方がマーケットに与えるインパクトが大きいといわれている(レバレッジ効果)。 GARCHモデルではショックが対称であるが,EGARCHモデルでは非対称にすることができる。

推計

 まずは,GARCHモデルの推計。次数  (p,q) (1,1) 。推計はtseriesパッケージのgarch関数。

x <- garch(nikkei.return, order = c(1,1), trace = F)
summary(x)

推計結果は次のよう。

Call:
garch(x = nikkei.return, order = c(1, 1), trace = F)

Model:
GARCH(1,1)

Residuals:
     Min       1Q   Median       3Q      Max 
-5.20347 -0.46424  0.04545  0.59874  3.37857 

Coefficient(s):
    Estimate  Std. Error  t value Pr(>|t|)    
a0 7.942e-06   1.615e-06    4.917 8.79e-07 ***
a1 2.546e-01   3.130e-02    8.135 4.44e-16 ***
b1 7.560e-01   2.313e-02   32.678  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Diagnostic Tests:
    Jarque Bera Test

data:  Residuals
X-squared = 321.94, df = 2, p-value < 2.2e-16


    Box-Ljung test

data:  Squared.Residuals
X-squared = 1.5052, df = 1, p-value = 0.2199

 係数はすべて1%水準で有意。β1は0.756であり,ボラティリティにはある程度の持続性があることがわかる。 Jarque Bara検定の結果をみると,p-valueが非常に小さいので残差が正規分布にしたがっていないと言える。 Box-Ljung検定の結果は,残差2乗に系列相関があるっぽいことを示している。

 次に,EGARCHモデルの推計。次数(p,q)は(1,1)。推計はrugarchパッケージ。

y <- ugarchspec(variance.model = list(model = "eGARCH", garchOrder = c(1,1)),
                mean.model = NULL,
                distribution.model = "norm") #今回はz_tに正規分布を仮定
y.fit = ugarchfit(y,nikkei.return)

 推計結果は次のよう。

*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : eGARCH(1,1)
Mean Model  : ARFIMA(1,0,1)
Distribution    : norm 

Optimal Parameters
------------------------------------
        Estimate  Std. Error   t value Pr(>|t|)
mu      0.000185    0.000339   0.54647  0.58474
ar1    -0.453453    0.028285 -16.03175  0.00000
ma1     0.412972    0.028990  14.24517  0.00000
omega  -0.339243    0.060716  -5.58738  0.00000
alpha1 -0.098662    0.017358  -5.68377  0.00000
beta1   0.959716    0.006908 138.91911  0.00000
gamma1  0.231997    0.029801   7.78492  0.00000

Robust Standard Errors:
        Estimate  Std. Error  t value Pr(>|t|)
mu      0.000185    0.000369   0.5016 0.615951
ar1    -0.453453    0.014511 -31.2485 0.000000
ma1     0.412972    0.014091  29.3083 0.000000
omega  -0.339243    0.070179  -4.8340 0.000001
alpha1 -0.098662    0.043259  -2.2807 0.022565
beta1   0.959716    0.007744 123.9298 0.000000
gamma1  0.231997    0.043629   5.3175 0.000000

LogLikelihood : 3174.769 

Information Criteria
------------------------------------
                    
Akaike       -5.8990
Bayes        -5.8666
Shibata      -5.8991
Hannan-Quinn -5.8867

Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
                        statistic p-value
Lag[1]                     0.4827  0.4872
Lag[2*(p+q)+(p+q)-1][5]    1.6308  0.9946
Lag[4*(p+q)+(p+q)-1][9]    3.2827  0.8433
d.o.f=2
H0 : No serial correlation

Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
                        statistic p-value
Lag[1]                    0.01594  0.8995
Lag[2*(p+q)+(p+q)-1][5]   0.28856  0.9849
Lag[4*(p+q)+(p+q)-1][9]   0.74132  0.9945
d.o.f=2

Weighted ARCH LM Tests
------------------------------------
            Statistic Shape Scale P-Value
ARCH Lag[3] 5.569e-05 0.500 2.000  0.9940
ARCH Lag[5] 3.643e-01 1.440 1.667  0.9227
ARCH Lag[7] 3.928e-01 2.315 1.543  0.9870

Nyblom stability test
------------------------------------
Joint Statistic:  1.5595
Individual Statistics:              
mu     0.45356
ar1    0.10061
ma1    0.08621
omega  0.35353
alpha1 0.38347
beta1  0.36896
gamma1 0.09743

Asymptotic Critical Values (10% 5% 1%)
Joint Statistic:         1.69 1.9 2.35
Individual Statistic:    0.35 0.47 0.75

Sign Bias Test
------------------------------------
                   t-value   prob sig
Sign Bias          0.04305 0.9657    
Negative Sign Bias 0.07949 0.9367    
Positive Sign Bias 0.82657 0.4087    
Joint Effect       1.03200 0.7935    


Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
  group statistic p-value(g-1)
1    20     59.07    5.420e-06
2    30     78.40    1.980e-06
3    40     90.69    5.337e-06
4    50    105.52    5.086e-06


Elapsed time : 0.3227599 

 beta1は0.9597(1%有意)であり,ボラティリティには非常に高い持続性があることがわかる。 また,gamma1は0.231997(1%有意)であり正である。 このことから,QQE導入期に限れば日経平均株価のショック構造に非対称性がないことがわかる。

結果

 GARCHモデルとEGARCHモデルを使って,日経平均株価ボラティリティ構造をモデル化した。 得られた結果は,

  1. ボラティリティにはある程度以上の持続性があるらしい

  2. ショック構造にはレバレッジ効果のような非対称性はないらしい

というもの。

補足
  • ショック部分に正規分布を仮定して推計したが,実際は正規分布より裾の厚い分布をしていることが指摘されている。 なので,t分布や一般化誤差分布を仮定して推計した方がいいらしい(なおrugarchパッケージのugarchspec関数内 の引数を変えることで,仮定する分布を変えることが可能)。

  • 計算過程を確かめるためにパッケージの中身をちゃんと見ないとダメ。

*1:QQEについては,

http://www.boj.or.jp/mopo/outline/qqe.htm/

*2:次数は,天下り的に(1,1)に設定されることが多いらしい。詳しくは,Hansen and Lunde(2005),"Forecast Comparison of Volatility Models:Does Anything Beat A GARCH(1,1)?``http://onlinelibrary.wiley.com/doi/10.1002/jae.800/abstractや三井(2014)。

ARCH型モデルによる金融資産分析

ARCH型モデルによる金融資産分析