Rのrugarchで株価のボラティリティを予測する
クオンツ達の間では、株価の予測は難しいが株価のボラティリティ(値動きの激しさ)を予測することは比較的簡単だとよく言われている。
この記事では実際にRのrugarchパッケージを使って株価のボラティリティ予測を試してみる。
ボラティリティ予測に使うのはexponential GARCH(以下eGARCH)というモデル。以下13.2 Extensions of the GARCH Modelより引用(意訳してます)。
を平均0分散1の確率変数のiid系列として、一般的なexponential GARCHモデルは以下の数式で表される。*1
なぜこのeGARCHを使うのかというと、通常のGARCHでは株価のボラティリティをモデル化するのに問題があるため。EGARCHモデルについてより引用する。
株式市場では、株価が上がった日の翌日よりも下がった日の翌日の方がボラティリティがより上昇する傾向があることが古くから知られており,GARCHモデルではこうしたボラティリティ変動の非対称性 を捉えられない。
この点を改良したのがeGARCHモデルというわけである。
まずは、本当にGARCHよりeGARCHの方が良いのかどうか確かめるため、S&P500の日足データでAICを比較してみることにする。rugarchではugarchfit関数でパラメータの当てはめが、infocriteria関数で各種情報量基準の算出ができる。
実行結果を見ると、確かにeGARCHの方がAICが低くなっていることが確認できる。
それでは、このeGARCHモデルを使って実際にボラティリティの予測をやってみよう。ugarchroll関数を使うと一日先の予測を逐次的に行うことができる。
まず予測されたボラティリティをプロットしてみる。
そしてS&P500のリターン。
S&P500のリターンの幅が大きくなっている時期にボラティリティが大きくなると予測されているので、上手く予測できているようだ。
ボラティリティの予測でアルファが生み出せるか?
そもそもなぜボラティリティの予測をやろうと思ったかというと、Tony Cooperという人の「ボラティリティの予測でアルファ(市場平均を超えるリターン)を生み出せるぜ!」という論文を読んだのがきっかけ。
Alpha Generation and Risk Smoothing Using Managed Volatility by Tony Cooper :: SSRN
この論文で提案されているストラテジーをざっくり説明すると、株では信用取引でレバレッジが掛けられるわけなのだけれど、最適なレバレッジ比率kがc / σ^2(cは適当な定数)で求められるので、eGARCHでσ^2を予測しながらkを変えていく(レバレッジ比率がkになるように株を売買する)と市場平均を上回るリターンが得られる、というもの。しかもレバレッジを使ったのにリスクは上がらないらしい。Tony CooperはこのストラテジーをOptimal Volatility Strategy(以下OVS)と名付けている。ちなみにOVS以外にも複数のストラテジーが提案されているので興味がある方は論文を参照されたし。
しかしボラティリティの予測だけでアルファが生み出せるというのは不思議な感じがする。この論文によると、どうやらボラティリティとリターンに相関があるからアルファが生み出せるということらしい。
それでは、eGARCHで予測されたボラティリティを使って、OVSで実際にbuy&hold以上のリターンが出せるのか実験してみよう。
結果を見ると、S&P500の最後の500日間のデータに限っては、buy&holdよりもOVSの方が高いリターンとなることが確認できる。(ただし手数料は考慮に入れていない)
とはいえこの結果は偶々運が良かっただけの可能性もあるので、本当にOVSが有効なストラテジーかどうか確かめるにはもっと多くのデータセットに対して適用し、検証する必要があるだろう。
なお論文中にも書いてあることなのだが、このストラテジーは、やることは基本的にレバレッジの調整だけなので他のストラテジーと組み合わせやすいという利点がある。例えばどのタイミングで株を買うかはモメンタム戦略で決め、具体的なレバレッジ比率はOVSで決める、といった戦略が可能だ。
*1:訳注:ただしこの数式は分散の自己回帰の項を入れていないのであまりeGARCHの一般的な書き方ではない。