不要な複雑さを避ける

Rで学ぶGARCHモデル

Kris Boudt

Professor of finance and econometrics

不要な複雑化を避ける

  • 次が分かっている場合:
    • 平均の動学は無視できる
    • 分散にレバレッジ効果はない
    • 分布は対称で裾が厚い

その場合、定数平均・標準 GARCH(1, 1)・スチューデントt分布が適切です。

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
Rで学ぶGARCHモデル

パラメータ推定に制約を課す

  • もしパラメータが
    • ある値に等しい
    • または、ある区間内にある
  • その場合、次のメソッドで仕様に反映します:
    • setfixed()
    • setbounds()
Rで学ぶGARCHモデル

為替レートへの適用

仕様と推定

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)

推定結果

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-3.562136e-05  8.005123e-08  3.097322e-02  9.674496e-01  8.821902e+00
Rで学ぶGARCHモデル

setfixed() の例

  • alpha1 = 0.05 と shape = 6 が既知なら、その値で推定します。
  • 方法: ugarchspec オブジェクトに setfixed() を適用
setfixed(garchspec) <- list(alpha1 = 0.05, shape = 6)

結果

garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-4.142922e-05  2.061772e-07  5.000000e-02  9.489622e-01  6.000000e+00
Rで学ぶGARCHモデル

パラメータの境界

  • GARCH のパラメータは区間に制限できます。
  • 妥当な値の区間が広い場合:
    • 分散を正に保つため、例として分散パラメータ($\omega$, $\alpha$, $\beta$, $\gamma$)を正にする必要があります。
  • 妥当な値の区間が狭い場合:
    • $\alpha$ の想定範囲: 0.05〜0.2
    • $\beta$ の想定範囲: 0.7〜0.95
  • このような境界制約は setbounds() で設定できます。
Rで学ぶGARCHモデル

setbounds() の例

setbounds(garchspec) <- list(alpha1 = c(0.05, 0.2), beta1 = c(0.8, 0.95))
Rで学ぶGARCHモデル

直感を使い、不要な複雑化を避ける

手持ちの情報を使う:

  • 単純(かつ賢い)モデルを作る
  • パラメータを固定または範囲指定する
  • GARCH の動学を現実的にする:

    • 標本標準偏差を中心にボラティリティが平均回帰する
      sd(EURUSDret) # returns a value of 0.006194049
      
Rで学ぶGARCHモデル

ボラティリティのクラスタと平均回帰

Rで学ぶGARCHモデル

Variance targeting(分散ターゲティング)

  • 数学的には、GARCH が示す無条件分散が標本分散 $\hat \sigma^2$ に等しいことを意味します。
  • 方法: ugarchspec() の variance.model で variance.targeting = TRUE を設定
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                        variance.model = list(model = "sGARCH",
                        variance.targeting = TRUE),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)
all.equal(uncvariance(garchfit), sd(EURUSDret) ^ 2, tol = 1e-4)
TRUE
Rで学ぶGARCHモデル

GARCH モデルに制約を課す

Rで学ぶGARCHモデル

Preparing Video For Download...