Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
RでGARCHモデル      TokyoR #21          2012/03/10             @horihorio
自己紹介• Twitter ID:        @horihorio• お仕事:        データマイニング・コンサルタント               (重要なこと:会社は非金融業)                     ただ何故か、...
◇ 全体構成 ◇1. Executive Summary2. 理論編   1. ARIMAモデル   2. GARCHモデル3. 実践編   1. TOPIXとは?   2. モデル作成   3. モデル検証2012/03/10       R...
1. Executive Summary (1/5)時系列モデルの目的:過去の値から将来を当てたい• ARIMAモデルの場合          AR           I       MA       誤差項        (自己回帰)   ...
1. Executive Summary (2/5)   が「独立かつ同一の分布に従う(i.i.d.)」ならば誤差項は、こうなるはず  set.seed(1)  plot(rnorm(1500, 0, 1), type="l", xlab="T...
1. Executive Summary (3/5)ただ、東証TOPIXにARIMAモデルをはめると誤差項って均一なの? (モデルの詳細は後述)                               ジャンプなら          0.1...
1. Executive Summary (4/5)少々、分散に時系列構造を導入してみる時系列データが、             に従っているとするとき、GARCH(p,q)モデル を導入                   分散の      ...
1. Executive Summary (5/5)やっぱり、TOPIXの分散って荒れているのね…                                Lehman破綻等々  0.10  収  益  率     -0.10  0.05...
◇ 全体構成 ◇1. Executive Summary2. 理論編   1. ARIMAモデル   2. GARCHモデル3. 実践編   1. TOPIXとは?   2. モデル作成   3. モデル検証2012/03/10       R...
2.1. ARIMAモデル     ARIMAモデル過去の Tokyo.R. で触れられた資料    http://lab.sakaue.info/wiki.cgi/JapanR2010?page=%CA%D9%B6%AF%B2%F1    %...
2.1. ARIMAモデル     ARIMAモデル時系列ARIMAモデルは、以下3要素からなる• AR(Auto Regression):自己回帰      → 過去の自分の値• I(Integrated):和分      → 時系列データの...
2.1. ARIMAモデル     ARIMAモデルAR(Auto Regression):自己回帰モデルとは、ある時点の値は、過去の自分自身により説明されると考えるモデル。以下2つの要素からなる:   • 自己回帰係数(影響倍率、定常ならば偏...
2.1. ARIMAモデル     ARIMAモデルMA(Moving Average):移動平均モデルとは、現在値と、過去の誤差項の線形結合により表される関数MA(q)モデル:                     1期前の        ...
2.1. ARIMAモデル     ARIMAモデルI(Integrated) :和分とは、階差数列に対応する概念。時系列モデルは、平均や自己共分散が一定(定常時系列)でないと扱えない。非定常→定常 の変換に使ったりする現系列階差数列     ...
2.1. ARIMAモデル     ARIMAモデルAR + I + MA → ARIMAモデル が完成  ARIMAモデル          AR       I        MA     誤差項        (自己回帰)   (和分) ...
◇ 全体構成 ◇1. Executive Summary2. 理論編    1. ARIMAモデル    2. GARCHモデル3. 実践編   1. TOPIXとは?   2. モデル作成   3. モデル検証2012/03/10      ...
2.2. GARCHモデル     GARCHモデルARIMAモデルが弱い例    • 金融市場:概して、荒れた翌日の値動きは活発    • 2ch:祭りが起きた後は、暫く高アクセスが続く?つまり、 • 突発的な変動と、その後の「荒れ」が続き、...
2.2. GARCHモデル     GARCHモデル【参考】周期変動ならば、Seasonal ARIMAが素直例:   は4半期データ(周期4)とする。ここで、4期前との差分                                   ...
2.2. GARCHモデル     GARCHモデルGARCH(p,q)モデルの式時系列データが、                 に従っているとするとき、                     分散の      2乗誤差の         ...
2.2. GARCHモデル     GARCHモデル【参考】2乗誤差のみ考える、ARCH(q)モデルもある。   要は、GARCHモデルで    としたもの。時系列データが、                         に従っているとすると...
2.2. GARCHモデル     GARCHモデル【参考】もっともな懸念で…データが常に正規分布ではない。最後の分散の誤差が        になる訳ないのでは?【答え】  • 正規分布以外では、GARCHアルゴリズムの最尤推    定量は間違...
2.2. GARCHモデル     GARCHモデルGARCHモデルへのケチ:   制約ナシだと     となるのは、何かと不自由改良例      EGARCH(p,q)モデル                               係数の...
2.2. GARCHモデル     GARCHモデルEGARCHモデルって【嬉しいこと】  • 左辺は対数なので、右辺が負でも対応可能  • 負になる変数でも、モデルに投入可能【嬉しくないこと】  • Rではどうやって扱うの?が不明…  • C...
2.2. GARCHモデル     GARCHモデルその他、GARCHの拡張例                                負ならば1となるダミー• GJR(p,q)モデル• Absolute Residual モデル• 他に...
◇ 全体構成 ◇1. Executive Summary2. 理論編   1. ARIMAモデル   2. GARCHモデル3. 実践編   1. TOPIXとは?    2. モデル作成    3. モデル検証2012/03/10      ...
3.0. 以下のアウトライン東証TOPIX(後述)の、対前日比リターンに 1. ARIMAモデル (季節調整なし) 2. ARMAモデル + GARCHモデルを当てはめ、比較してゆく。モデル構築期間:  2006/1/4~2012/1/31 (...
3.1. TOPIXとは?     TOPIXとは?東証1部全体の時価総額を指標化した値       野村證券・証券用語解説集より東京証券取引所が日々計算し発表している株価指数で、東証第1部の毎日の時価総額(全上場株をある日の終値で評価したもの...
3.1. TOPIXとは?     TOPIXとは?データの取得方法• 例によって、 RFinanceYJ library("RFinanceYJ") topix.close <-  as.ts( quoteStockTsData(998405...
3.1. TOPIXとは?     TOPIXとは?データの雰囲気(2006/1/4~2012/1/31)                 Paribasショック、                 SubPrimeで色々     Lehman破...
3.1. TOPIXとは?     TOPIXとは?TOPIXを(当日÷前日で)日次リターンに修正                                 ※対数リターンでないの?といじめないで…                  Pa...
◇ 全体構成 ◇1. Executive Summary2. 理論編   1. ARIMAモデル   2. GARCHモデル3. 実践編    1. TOPIXとは?    2. モデル作成    3. モデル検証2012/03/10     ...
3.2. モデル作成              詳細は【0/2】単位根検定              こちらを趣旨: このデータは、    Random Walk(乱数列)でないよね?   (Random Walk列でも、何かそれっぽいモデルが...
3.2. モデル作成確認してみる(PP.testを使用) > PP.test(topix.close) # TOPIX現系列                                                            ...
3.2. モデル作成【1/2】(季節調整なし)ARIMAモデル 参考:Tokyo.R#17 @teramonagi さん資料   (ただ、問題があるのだが…。次のスライドで) 最適次数は、ARIMA = (4,0,4)library("snow...
3.2. モデル作成【参考】前ページの問題:係数が収束しない場合ARIMA = (3,1,5) は、一部係数が無限大に飛ぶ                                             係数は∞           f...
3.2. モデル作成【2/2】の前に fGarch::garchFit で最適次数の探索法ループでコマンドを生成・実行し、listに投入、してみた。    (問題:(1) 係数発散時の問題 (2)エラー処理が未対応)最適次数は、GARCH (1...
3.2. モデル作成【参考】先のコードが汚い、Rらしくない、とは思った、が改良は実力不足につき断念。どうも、素直ではない書き方?をしないとダメっぽい。 library(fGarch) spec <- garchSpec(model = list...
3.2. モデル作成【2/2】ARMAモデル + GARCHモデルデータは         だと仮定して、  • (条件付き)平均値はARMAにて  • (条件付き)分散はGARCHにて推定ただ、これも係数発散問題が発生した…(最後は怪しい手作...
◇ 全体構成 ◇1. Executive Summary2. 理論編   1. ARIMAモデル   2. GARCHモデル3. 実践編    1. TOPIXとは?    2. モデル作成    3. モデル検証2012/03/10     ...
3.3. モデル検証最初にお詫び以降のモデル検証は、    • 前節でのエラーが取り切れていない    • だからか?GARCHモデルの検証結果が怪しい    • (あと時間不足で)モデルの予測まで未到達です。何卒、ご了承下さい…。2012/0...
3.3. モデル検証【1/2】ARIMAモデルの場合stats::tsdiag で残差を見てゆく。• 使用例:     tsdiag(opt.topix.arima, gof.lag=10 )   (※ gof.lagは、最下段:残差の自己相関...
3.3. モデル検証                                                                 正規化残差          -8                              ...
3.3. モデル検証【2/2】ARMA + GARCHモデルの場合見たい事:• 基準化された残差                 はゼロなの?• 基準化された残差                 は正規分布なの?    再掲:         ...
3.3. モデル検証【2/2】GARCHモデルの場合                                 収束がどうも怪しい                                左:残差の平均               ...
3.3. モデル検証ARIMAとGARCHモデルの比較やりたかったこと(その1)• GARCHモデルで、    は    の不偏推定量なのか?具体的には、                        誤差項の回帰式を考える。もし不偏推定量なら...
3.3. モデル検証ARIMAとGARCHモデルの比較やりたかったこと(その2)• GARCHモデルを導入すると、ARIMAモデルより「美味し  い」のか?の検証• 但し、ある指標で決まる話ではない。予測するものは、      ARIMAモデル...
まとめ• 時系列モデルとは、過去の値から将来の値を予測するモデルで、代表的なものにARIMAモデルがある。• ARIMAモデルは、残差の分散が均一なのを仮定。よって、突発的な変動があると弱い• GARCHモデルは、残差に時系列構造を導入すること...
おまけ最近買った本(参考文献4)を眺めていて観測時系列データ:は、必ずしも等時間間隔で取得できるとは限らない。そこで、連続時間の確率過程を↓と表記                       間隔が開くと、分散が大ここで、         は標...
おまけ(平均回帰する)具体的なモデルの一例:• Ornstein-Uhlenbeck過程(OU過程)    (        のときにErgotic(何かに確率収束する))• Vasicek過程   (         のときにErgotic)...
おまけ何でこんな話をしたのか?「月曜日にマーケットは動く(月曜日効果)」と聞くので。    • 理由の例:金曜→月曜だけ間隔が広く、情報が多く入るから試しに:各曜日のTOPIXのリターンの標準偏差を計算  library(RFinanceYJ)...
おまけの蛇足その結果:                      月曜日の値が             曜日    標準偏差 一番大きい             月曜日      18.45             火曜日      17.82...
参考文献1. 渡部敏明 『ボラティリティ変動モデル』   朝倉書店 2000年2. 岡田昌史(代表) 『Rパッケージガイドブック』   東京書籍 2011年   ⇒ 特に高柳氏のRmetricsのところを参照3. P. Teetor(著)大橋・...
Upcoming SlideShare
Loading in …5
×

RでGARCHモデル - TokyoR #21

16,609 views

Published on

  • Be the first to comment

RでGARCHモデル - TokyoR #21

  1. 1. RでGARCHモデル TokyoR #21 2012/03/10 @horihorio
  2. 2. 自己紹介• Twitter ID: @horihorio• お仕事: データマイニング・コンサルタント (重要なこと:会社は非金融業) ただ何故か、金融機関の与信リスク管理・ 分析を、4年少々やってたりする• R使用歴: 半年もない、とか。前回発表(Tokyo.R#18: 「Rで学 ぶ 現代ポートフォリオ理論入門」 )以降、程度2012/03/10 RでGARCHモデル 2
  3. 3. ◇ 全体構成 ◇1. Executive Summary2. 理論編 1. ARIMAモデル 2. GARCHモデル3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証2012/03/10 RでGARCHモデル 3
  4. 4. 1. Executive Summary (1/5)時系列モデルの目的:過去の値から将来を当てたい• ARIMAモデルの場合 AR I MA 誤差項 (自己回帰) (和分) (移動平均)ここで は「独立かつ同一の分布に従う(i.i.d)」とする※ (※ホントは平均ゼロ、分散有限も必要。正確な定義はP.15を参照)2012/03/10 RでGARCHモデル 4
  5. 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 Time2012/03/10 RでGARCHモデル 5
  6. 6. 1. Executive Summary (3/5)ただ、東証TOPIXにARIMAモデルをはめると誤差項って均一なの? (モデルの詳細は後述) ジャンプなら 0.10 この程度 0.00 Error 時系列構造? -0.10 0 500 1000 1500 Time2012/03/10 RでGARCHモデル 6
  7. 7. 1. Executive Summary (4/5)少々、分散に時系列構造を導入してみる時系列データが、 に従っているとするとき、GARCH(p,q)モデル を導入 分散の 2乗誤差の 時系列 時系列 分散 12012/03/10 RでGARCHモデル 7
  8. 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. 9. ◇ 全体構成 ◇1. Executive Summary2. 理論編 1. ARIMAモデル 2. GARCHモデル3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証2012/03/10 RでGARCHモデル 9
  10. 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. 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. 12. 2.1. ARIMAモデル ARIMAモデルAR(Auto Regression):自己回帰モデルとは、ある時点の値は、過去の自分自身により説明されると考えるモデル。以下2つの要素からなる: • 自己回帰係数(影響倍率、定常ならば偏相関係数)と、 • 次数(影響期間) AR(p)モデル: 1期前の 2期前の p期前の 自分 自分 自分 定数項 自己回帰 次数 誤差項 係数 (何期前まで (独立なWhite 考えるか) Noiseに従う)2012/03/10 RでGARCHモデル 12
  13. 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. 14. 2.1. ARIMAモデル ARIMAモデルI(Integrated) :和分とは、階差数列に対応する概念。時系列モデルは、平均や自己共分散が一定(定常時系列)でないと扱えない。非定常→定常 の変換に使ったりする現系列階差数列 に対し 数列では 時系列では の一般項を求め のARMAモデルを推定し2012/03/10 RでGARCHモデル 14
  15. 15. 2.1. ARIMAモデル ARIMAモデルAR + I + MA → ARIMAモデル が完成 ARIMAモデル AR I MA 誤差項 (自己回帰) (和分) (移動平均)ここで は、以下を満たす(分散均一性):2012/03/10 RでGARCHモデル 15
  16. 16. ◇ 全体構成 ◇1. Executive Summary2. 理論編 1. ARIMAモデル 2. GARCHモデル3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証2012/03/10 RでGARCHモデル 16
  17. 17. 2.2. GARCHモデル GARCHモデルARIMAモデルが弱い例 • 金融市場:概して、荒れた翌日の値動きは活発 • 2ch:祭りが起きた後は、暫く高アクセスが続く?つまり、 • 突発的な変動と、その後の「荒れ」が続き、 誤差項が「独立かつ同一の分布」でない と弱い対策 GARCHモデル • 分散にも時系列構造を導入 ※GARCH: Generalized AutoRegressive Conditional Heteroskedasticity2012/03/10 RでGARCHモデル 17
  18. 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. 19. 2.2. GARCHモデル GARCHモデルGARCH(p,q)モデルの式時系列データが、 に従っているとするとき、 分散の 2乗誤差の 時系列 時系列 分散 1ただし、 防止が目的 、 、 、 、 、2012/03/10 RでGARCHモデル 19
  20. 20. 2.2. GARCHモデル GARCHモデル【参考】2乗誤差のみ考える、ARCH(q)モデルもある。 要は、GARCHモデルで としたもの。時系列データが、 に従っているとするとき、 2乗誤差の 分散 1 時系列ただし、 、 、 、 、 ※ARCH: AutoRegressive Conditional Heteroskedasticity2012/03/10 RでGARCHモデル 20
  21. 21. 2.2. GARCHモデル GARCHモデル【参考】もっともな懸念で…データが常に正規分布ではない。最後の分散の誤差が になる訳ないのでは?【答え】 • 正規分布以外では、GARCHアルゴリズムの最尤推 定量は間違っている • ただ、標本数が大だと、最尤法の一致性ならOK • よって、実際の分布は正規分布でないが、正規分 布のGARCH推定量でいいや、と割り切る? • ただ、最尤推定量や、(尤度を用いる)AIC等の情報 量基準は、全て「擬似的な値」、なのは留意2012/03/10 RでGARCHモデル 21
  22. 22. 2.2. GARCHモデル GARCHモデルGARCHモデルへのケチ: 制約ナシだと となるのは、何かと不自由改良例 EGARCH(p,q)モデル 係数の制約:ナシ!2012/03/10 RでGARCHモデル 22
  23. 23. 2.2. GARCHモデル GARCHモデルEGARCHモデルって【嬉しいこと】 • 左辺は対数なので、右辺が負でも対応可能 • 負になる変数でも、モデルに投入可能【嬉しくないこと】 • Rではどうやって扱うの?が不明… • CRANで egarch::egarch は発見したが、何か大丈 夫?ってな香りがしたので自粛。Predictがダメ。 (だし、時間がなかった。) • (緩募)egarchは大丈夫か否か、他にRでEGARCHモ デルを適用出来る方法、等々2012/03/10 RでGARCHモデル 23
  24. 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. 25. ◇ 全体構成 ◇1. Executive Summary2. 理論編 1. ARIMAモデル 2. GARCHモデル3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証2012/03/10 RでGARCHモデル 25
  26. 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. 27. 3.1. TOPIXとは? TOPIXとは?東証1部全体の時価総額を指標化した値 野村證券・証券用語解説集より東京証券取引所が日々計算し発表している株価指数で、東証第1部の毎日の時価総額(全上場株をある日の終値で評価したものの合計額)を基準日の時価総額で割って算出される。1968(昭和43)年1月4日の時価総額を100として計算しており、日経平均株価とならんで、重要な指数の1つとなっている。 引用元:http://www.nomura.co.jp/terms/japan/to/topix.html2012/03/10 RでGARCHモデル 27
  28. 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)) - 12012/03/10 RでGARCHモデル 28
  29. 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 Time2012/03/10 RでGARCHモデル 29
  30. 30. 3.1. TOPIXとは? TOPIXとは?TOPIXを(当日÷前日で)日次リターンに修正 ※対数リターンでないの?といじめないで… Paribasショック、 SubPrimeで色々 0.10 東日本 大震災 TOPIX 0.00 Lehman破綻、 -0.10 MUFGのMorgan Stanley出資 等 0 500 1000 1500 Time2012/03/10 RでGARCHモデル 30
  31. 31. ◇ 全体構成 ◇1. Executive Summary2. 理論編 1. ARIMAモデル 2. GARCHモデル3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証2012/03/10 RでGARCHモデル 31
  32. 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. 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. 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. 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. 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. 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.html2012/03/10 RでGARCHモデル 37
  38. 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. 39. ◇ 全体構成 ◇1. Executive Summary2. 理論編 1. ARIMAモデル 2. GARCHモデル3. 実践編 1. TOPIXとは? 2. モデル作成 3. モデル検証2012/03/10 RでGARCHモデル 39
  40. 40. 3.3. モデル検証最初にお詫び以降のモデル検証は、 • 前節でのエラーが取り切れていない • だからか?GARCHモデルの検証結果が怪しい • (あと時間不足で)モデルの予測まで未到達です。何卒、ご了承下さい…。2012/03/10 RでGARCHモデル 40
  41. 41. 3.3. モデル検証【1/2】ARIMAモデルの場合stats::tsdiag で残差を見てゆく。• 使用例: tsdiag(opt.topix.arima, gof.lag=10 ) (※ gof.lagは、最下段:残差の自己相関 の検定時のラグ数)• 出力例は、次のページで。 結果:とりあえず、問題なさそうな。2012/03/10 RでGARCHモデル 41
  42. 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. 43. 3.3. モデル検証【2/2】ARMA + GARCHモデルの場合見たい事:• 基準化された残差 はゼロなの?• 基準化された残差 は正規分布なの? 再掲: を仮定して GARCHモデル 但し、 、2012/03/10 RでGARCHモデル 43
  44. 44. 3.3. モデル検証【2/2】GARCHモデルの場合 収束がどうも怪しい 左:残差の平均 右:平均値の標準誤差 正規分布テストもダメ 平均ゼロで無い!orz 尖度・歪度を見た (要Package: e1071)2012/03/10 RでGARCHモデル 44
  45. 45. 3.3. モデル検証ARIMAとGARCHモデルの比較やりたかったこと(その1)• GARCHモデルで、 は の不偏推定量なのか?具体的には、 誤差項の回帰式を考える。もし不偏推定量ならば、 係数が になるハズ。2012/03/10 RでGARCHモデル 45
  46. 46. 3.3. モデル検証ARIMAとGARCHモデルの比較やりたかったこと(その2)• GARCHモデルを導入すると、ARIMAモデルより「美味し い」のか?の検証• 但し、ある指標で決まる話ではない。予測するものは、 ARIMAモデル:出力は時系列の値 GARCHモデル:出力は分散の値 と異なるため。• 考えていた観点の例: • ARIMAでの予測標準誤差を、GARCHの値と比較 • (特に荒れたときの)過去時点での予測値を比較2012/03/10 RでGARCHモデル 46
  47. 47. まとめ• 時系列モデルとは、過去の値から将来の値を予測するモデルで、代表的なものにARIMAモデルがある。• ARIMAモデルは、残差の分散が均一なのを仮定。よって、突発的な変動があると弱い• GARCHモデルは、残差に時系列構造を導入することで、突発的な変動にも対応しようとするモデル今後の課題• モデルの係数が発散する場合の対応(参考:P35)• (↑ に関連し)ホントは、係数推定前にエラー検知したい2012/03/10 RでGARCHモデル 47
  48. 48. おまけ最近買った本(参考文献4)を眺めていて観測時系列データ:は、必ずしも等時間間隔で取得できるとは限らない。そこで、連続時間の確率過程を↓と表記 間隔が開くと、分散が大ここで、 は標準ウィナー過程であり、 は平均ゼロ、分散 に従う。2012/03/10 RでGARCHモデル 48
  49. 49. おまけ(平均回帰する)具体的なモデルの一例:• Ornstein-Uhlenbeck過程(OU過程) ( のときにErgotic(何かに確率収束する))• Vasicek過程 ( のときにErgotic)2012/03/10 RでGARCHモデル 49
  50. 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. 51. おまけの蛇足その結果: 月曜日の値が 曜日 標準偏差 一番大きい 月曜日 18.45 火曜日 17.82 水曜日 17.75 木曜日 17.90 金曜日 17.71• 真面目に考える方法例:以下回帰式を推定。各曜日のダミーを 立て、各係数の有意確率と符号で判断 (多重共線性防止のため、月曜日ダミーは入れていない)2012/03/10 RでGARCHモデル 51
  52. 52. 参考文献1. 渡部敏明 『ボラティリティ変動モデル』 朝倉書店 2000年2. 岡田昌史(代表) 『Rパッケージガイドブック』 東京書籍 2011年 ⇒ 特に高柳氏のRmetricsのところを参照3. P. Teetor(著)大橋・木下(訳)『Rクックブック』 オライリー・ジャパン 2011年4. 西山陽一 『ISMシリーズ:進化する統計数理1 マルチンゲー ル理論による統計解析』 近代科学社 2011年2012/03/10 RでGARCHモデル 52

×