SlideShare a Scribd company logo
1 of 52
Download to read offline
RでGARCHモデル
      TokyoR #21
          2012/03/10
             @horihorio
自己紹介
• Twitter ID:
        @horihorio
• お仕事:
        データマイニング・コンサルタント
               (重要なこと:会社は非金融業)
                     ただ何故か、金融機関の与信リスク管理・
                         分析を、4年少々やってたりする
• R使用歴:
        半年もない、とか。前回発表(Tokyo.R#18: 「Rで学
        ぶ 現代ポートフォリオ理論入門」 )以降、程度

2012/03/10           RでGARCHモデル       2
◇ 全体構成 ◇
1. Executive Summary
2. 理論編
   1. ARIMAモデル
   2. GARCHモデル
3. 実践編
   1. TOPIXとは?
   2. モデル作成
   3. モデル検証


2012/03/10       RでGARCHモデル   3
1. Executive Summary (1/5)
時系列モデルの目的:過去の値から将来を当てたい
• ARIMAモデルの場合



          AR           I       MA       誤差項
        (自己回帰)       (和分)    (移動平均)
ここで
  は「独立かつ同一の分布に従う(i.i.d)」とする※
             (※ホントは平均ゼロ、分散有限も必要。正確な定義はP.15を参照)

2012/03/10           RでGARCHモデル             4
1. Executive Summary (2/5)
   が「独立かつ同一の分布に従う(i.i.d.)」ならば
誤差項は、こうなるはず
  set.seed(1)
  plot(rnorm(1500, 0, 1), type="l", xlab="Time", ylab="Error", ylim = c(-9,9))
          5
  Error
          0
          -5




               0                500                 1000                 1500
                                          Time
2012/03/10                      RでGARCHモデル                                       5
1. Executive Summary (3/5)
ただ、東証TOPIXにARIMAモデルをはめると
誤差項って均一なの? (モデルの詳細は後述)
                               ジャンプなら
          0.10



                                この程度
          0.00
  Error




                                   時系列構造?
          -0.10




                  0   500          1000     1500
                            Time
2012/03/10            RでGARCHモデル               6
1. Executive Summary (4/5)
少々、分散に時系列構造を導入してみる
時系列データが、             に従っているとするとき、
GARCH(p,q)モデル を導入
                   分散の       2乗誤差の
                   時系列        時系列

        分散 1




2012/03/10      RでGARCHモデル           7
1. Executive Summary (5/5)
やっぱり、TOPIXの分散って荒れているのね…
                                Lehman破綻等々
  0.10

  収
  益
  率
     -0.10
  0.05




 収
の益
  0.01




 率
             0          500            1000         1500
                 Paribasショック、                 東日本
                 SubPrimeで色々 Time             大震災
2012/03/10                RでGARCHモデル                   8
◇ 全体構成 ◇
1. Executive Summary
2. 理論編
   1. ARIMAモデル
   2. GARCHモデル
3. 実践編
   1. TOPIXとは?
   2. モデル作成
   3. モデル検証


2012/03/10       RでGARCHモデル   9
2.1. ARIMAモデル
     ARIMAモデル
過去の Tokyo.R. で触れられた資料
    http://lab.sakaue.info/wiki.cgi/JapanR2010?page=%CA%D9%B6%AF%B2%F1
    %C8%AF%C9%BD%C6%E2%CD%C6%B0%EC%CD%F7#p15




                                                    ARIMAでないが
                                                       関連して

2012/03/10                 RでGARCHモデル                             10
2.1. ARIMAモデル
     ARIMAモデル
時系列ARIMAモデルは、以下3要素からなる
• AR(Auto Regression):自己回帰
      → 過去の自分の値
• I(Integrated):和分
      → 時系列データの階差をとる
• MA(Moving Average):移動平均
      → 現在および過去の誤差項の線型結合

               ARIMA (Box-Jenkins) モデル
               AR        I           MA
             (自己回帰)    (和分)        (移動平均)
2012/03/10            RでGARCHモデル            11
2.1. ARIMAモデル
     ARIMAモデル
AR(Auto Regression):自己回帰モデルとは、ある時点の値は、
過去の自分自身により説明されると考えるモデル。以下2つ
の要素からなる:
   • 自己回帰係数(影響倍率、定常ならば偏相関係数)と、
   • 次数(影響期間)

 AR(p)モデル:    1期前の       2期前の     p期前の
               自分         自分       自分


  定数項        自己回帰       次数        誤差項
              係数      (何期前まで     (独立なWhite
                       考えるか)     Noiseに従う)
2012/03/10          RでGARCHモデル          12
2.1. ARIMAモデル
     ARIMAモデル
MA(Moving Average):移動平均モデルとは、現在値と、過去
の誤差項の線形結合により表される関数
MA(q)モデル:
                     1期前の        2期前の             q期前の
       当期の誤差          誤差          誤差               誤差



MAモデルの意味って何よ?
• 定常時系列ならば、AR(∞) = MA(t)
• つまり、「小さいAR項×沢山」が、MA項少々で済む
   【イメージ】 0.8 MA(1) = 0.001 AR(101) + 0.0002 AR(102) + …
2012/03/10              RでGARCHモデル                         13
2.1. ARIMAモデル
     ARIMAモデル
I(Integrated) :和分とは、階差数列に対応する概念。
時系列モデルは、平均や自己共分散が一定(定常時系列)
でないと扱えない。非定常→定常 の変換に使ったりする
現系列
階差数列                         に対し

 数列では               時系列では

      の一般項を求め          のARMAモデルを推定し



2012/03/10      RでGARCHモデル         14
2.1. ARIMAモデル
     ARIMAモデル
AR + I + MA → ARIMAモデル が完成

  ARIMAモデル



          AR       I        MA     誤差項
        (自己回帰)   (和分)     (移動平均)

ここで          は、以下を満たす(分散均一性):


2012/03/10        RでGARCHモデル         15
◇ 全体構成 ◇
1. Executive Summary
2. 理論編
    1. ARIMAモデル
    2. GARCHモデル
3. 実践編
   1. TOPIXとは?
   2. モデル作成
   3. モデル検証


2012/03/10        RでGARCHモデル   16
2.2. GARCHモデル
     GARCHモデル
ARIMAモデルが弱い例
    • 金融市場:概して、荒れた翌日の値動きは活発
    • 2ch:祭りが起きた後は、暫く高アクセスが続く?

つまり、
 • 突発的な変動と、その後の「荒れ」が続き、
 誤差項が「独立かつ同一の分布」でない と弱い
対策
                 GARCHモデル
 • 分散にも時系列構造を導入
             ※GARCH: Generalized AutoRegressive
                        Conditional Heteroskedasticity
2012/03/10      RでGARCHモデル                         17
2.2. GARCHモデル
     GARCHモデル
【参考】周期変動ならば、Seasonal ARIMAが素直

例:   は4半期データ(周期4)とする。
ここで、4期前との差分                                           を考える。




そして、         と         でARIMAモデルを構築して掛け算。

Rでの使用例           arima(UKgas, order=c(2,1,2),
                        seasonal=list(order=c(1,1,3), period=4 )

2012/03/10              RでGARCHモデル                            18
2.2. GARCHモデル
     GARCHモデル
GARCH(p,q)モデルの式
時系列データが、                 に従っているとするとき、
                     分散の      2乗誤差の
                     時系列       時系列

        分散 1


ただし、                           防止が目的
             、       、
                 、       、        、

2012/03/10       RでGARCHモデル           19
2.2. GARCHモデル
     GARCHモデル
【参考】2乗誤差のみ考える、ARCH(q)モデルもある。
   要は、GARCHモデルで    としたもの。
時系列データが、                         に従っているとするとき、

                                                    2乗誤差の
             分散 1                                    時系列



ただし、
             、              、
             、                   、
                 ※ARCH: AutoRegressive Conditional Heteroskedasticity
2012/03/10              RでGARCHモデル                                20
2.2. GARCHモデル
     GARCHモデル
【参考】もっともな懸念で…
データが常に正規分布ではない。最後の分散の誤差が
        になる訳ないのでは?
【答え】
  • 正規分布以外では、GARCHアルゴリズムの最尤推
    定量は間違っている
  • ただ、標本数が大だと、最尤法の一致性ならOK
  • よって、実際の分布は正規分布でないが、正規分
    布のGARCH推定量でいいや、と割り切る?
  • ただ、最尤推定量や、(尤度を用いる)AIC等の情報
    量基準は、全て「擬似的な値」、なのは留意
2012/03/10   RでGARCHモデル    21
2.2. GARCHモデル
     GARCHモデル
GARCHモデルへのケチ:
   制約ナシだと     となるのは、何かと不自由
改良例
      EGARCH(p,q)モデル




                               係数の制約:ナシ!

2012/03/10        RでGARCHモデル          22
2.2. GARCHモデル
     GARCHモデル
EGARCHモデルって
【嬉しいこと】
  • 左辺は対数なので、右辺が負でも対応可能
  • 負になる変数でも、モデルに投入可能
【嬉しくないこと】
  • Rではどうやって扱うの?が不明…
  • CRANで egarch::egarch は発見したが、何か大丈
    夫?ってな香りがしたので自粛。Predictがダメ。
       (だし、時間がなかった。)
    • (緩募)egarchは大丈夫か否か、他にRでEGARCHモ
      デルを適用出来る方法、等々
2012/03/10      RでGARCHモデル         23
2.2. GARCHモデル
     GARCHモデル
その他、GARCHの拡張例
                                負ならば1となるダミー
• GJR(p,q)モデル




• Absolute Residual モデル




• 他に、Non-Linear GARCH, Quadratic GARCH, Threshold
  GARCH 等があり
2012/03/10         RでGARCHモデル                 24
◇ 全体構成 ◇
1. Executive Summary
2. 理論編
   1. ARIMAモデル
   2. GARCHモデル
3. 実践編
   1. TOPIXとは?
    2. モデル作成
    3. モデル検証


2012/03/10       RでGARCHモデル   25
3.0. 以下のアウトライン

東証TOPIX(後述)の、対前日比リターンに
 1. ARIMAモデル (季節調整なし)
 2. ARMAモデル + GARCHモデル
を当てはめ、比較してゆく。

モデル構築期間:
  2006/1/4~2012/1/31 (N=1489)
モデル検証期間:
  2012/2/1~2012/3/10 (N=28)

2012/03/10        RでGARCHモデル    26
3.1. TOPIXとは?
     TOPIXとは?
東証1部全体の時価総額を指標化した値
       野村證券・証券用語解説集より
東京証券取引所が日々計算し発表している株価指数で、
東証第1部の毎日の時価総額(全上場株をある日の終値
で評価したものの合計額)を基準日の時価総額で割って
算出される。

1968(昭和43)年1月4日の時価総額を100として計算して
おり、日経平均株価とならんで、重要な指数の1つとなっ
ている。
   引用元:http://www.nomura.co.jp/terms/japan/to/topix.html

2012/03/10             RでGARCHモデル                      27
3.1. TOPIXとは?
     TOPIXとは?
データの取得方法
• 例によって、 RFinanceYJ
 library("RFinanceYJ")

 topix.close <-
  as.ts( quoteStockTsData('998405.t’
        , since='2006-01-01', date.end='2011-12-31' )$close)

 # コッソリ、日次リターンに変換
 topix.return <- (topix.close/lag(topix.close)) - 1



2012/03/10                  RでGARCHモデル                         28
3.1. TOPIXとは?
     TOPIXとは?
データの雰囲気(2006/1/4~2012/1/31)
                 Paribasショック、
                 SubPrimeで色々     Lehman破綻、
          1800


                                MUFGのMorgan
                                Stanley出資 等
          1400




                                              東日本
  TOPIX




                                              大震災
          1000
          600




                 0        500          1000   1500
                                Time
2012/03/10               RでGARCHモデル             29
3.1. TOPIXとは?
     TOPIXとは?
TOPIXを(当日÷前日で)日次リターンに修正
                                 ※対数リターンでないの?といじめないで…

                  Paribasショック、
                  SubPrimeで色々
          0.10



                                                東日本
                                                大震災
  TOPIX
          0.00




                   Lehman破綻、
          -0.10




                  MUFGのMorgan
                  Stanley出資 等
                  0        500           1000   1500
                                  Time
2012/03/10                 RでGARCHモデル             30
◇ 全体構成 ◇
1. Executive Summary
2. 理論編
   1. ARIMAモデル
   2. GARCHモデル
3. 実践編
    1. TOPIXとは?
    2. モデル作成
    3. モデル検証


2012/03/10        RでGARCHモデル   31
3.2. モデル作成              詳細は
【0/2】単位根検定              こちらを

趣旨:
 このデータは、
    Random Walk(乱数列)でないよね?
   (Random Walk列でも、何かそれっぽいモデルが出来得る。
     けど、そのモデルって一体何よ? てな議論になるので…)


やり方:
     「Random Walkではない」の仮説検定
 • Phillips-Perron検定 [stats::PP.test]
 • Augmented Dickey-Fuller検定 [tseries::adf.test]
2012/03/10          RでGARCHモデル                     32
3.2. モデル作成
確認してみる(PP.testを使用)
 > PP.test(topix.close) # TOPIX現系列
                                                             Random Walkの
           Phillips-Perron Unit Root Test                       可能性61%
 data: topix.close
 Dickey-Fuller = -1.9303, Truncation lag parameter = 7, p-value = 0.6078


                                                             Random Walkの
 > PP.test(topix.return) # TOPIXリターン系列
                                                               可能性1%
           Phillips-Perron Unit Root Test
 data: topix.return
 Dickey-Fuller = -39.3825, Truncation lag parameter = 7, p-value = 0.01

よって、安心してリターン系列はいじれる。


2012/03/10                      RでGARCHモデル                                33
3.2. モデル作成
【1/2】(季節調整なし)ARIMAモデル
 参考:Tokyo.R#17 @teramonagi さん資料
   (ただ、問題があるのだが…。次のスライドで)
 最適次数は、ARIMA = (4,0,4)
library("snow")
hosts <- rep("localhost", 2)
cl <- makeCluster(hosts, type=“SOCK”); clusterExport(cl, "topix.return")

clusterCall(cl,topix.arima <-
  apply(expand.grid(1:5,1,0:5) , 1 , function(x) { try(
         arima(topix.return, order = x )
         , TRUE) } ) )
 stopCluster(cl)
 opt.topix.arima <- Reduce(function(x,y) if(x$aic < y$aic){x} else{y}, topix.arima)
2012/03/10                       RでGARCHモデル                                      34
3.2. モデル作成
【参考】前ページの問題:係数が収束しない場合

ARIMA = (3,1,5) は、一部係数が無限大に飛ぶ

                                             係数は∞




           fixed=c(0,NA,NA,0,0,NA,NA,NA))
arima(topix.return,order = c(3,1,5),

で無限大の項を除去できるが、当然AICの値は変わる

2012/03/10                      RでGARCHモデル          35
3.2. モデル作成
【2/2】の前に fGarch::garchFit で最適次数の探索法
ループでコマンドを生成・実行し、listに投入、してみた。
    (問題:(1) 係数発散時の問題 (2)エラー処理が未対応)
最適次数は、GARCH (1,1)
#書式: garchFit( ~ garch(P, Q), data = topix.return, trace = FALSE )
topix.garch <- as.list(NULL)
i <- 1; for (P in 1:5){ for (Q in 0:5){
topix.garch[[i]] <- try( eval( parse( text =
    paste("garchFit( ~ garch(", P ,", ", Q , "), data = topix.return, trace = FALSE )" )
        )), silent = TRUE)
  i <- i + 1 } }
opt.topix.garch <-
  Reduce(function(x,y) if(x@fit$ics[1] < y@fit$ics[1]){x} else{y}, topix.garch)


2012/03/10                             RでGARCHモデル                                          36
3.2. モデル作成
【参考】先のコードが汚い、Rらしくない、

とは思った、が改良は実力不足につき断念。
どうも、素直ではない書き方?をしないとダメっぽい。
 library(fGarch)
 spec <- garchSpec(model = list(alpha = 0.1, beta = c(0.4, 0.4)))
 Xt <- garchSim(spec, n = 100)

 x <- list()
 for(q in 1:3){
     print(q)
     x[q] <- list(garchFit(substitute(~garch(1,beta), list(beta =q))
                  , data = Xt, trace = FALSE)) }

上記例:[R] fGarch: how to use garchFit() in loop?
    https://stat.ethz.ch/pipermail/r-help/2010-August/249276.html
2012/03/10                  RでGARCHモデル                         37
3.2. モデル作成
【2/2】ARMAモデル + GARCHモデル
データは         だと仮定して、
  • (条件付き)平均値はARMAにて
  • (条件付き)分散はGARCHにて推定
ただ、これも係数発散問題が発生した…
(最後は怪しい手作業の)探索結果は、ARMA(5, 5) + GARCH(1, 1)

#書式: garchFit( ~ arma(p, q) + garch(P, Q)
                    , data = topix.return, trace = FALSE )
やったソース:先のGARCHモデル のノリで、もっと醜悪にしたもの…
実行には3・4時間くらいかかった、気がする。



2012/03/10                RでGARCHモデル                         38
◇ 全体構成 ◇
1. Executive Summary
2. 理論編
   1. ARIMAモデル
   2. GARCHモデル
3. 実践編
    1. TOPIXとは?
    2. モデル作成
    3. モデル検証

2012/03/10        RでGARCHモデル   39
3.3. モデル検証
最初にお詫び

以降のモデル検証は、

    • 前節でのエラーが取り切れていない
    • だからか?GARCHモデルの検証結果が怪しい
    • (あと時間不足で)モデルの予測まで未到達

です。何卒、ご了承下さい…。


2012/03/10   RでGARCHモデル        40
3.3. モデル検証
【1/2】ARIMAモデルの場合
stats::tsdiag で残差を見てゆく。

• 使用例:
     tsdiag(opt.topix.arima, gof.lag=10 )
   (※ gof.lagは、最下段:残差の自己相関 の検定時のラグ数)



• 出力例は、次のページで。
  結果:とりあえず、問題なさそうな。


2012/03/10                 RでGARCHモデル       41
3.3. モデル検証
                                                                 正規化残差
          -8
                                  Standardized Residuals


                0                500                      1000             1500
                                             Time                自己相関
                                                               飛び出てなければ
                                       ACF of Residuals          定常過程
ACF
          0.0




                0          5     10         15            20         25   30
                                             Lag                残差の自己
                                                                相関がゼロで
                               p values for Ljung-Box statistic  ある確率
p value
          0.0




                       2          4                 6            8             10
                                             lag

          2012/03/10                  RでGARCHモデル                          42
3.3. モデル検証
【2/2】ARMA + GARCHモデルの場合
見たい事:
• 基準化された残差                 はゼロなの?
• 基準化された残差                 は正規分布なの?

    再掲:
                   を仮定して
 GARCHモデル




             但し、            、

2012/03/10    RでGARCHモデル          43
3.3. モデル検証
【2/2】GARCHモデルの場合
                                 収束がどうも怪しい




                                左:残差の平均
                              右:平均値の標準誤差
             正規分布テストもダメ       平均ゼロで無い!orz
                                 尖度・歪度を見た
                                (要Package: e1071)




2012/03/10       RでGARCHモデル                  44
3.3. モデル検証
ARIMAとGARCHモデルの比較
やりたかったこと(その1)
• GARCHモデルで、    は    の不偏推定量なのか?

具体的には、
                        誤差項
の回帰式を考える。
もし不偏推定量ならば、
 係数が       になるハズ。


2012/03/10     RでGARCHモデル     45
3.3. モデル検証
ARIMAとGARCHモデルの比較
やりたかったこと(その2)
• GARCHモデルを導入すると、ARIMAモデルより「美味し
  い」のか?の検証
• 但し、ある指標で決まる話ではない。予測するものは、
      ARIMAモデル:出力は時系列の値
      GARCHモデル:出力は分散の値
  と異なるため。
• 考えていた観点の例:
   • ARIMAでの予測標準誤差を、GARCHの値と比較
   • (特に荒れたときの)過去時点での予測値を比較
2012/03/10   RでGARCHモデル      46
まとめ
• 時系列モデルとは、過去の値から将来の値を予測するモ
デルで、代表的なものにARIMAモデルがある。
• ARIMAモデルは、残差の分散が均一なのを仮定。よって、
突発的な変動があると弱い
• GARCHモデルは、残差に時系列構造を導入することで、突
発的な変動にも対応しようとするモデル

今後の課題
• モデルの係数が発散する場合の対応(参考:P35)
• (↑ に関連し)ホントは、係数推定前にエラー検知したい

2012/03/10   RでGARCHモデル         47
おまけ
最近買った本(参考文献4)を眺めていて
観測時系列データ:
は、必ずしも等時間間隔で取得できるとは限らない。

そこで、連続時間の確率過程を↓と表記



                       間隔が開くと、分散が大
ここで、         は標準ウィナー過程であり、
               は平均ゼロ、分散      に従う。

2012/03/10       RでGARCHモデル     48
おまけ
(平均回帰する)具体的なモデルの一例:
• Ornstein-Uhlenbeck過程(OU過程)



    (        のときにErgotic(何かに確率収束する))

• Vasicek過程



   (         のときにErgotic)

2012/03/10         RでGARCHモデル          49
おまけ
何でこんな話をしたのか?
「月曜日にマーケットは動く(月曜日効果)」と聞くので。
    • 理由の例:金曜→月曜だけ間隔が広く、情報が多く入るから

試しに:各曜日のTOPIXのリターンの標準偏差を計算
  library(RFinanceYJ); library(xts)

  # データを取得し、xtsに変換
  topix.raw <- quoteStockTsData('998405.t‘
            , since=‘2006-01-04’, date.end=‘2012-01-31’ )
  topix.xts <- as.xts( read.zoo(topix.raw))
  # 曜日毎の日次リターン・標準偏差の集計。1件目はNULLなので除外
  tapply( ( (topix.xts[,4]-lag(topix.xts[,4]))-1 )[-1,]
            , weekdays(index(topix.xts[-1,])) , sd)

2012/03/10                        RでGARCHモデル                50
おまけの蛇足
その結果:                      月曜日の値が
             曜日    標準偏差 一番大きい
             月曜日      18.45
             火曜日      17.82
             水曜日      17.75
             木曜日      17.90
             金曜日      17.71
• 真面目に考える方法例:以下回帰式を推定。各曜日のダミーを
  立て、各係数の有意確率と符号で判断
   (多重共線性防止のため、月曜日ダミーは入れていない)




2012/03/10     RでGARCHモデル           51
参考文献
1. 渡部敏明 『ボラティリティ変動モデル』
   朝倉書店 2000年

2. 岡田昌史(代表) 『Rパッケージガイドブック』
   東京書籍 2011年
   ⇒ 特に高柳氏のRmetricsのところを参照

3. P. Teetor(著)大橋・木下(訳)『Rクックブック』
   オライリー・ジャパン 2011年

4. 西山陽一 『ISMシリーズ:進化する統計数理1 マルチンゲー
   ル理論による統計解析』 近代科学社 2011年

2012/03/10       RでGARCHモデル        52

More Related Content

What's hot

バンディット問題について
バンディット問題についてバンディット問題について
バンディット問題についてjkomiyama
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみたTakashi Yamane
 
Rで学ぶ回帰分析と単位根検定
Rで学ぶ回帰分析と単位根検定Rで学ぶ回帰分析と単位根検定
Rで学ぶ回帰分析と単位根検定Nagi Teramo
 
2 4.devianceと尤度比検定
2 4.devianceと尤度比検定2 4.devianceと尤度比検定
2 4.devianceと尤度比検定logics-of-blue
 
社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森Masashi Komori
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
xtsパッケージで時系列解析
xtsパッケージで時系列解析xtsパッケージで時系列解析
xtsパッケージで時系列解析Nagi Teramo
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法Hidetoshi Matsui
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択kazutantan
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布についてHiroshi Shimizu
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?nishio
 
マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2宏喜 佐野
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギーHiroshi Shimizu
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編Hiroshi Shimizu
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章Shushi Namba
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展Shiga University, RIKEN
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章nocchi_airport
 
GEE(一般化推定方程式)の理論
GEE(一般化推定方程式)の理論GEE(一般化推定方程式)の理論
GEE(一般化推定方程式)の理論Koichiro Gibo
 

What's hot (20)

バンディット問題について
バンディット問題についてバンディット問題について
バンディット問題について
 
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた(実験心理学徒だけど)一般化線形混合モデルを使ってみた
(実験心理学徒だけど)一般化線形混合モデルを使ってみた
 
Rで学ぶ回帰分析と単位根検定
Rで学ぶ回帰分析と単位根検定Rで学ぶ回帰分析と単位根検定
Rで学ぶ回帰分析と単位根検定
 
階層ベイズとWAIC
階層ベイズとWAIC階層ベイズとWAIC
階層ベイズとWAIC
 
2 4.devianceと尤度比検定
2 4.devianceと尤度比検定2 4.devianceと尤度比検定
2 4.devianceと尤度比検定
 
社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森社会心理学者のための時系列分析入門_小森
社会心理学者のための時系列分析入門_小森
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
xtsパッケージで時系列解析
xtsパッケージで時系列解析xtsパッケージで時系列解析
xtsパッケージで時系列解析
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?
 
マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
 
GEE(一般化推定方程式)の理論
GEE(一般化推定方程式)の理論GEE(一般化推定方程式)の理論
GEE(一般化推定方程式)の理論
 

More from horihorio

分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47horihorio
 
セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44horihorio
 
統計と会計 - Zansa#19
統計と会計 - Zansa#19統計と会計 - Zansa#19
統計と会計 - Zansa#19horihorio
 
補足資料 財務3表の基礎知識
補足資料	財務3表の基礎知識補足資料	財務3表の基礎知識
補足資料 財務3表の基礎知識horihorio
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33horihorio
 
第6章 2つの平均値を比較する - TokyoR #28
第6章 2つの平均値を比較する - TokyoR #28第6章 2つの平均値を比較する - TokyoR #28
第6章 2つの平均値を比較する - TokyoR #28horihorio
 
時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17horihorio
 
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18horihorio
 

More from horihorio (8)

分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
 
セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44
 
統計と会計 - Zansa#19
統計と会計 - Zansa#19統計と会計 - Zansa#19
統計と会計 - Zansa#19
 
補足資料 財務3表の基礎知識
補足資料	財務3表の基礎知識補足資料	財務3表の基礎知識
補足資料 財務3表の基礎知識
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33
 
第6章 2つの平均値を比較する - TokyoR #28
第6章 2つの平均値を比較する - TokyoR #28第6章 2つの平均値を比較する - TokyoR #28
第6章 2つの平均値を比較する - TokyoR #28
 
時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17
 
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
Rで学ぶ現代ポートフォリオ理論入門 - TokyoR #18
 

RでGARCHモデル - TokyoR #21

  • 1. RでGARCHモデル TokyoR #21 2012/03/10 @horihorio
  • 2. 自己紹介 • Twitter ID: @horihorio • お仕事: データマイニング・コンサルタント (重要なこと:会社は非金融業) ただ何故か、金融機関の与信リスク管理・ 分析を、4年少々やってたりする • R使用歴: 半年もない、とか。前回発表(Tokyo.R#18: 「Rで学 ぶ 現代ポートフォリオ理論入門」 )以降、程度 2012/03/10 RでGARCHモデル 2
  • 3. ◇ 全体構成 ◇ 1. Executive Summary 2. 理論編 1. ARIMAモデル 2. GARCHモデル 3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証 2012/03/10 RでGARCHモデル 3
  • 4. 1. Executive Summary (1/5) 時系列モデルの目的:過去の値から将来を当てたい • ARIMAモデルの場合 AR I MA 誤差項 (自己回帰) (和分) (移動平均) ここで は「独立かつ同一の分布に従う(i.i.d)」とする※ (※ホントは平均ゼロ、分散有限も必要。正確な定義はP.15を参照) 2012/03/10 RでGARCHモデル 4
  • 5. 1. Executive Summary (2/5) が「独立かつ同一の分布に従う(i.i.d.)」ならば 誤差項は、こうなるはず set.seed(1) plot(rnorm(1500, 0, 1), type="l", xlab="Time", ylab="Error", ylim = c(-9,9)) 5 Error 0 -5 0 500 1000 1500 Time 2012/03/10 RでGARCHモデル 5
  • 6. 1. Executive Summary (3/5) ただ、東証TOPIXにARIMAモデルをはめると 誤差項って均一なの? (モデルの詳細は後述) ジャンプなら 0.10 この程度 0.00 Error 時系列構造? -0.10 0 500 1000 1500 Time 2012/03/10 RでGARCHモデル 6
  • 7. 1. Executive Summary (4/5) 少々、分散に時系列構造を導入してみる 時系列データが、 に従っているとするとき、 GARCH(p,q)モデル を導入 分散の 2乗誤差の 時系列 時系列 分散 1 2012/03/10 RでGARCHモデル 7
  • 8. 1. Executive Summary (5/5) やっぱり、TOPIXの分散って荒れているのね… Lehman破綻等々 0.10 収 益 率 -0.10 0.05 収 の益 0.01 率 0 500 1000 1500 Paribasショック、 東日本 SubPrimeで色々 Time 大震災 2012/03/10 RでGARCHモデル 8
  • 9. ◇ 全体構成 ◇ 1. Executive Summary 2. 理論編 1. ARIMAモデル 2. GARCHモデル 3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証 2012/03/10 RでGARCHモデル 9
  • 10. 2.1. ARIMAモデル ARIMAモデル 過去の Tokyo.R. で触れられた資料 http://lab.sakaue.info/wiki.cgi/JapanR2010?page=%CA%D9%B6%AF%B2%F1 %C8%AF%C9%BD%C6%E2%CD%C6%B0%EC%CD%F7#p15 ARIMAでないが 関連して 2012/03/10 RでGARCHモデル 10
  • 11. 2.1. ARIMAモデル ARIMAモデル 時系列ARIMAモデルは、以下3要素からなる • AR(Auto Regression):自己回帰 → 過去の自分の値 • I(Integrated):和分 → 時系列データの階差をとる • MA(Moving Average):移動平均 → 現在および過去の誤差項の線型結合 ARIMA (Box-Jenkins) モデル AR I MA (自己回帰) (和分) (移動平均) 2012/03/10 RでGARCHモデル 11
  • 12. 2.1. ARIMAモデル ARIMAモデル AR(Auto Regression):自己回帰モデルとは、ある時点の値は、 過去の自分自身により説明されると考えるモデル。以下2つ の要素からなる: • 自己回帰係数(影響倍率、定常ならば偏相関係数)と、 • 次数(影響期間) AR(p)モデル: 1期前の 2期前の p期前の 自分 自分 自分 定数項 自己回帰 次数 誤差項 係数 (何期前まで (独立なWhite 考えるか) Noiseに従う) 2012/03/10 RでGARCHモデル 12
  • 13. 2.1. ARIMAモデル ARIMAモデル MA(Moving Average):移動平均モデルとは、現在値と、過去 の誤差項の線形結合により表される関数 MA(q)モデル: 1期前の 2期前の q期前の 当期の誤差 誤差 誤差 誤差 MAモデルの意味って何よ? • 定常時系列ならば、AR(∞) = MA(t) • つまり、「小さいAR項×沢山」が、MA項少々で済む 【イメージ】 0.8 MA(1) = 0.001 AR(101) + 0.0002 AR(102) + … 2012/03/10 RでGARCHモデル 13
  • 14. 2.1. ARIMAモデル ARIMAモデル I(Integrated) :和分とは、階差数列に対応する概念。 時系列モデルは、平均や自己共分散が一定(定常時系列) でないと扱えない。非定常→定常 の変換に使ったりする 現系列 階差数列 に対し 数列では 時系列では の一般項を求め のARMAモデルを推定し 2012/03/10 RでGARCHモデル 14
  • 15. 2.1. ARIMAモデル ARIMAモデル AR + I + MA → ARIMAモデル が完成 ARIMAモデル AR I MA 誤差項 (自己回帰) (和分) (移動平均) ここで は、以下を満たす(分散均一性): 2012/03/10 RでGARCHモデル 15
  • 16. ◇ 全体構成 ◇ 1. Executive Summary 2. 理論編 1. ARIMAモデル 2. GARCHモデル 3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証 2012/03/10 RでGARCHモデル 16
  • 17. 2.2. GARCHモデル GARCHモデル ARIMAモデルが弱い例 • 金融市場:概して、荒れた翌日の値動きは活発 • 2ch:祭りが起きた後は、暫く高アクセスが続く? つまり、 • 突発的な変動と、その後の「荒れ」が続き、 誤差項が「独立かつ同一の分布」でない と弱い 対策 GARCHモデル • 分散にも時系列構造を導入 ※GARCH: Generalized AutoRegressive Conditional Heteroskedasticity 2012/03/10 RでGARCHモデル 17
  • 18. 2.2. GARCHモデル GARCHモデル 【参考】周期変動ならば、Seasonal ARIMAが素直 例: は4半期データ(周期4)とする。 ここで、4期前との差分 を考える。 そして、 と でARIMAモデルを構築して掛け算。 Rでの使用例 arima(UKgas, order=c(2,1,2), seasonal=list(order=c(1,1,3), period=4 ) 2012/03/10 RでGARCHモデル 18
  • 19. 2.2. GARCHモデル GARCHモデル GARCH(p,q)モデルの式 時系列データが、 に従っているとするとき、 分散の 2乗誤差の 時系列 時系列 分散 1 ただし、 防止が目的 、 、 、 、 、 2012/03/10 RでGARCHモデル 19
  • 20. 2.2. GARCHモデル GARCHモデル 【参考】2乗誤差のみ考える、ARCH(q)モデルもある。 要は、GARCHモデルで としたもの。 時系列データが、 に従っているとするとき、 2乗誤差の 分散 1 時系列 ただし、 、 、 、 、 ※ARCH: AutoRegressive Conditional Heteroskedasticity 2012/03/10 RでGARCHモデル 20
  • 21. 2.2. GARCHモデル GARCHモデル 【参考】もっともな懸念で… データが常に正規分布ではない。最後の分散の誤差が になる訳ないのでは? 【答え】 • 正規分布以外では、GARCHアルゴリズムの最尤推 定量は間違っている • ただ、標本数が大だと、最尤法の一致性ならOK • よって、実際の分布は正規分布でないが、正規分 布のGARCH推定量でいいや、と割り切る? • ただ、最尤推定量や、(尤度を用いる)AIC等の情報 量基準は、全て「擬似的な値」、なのは留意 2012/03/10 RでGARCHモデル 21
  • 22. 2.2. GARCHモデル GARCHモデル GARCHモデルへのケチ: 制約ナシだと となるのは、何かと不自由 改良例 EGARCH(p,q)モデル 係数の制約:ナシ! 2012/03/10 RでGARCHモデル 22
  • 23. 2.2. GARCHモデル GARCHモデル EGARCHモデルって 【嬉しいこと】 • 左辺は対数なので、右辺が負でも対応可能 • 負になる変数でも、モデルに投入可能 【嬉しくないこと】 • Rではどうやって扱うの?が不明… • CRANで egarch::egarch は発見したが、何か大丈 夫?ってな香りがしたので自粛。Predictがダメ。 (だし、時間がなかった。) • (緩募)egarchは大丈夫か否か、他にRでEGARCHモ デルを適用出来る方法、等々 2012/03/10 RでGARCHモデル 23
  • 24. 2.2. GARCHモデル GARCHモデル その他、GARCHの拡張例 負ならば1となるダミー • GJR(p,q)モデル • Absolute Residual モデル • 他に、Non-Linear GARCH, Quadratic GARCH, Threshold GARCH 等があり 2012/03/10 RでGARCHモデル 24
  • 25. ◇ 全体構成 ◇ 1. Executive Summary 2. 理論編 1. ARIMAモデル 2. GARCHモデル 3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証 2012/03/10 RでGARCHモデル 25
  • 26. 3.0. 以下のアウトライン 東証TOPIX(後述)の、対前日比リターンに 1. ARIMAモデル (季節調整なし) 2. ARMAモデル + GARCHモデル を当てはめ、比較してゆく。 モデル構築期間: 2006/1/4~2012/1/31 (N=1489) モデル検証期間: 2012/2/1~2012/3/10 (N=28) 2012/03/10 RでGARCHモデル 26
  • 27. 3.1. TOPIXとは? TOPIXとは? 東証1部全体の時価総額を指標化した値 野村證券・証券用語解説集より 東京証券取引所が日々計算し発表している株価指数で、 東証第1部の毎日の時価総額(全上場株をある日の終値 で評価したものの合計額)を基準日の時価総額で割って 算出される。 1968(昭和43)年1月4日の時価総額を100として計算して おり、日経平均株価とならんで、重要な指数の1つとなっ ている。 引用元:http://www.nomura.co.jp/terms/japan/to/topix.html 2012/03/10 RでGARCHモデル 27
  • 28. 3.1. TOPIXとは? TOPIXとは? データの取得方法 • 例によって、 RFinanceYJ library("RFinanceYJ") topix.close <- as.ts( quoteStockTsData('998405.t’ , since='2006-01-01', date.end='2011-12-31' )$close) # コッソリ、日次リターンに変換 topix.return <- (topix.close/lag(topix.close)) - 1 2012/03/10 RでGARCHモデル 28
  • 29. 3.1. TOPIXとは? TOPIXとは? データの雰囲気(2006/1/4~2012/1/31) Paribasショック、 SubPrimeで色々 Lehman破綻、 1800 MUFGのMorgan Stanley出資 等 1400 東日本 TOPIX 大震災 1000 600 0 500 1000 1500 Time 2012/03/10 RでGARCHモデル 29
  • 30. 3.1. TOPIXとは? TOPIXとは? TOPIXを(当日÷前日で)日次リターンに修正 ※対数リターンでないの?といじめないで… Paribasショック、 SubPrimeで色々 0.10 東日本 大震災 TOPIX 0.00 Lehman破綻、 -0.10 MUFGのMorgan Stanley出資 等 0 500 1000 1500 Time 2012/03/10 RでGARCHモデル 30
  • 31. ◇ 全体構成 ◇ 1. Executive Summary 2. 理論編 1. ARIMAモデル 2. GARCHモデル 3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証 2012/03/10 RでGARCHモデル 31
  • 32. 3.2. モデル作成 詳細は 【0/2】単位根検定 こちらを 趣旨: このデータは、 Random Walk(乱数列)でないよね? (Random Walk列でも、何かそれっぽいモデルが出来得る。 けど、そのモデルって一体何よ? てな議論になるので…) やり方: 「Random Walkではない」の仮説検定 • Phillips-Perron検定 [stats::PP.test] • Augmented Dickey-Fuller検定 [tseries::adf.test] 2012/03/10 RでGARCHモデル 32
  • 33. 3.2. モデル作成 確認してみる(PP.testを使用) > PP.test(topix.close) # TOPIX現系列 Random Walkの Phillips-Perron Unit Root Test 可能性61% data: topix.close Dickey-Fuller = -1.9303, Truncation lag parameter = 7, p-value = 0.6078 Random Walkの > PP.test(topix.return) # TOPIXリターン系列 可能性1% Phillips-Perron Unit Root Test data: topix.return Dickey-Fuller = -39.3825, Truncation lag parameter = 7, p-value = 0.01 よって、安心してリターン系列はいじれる。 2012/03/10 RでGARCHモデル 33
  • 34. 3.2. モデル作成 【1/2】(季節調整なし)ARIMAモデル 参考:Tokyo.R#17 @teramonagi さん資料 (ただ、問題があるのだが…。次のスライドで) 最適次数は、ARIMA = (4,0,4) library("snow") hosts <- rep("localhost", 2) cl <- makeCluster(hosts, type=“SOCK”); clusterExport(cl, "topix.return") clusterCall(cl,topix.arima <- apply(expand.grid(1:5,1,0:5) , 1 , function(x) { try( arima(topix.return, order = x ) , TRUE) } ) ) stopCluster(cl) opt.topix.arima <- Reduce(function(x,y) if(x$aic < y$aic){x} else{y}, topix.arima) 2012/03/10 RでGARCHモデル 34
  • 35. 3.2. モデル作成 【参考】前ページの問題:係数が収束しない場合 ARIMA = (3,1,5) は、一部係数が無限大に飛ぶ 係数は∞ fixed=c(0,NA,NA,0,0,NA,NA,NA)) arima(topix.return,order = c(3,1,5), で無限大の項を除去できるが、当然AICの値は変わる 2012/03/10 RでGARCHモデル 35
  • 36. 3.2. モデル作成 【2/2】の前に fGarch::garchFit で最適次数の探索法 ループでコマンドを生成・実行し、listに投入、してみた。 (問題:(1) 係数発散時の問題 (2)エラー処理が未対応) 最適次数は、GARCH (1,1) #書式: garchFit( ~ garch(P, Q), data = topix.return, trace = FALSE ) topix.garch <- as.list(NULL) i <- 1; for (P in 1:5){ for (Q in 0:5){ topix.garch[[i]] <- try( eval( parse( text = paste("garchFit( ~ garch(", P ,", ", Q , "), data = topix.return, trace = FALSE )" ) )), silent = TRUE) i <- i + 1 } } opt.topix.garch <- Reduce(function(x,y) if(x@fit$ics[1] < y@fit$ics[1]){x} else{y}, topix.garch) 2012/03/10 RでGARCHモデル 36
  • 37. 3.2. モデル作成 【参考】先のコードが汚い、Rらしくない、 とは思った、が改良は実力不足につき断念。 どうも、素直ではない書き方?をしないとダメっぽい。 library(fGarch) spec <- garchSpec(model = list(alpha = 0.1, beta = c(0.4, 0.4))) Xt <- garchSim(spec, n = 100) x <- list() for(q in 1:3){ print(q) x[q] <- list(garchFit(substitute(~garch(1,beta), list(beta =q)) , data = Xt, trace = FALSE)) } 上記例:[R] fGarch: how to use garchFit() in loop? https://stat.ethz.ch/pipermail/r-help/2010-August/249276.html 2012/03/10 RでGARCHモデル 37
  • 38. 3.2. モデル作成 【2/2】ARMAモデル + GARCHモデル データは だと仮定して、 • (条件付き)平均値はARMAにて • (条件付き)分散はGARCHにて推定 ただ、これも係数発散問題が発生した… (最後は怪しい手作業の)探索結果は、ARMA(5, 5) + GARCH(1, 1) #書式: garchFit( ~ arma(p, q) + garch(P, Q) , data = topix.return, trace = FALSE ) やったソース:先のGARCHモデル のノリで、もっと醜悪にしたもの… 実行には3・4時間くらいかかった、気がする。 2012/03/10 RでGARCHモデル 38
  • 39. ◇ 全体構成 ◇ 1. Executive Summary 2. 理論編 1. ARIMAモデル 2. GARCHモデル 3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証 2012/03/10 RでGARCHモデル 39
  • 40. 3.3. モデル検証 最初にお詫び 以降のモデル検証は、 • 前節でのエラーが取り切れていない • だからか?GARCHモデルの検証結果が怪しい • (あと時間不足で)モデルの予測まで未到達 です。何卒、ご了承下さい…。 2012/03/10 RでGARCHモデル 40
  • 41. 3.3. モデル検証 【1/2】ARIMAモデルの場合 stats::tsdiag で残差を見てゆく。 • 使用例: tsdiag(opt.topix.arima, gof.lag=10 ) (※ gof.lagは、最下段:残差の自己相関 の検定時のラグ数) • 出力例は、次のページで。 結果:とりあえず、問題なさそうな。 2012/03/10 RでGARCHモデル 41
  • 42. 3.3. モデル検証 正規化残差 -8 Standardized Residuals 0 500 1000 1500 Time 自己相関 飛び出てなければ ACF of Residuals 定常過程 ACF 0.0 0 5 10 15 20 25 30 Lag 残差の自己 相関がゼロで p values for Ljung-Box statistic ある確率 p value 0.0 2 4 6 8 10 lag 2012/03/10 RでGARCHモデル 42
  • 43. 3.3. モデル検証 【2/2】ARMA + GARCHモデルの場合 見たい事: • 基準化された残差 はゼロなの? • 基準化された残差 は正規分布なの? 再掲: を仮定して GARCHモデル 但し、 、 2012/03/10 RでGARCHモデル 43
  • 44. 3.3. モデル検証 【2/2】GARCHモデルの場合 収束がどうも怪しい 左:残差の平均 右:平均値の標準誤差 正規分布テストもダメ 平均ゼロで無い!orz 尖度・歪度を見た (要Package: e1071) 2012/03/10 RでGARCHモデル 44
  • 45. 3.3. モデル検証 ARIMAとGARCHモデルの比較 やりたかったこと(その1) • GARCHモデルで、 は の不偏推定量なのか? 具体的には、 誤差項 の回帰式を考える。 もし不偏推定量ならば、 係数が になるハズ。 2012/03/10 RでGARCHモデル 45
  • 46. 3.3. モデル検証 ARIMAとGARCHモデルの比較 やりたかったこと(その2) • GARCHモデルを導入すると、ARIMAモデルより「美味し い」のか?の検証 • 但し、ある指標で決まる話ではない。予測するものは、 ARIMAモデル:出力は時系列の値 GARCHモデル:出力は分散の値 と異なるため。 • 考えていた観点の例: • ARIMAでの予測標準誤差を、GARCHの値と比較 • (特に荒れたときの)過去時点での予測値を比較 2012/03/10 RでGARCHモデル 46
  • 47. まとめ • 時系列モデルとは、過去の値から将来の値を予測するモ デルで、代表的なものにARIMAモデルがある。 • ARIMAモデルは、残差の分散が均一なのを仮定。よって、 突発的な変動があると弱い • GARCHモデルは、残差に時系列構造を導入することで、突 発的な変動にも対応しようとするモデル 今後の課題 • モデルの係数が発散する場合の対応(参考:P35) • (↑ に関連し)ホントは、係数推定前にエラー検知したい 2012/03/10 RでGARCHモデル 47
  • 48. おまけ 最近買った本(参考文献4)を眺めていて 観測時系列データ: は、必ずしも等時間間隔で取得できるとは限らない。 そこで、連続時間の確率過程を↓と表記 間隔が開くと、分散が大 ここで、 は標準ウィナー過程であり、 は平均ゼロ、分散 に従う。 2012/03/10 RでGARCHモデル 48
  • 49. おまけ (平均回帰する)具体的なモデルの一例: • Ornstein-Uhlenbeck過程(OU過程) ( のときにErgotic(何かに確率収束する)) • Vasicek過程 ( のときにErgotic) 2012/03/10 RでGARCHモデル 49
  • 50. おまけ 何でこんな話をしたのか? 「月曜日にマーケットは動く(月曜日効果)」と聞くので。 • 理由の例:金曜→月曜だけ間隔が広く、情報が多く入るから 試しに:各曜日のTOPIXのリターンの標準偏差を計算 library(RFinanceYJ); library(xts) # データを取得し、xtsに変換 topix.raw <- quoteStockTsData('998405.t‘ , since=‘2006-01-04’, date.end=‘2012-01-31’ ) topix.xts <- as.xts( read.zoo(topix.raw)) # 曜日毎の日次リターン・標準偏差の集計。1件目はNULLなので除外 tapply( ( (topix.xts[,4]-lag(topix.xts[,4]))-1 )[-1,] , weekdays(index(topix.xts[-1,])) , sd) 2012/03/10 RでGARCHモデル 50
  • 51. おまけの蛇足 その結果: 月曜日の値が 曜日 標準偏差 一番大きい 月曜日 18.45 火曜日 17.82 水曜日 17.75 木曜日 17.90 金曜日 17.71 • 真面目に考える方法例:以下回帰式を推定。各曜日のダミーを 立て、各係数の有意確率と符号で判断 (多重共線性防止のため、月曜日ダミーは入れていない) 2012/03/10 RでGARCHモデル 51
  • 52. 参考文献 1. 渡部敏明 『ボラティリティ変動モデル』 朝倉書店 2000年 2. 岡田昌史(代表) 『Rパッケージガイドブック』 東京書籍 2011年 ⇒ 特に高柳氏のRmetricsのところを参照 3. P. Teetor(著)大橋・木下(訳)『Rクックブック』 オライリー・ジャパン 2011年 4. 西山陽一 『ISMシリーズ:進化する統計数理1 マルチンゲー ル理論による統計解析』 近代科学社 2011年 2012/03/10 RでGARCHモデル 52