はじめに
ボラティリティ変動モデルはいろいろあるのですが、まずは一番基礎となるARCHモデルの導入を行います。ただ、モデルの推定は次回以降の内容になると思います。もうしばらくお待ちください。
そして今回はコードをまとめるまで体力が続かなかったのでGistにそのままnotebookを置きました。全然整理されていませんが、本記事のコードはすべてそこに置いてあるのでよろしければ、、、
参考図書について
参考図書のメインは例のごとく沖本本です。ただ、もう一冊ボラティリティに関して参考図書として「ボラティリティ変動モデル」[渡部2000]も使いました。
難易度としては沖本本と同じくらいでしょうか。ただ、渡部本はボラティリティ変動モデルの推定について沖本本よりも詳しく書かれています。モデルの推定をスクラッチで書きたいよという方は渡部本がおすすめです。またTOPIXを例に具体的なボラティリティ予測の流れが書いてあるのも素敵でした。
ただ導入は沖本本のほうがわかりやすいと思いました。加えて沖本本は事前知識として必要なARモデルにも一つの章が用意されています。渡部本はそこらへんはさらっとしか書かれていません。なので時系列あんまりやってきたことないよって人は沖本本がいいかもしれません。
さて、本の感想はここら辺にして本編に行きたいと思います。
ファイナンス分野では標準偏差のことをボラティリティと言ったりします。標準偏差でいいじゃんって話は私は知らないのでほかの方に聞いてください。ただ沖本本には
ファイナンスの世界では標準偏差が果たす役割が大きいため, 標準偏差に特別な名前が与えられたのである.
だそうです。
ボラティリティが予測できるのはうれしいこと?
さてボラティリティが予測できて何がうれしいんだよと思う方がいらっしゃると思います。
例えば、金融に明るい方ならオプションプレミアムの価格決定がボラティリティによって決まっていると言われれば、うれしくなるかもしれないです。
テクニカル分析が得意なトレーダーならばボリンジャーバンドの線を一期先、二期先に伸ばせると言われれば、なるほどそれは面白そうとなりそうです。
例に挙げたようにファイナンスの世界ではボラティリティが予測できるというのは結構うれしいことなのです。
また、株価などの金融商品の値動きにはボラティリティクラスタリングという特徴があります。引用は以下の通りですが、簡単に言うとボラティリティに自己相関があるということです。一般に回帰モデルのノイズは無相関であるという仮定を置きますが、この仮定はボラティリティに相関があるということに反します。つまり単純にARモデルとかで株価を予測してもボラティリティまできちんとモデル化できていないですよというお話です。
多くの金融商品では, 収益率が大きく変動する時期が集中して現れる傾向があり, この現象は ボラティリティクラスタリング (Volatility clustering) といわれる. 沖本本
結論!ボラティリティをモデル化するの大事!
ボラティリティのモデル化
では早速ボラティリティをモデル化してみましょう。
まず私たちの出発点は、株価を予測して一攫千金を狙うということから始めます。当面の目標としては収益率を予測することを目標とします。収益率は当期の価格から前期の価格を引いてそれを前期価格で割ることで出します。ただ、一般にファイナンスの世界では価格の変化率が大きくないとき、対数差分をとってそれを収益率の近似とします。なぜ対数差分を取ることで収益率が近似できるかはテイラー展開を使ってごにょごにょするとわかります。詳しくは補論の対数差分を見てください。
余談ですが、株価の予測に関して、株価そのものを予測することはそれほど重要ではないのではと思っております。要は一期前よりも価格が上昇していればうれしい(ポジションがショートなら下がっていればうれしい)ので、トレンドの傾向がわかるということが重要ではないのかと、、、
その意味で移動平均線が生き残っているのはトレンドフォロー型だからですかね
使用するデータ
今回使用するデータはNEXT FUNDS TOPIX連動型上場投信です。期間は2019-01-04~2019-12-30です。
さて、まずはデータをプロットしみましょう。
原系列の対数を取った後に差分をとります。
私たちの目標は収益率を予測すること。つまりこのギザギザなグラフを予測したいわけです。使用するデータはこんな感じです。では収益率を予測していきましょう!
おまけ
せっかくなので分数次差分も見てみましょう。固定幅ウィンドウ法を用いてADF検定で帰無仮説を棄却できるような最小の$d$を探します。今回$d=0.33$あたりが最小となることがわかりました。
分数次差分について詳しく知りたい方はこちらをどうぞ。
株価収益率のモデル化
収益率のモデル化にはAR(1)モデルを使用します。次数の選択はモデルが最も単純なモデルになるようにしました。本当はAICを使ったりARならば自己相関のコレログラムをみて次数を決定したりするのですが、これはまた別の機会に。
求めたモデルの条件付き期待値がこちらです。
コラム
Pythonのstatsmodelsには「predict」と「forecast」という2種類の関数があります。違いはpredictは条件付き期待値を計算しますが、forecastは未来の予測を計算する点です。
いいかんじではないでしょうか。縦軸のスケールが気になりますがいったんおいておきましょう。重要なのはここからです。この条件付き期待値と対数差分データの残差を取ってみます。そしてそれらの相関係数をプロットしてみます。
残差には相関がみられなそうですね。これは回帰モデルの仮定とも整合性が取れています。ただ、これだけでこのモデルがよいモデルであると考えるのは早計です。残差を二乗し、相関を見てみましょう。
相関がありますね。これはこのモデルが分散の自己相関を表現できていないと解釈することができます。つまりどうにかして分散の自己相関をモデルで表現できれば、もっと素敵な収益率のモデルを作ることができるというわけです。
ARCH ( autoregressive conditional heteroskedasticity model )
長くなりましたがようやくボラティリティのモデル化に入ります。沖本本では次のように表しています。
$y_{t} = \mu_{t} + u_{t} = \mu_{t} + \sqrt{h_{t}} v_{t} \quad v_{t} ~ iid N(0, 1)$
です。ここで、$\mu_t$ は条件付き期待値、つまり先ほど計算したARモデルやARMAモデルを指します。
この時、 $h_t$ と $v_t$ が条件付き独立であると仮定すると
\begin{align}
E[(y_r - \mu_t)^2 | y_{t-1}, y_{t-2}, ...] &= E[u_t^2 | y_{t-1}, y_{t-2}, ...] \\
&= E[h_t | y_{t-1}, y_{t-2}, ...] × E[v_t^2 | y_{t-1}, y_{t-2}, ...] \\
&= E[h_t | y_{t-1}, y_{t-2}, ...]
\end{align}
つまり $h_t$ の条件付き期待値は条件付き分散(ボラティリティ)となります。 $h_t$ の表し方はいろいろあって今回は見出しにもある通りARCHモデルを紹介します。
沖本本によるとARCH(m)は次のように表されます。
$h_t = \omega + \alpha_1 u_{t-1}^2 + \alpha_2 u_{t-2}^2 + ... + \alpha_m u_{t-m}^2$
よく見るとこれはARモデルに似てますね。ノイズを $w_t = u_t^2 - h_t$ とすると $h_t$ は次のように書き換えられます。
$u_t^2 = \omega + \alpha_1 u_{t-1}^2 + \alpha_2 u_{t-2}^2 + ... + \alpha_m u_{t-m}^2 + w_t$
ARCHモデルは残差にARモデルを適用すると求めることができるということですね。ということで実際にやりました。
対数差分データも一緒に出力してみました。こうしてみると対数差分データの値動きが激しいところ、わかりやすいのはx軸が50付近ですね。そのあたりはボラティリティも大きく変化していることがわかります。
あとはボラティリティのモデルを収益率のモデル化に組み込めば良さそうですね。
以上でボラティリティのモデル化について終わります。詳しくは参考図書をご購入いただいて読んでいただくのが一番良いかと思います。
推定について
少しだけ推定について少し触れておきます。沖本本と渡部本を両方読んで私が疑問に思ったことがあったので共有したいと思います。
ARCH型モデルは基本的に最尤推定を使い尤度関数を求めます。尤度関数は解析的には解けない(あきらかに式が足りない)ので勾配法などの反復法を用います。そうなると疑問なのはARCHモデルに関してはARモデルで推定すればいいのになぜ、勾配法なんか使うのかという話です。
私見ですが、拡張性の違いということだと思います。GARCHモデルというARCHモデルをより一般化したモデルがあります。このモデルは見た目はARMAモデルに見えるのですが、単純にARMAモデルに置き換えて推定をしてはいけません。式変形をして初めてARMAモデルと等価になるのです。また、GARCHモデル以外にもたくさんのボラティリティのモデルはたくさんあります。そのうちたまたま、ARCHモデルが残差をARモデルで推定できたというだけの話です。
渡部本ではARCHモデルは上記のようにARモデルを使って推定を行いますが、沖本本にはそのようなことは書いてありません(ARモデルとしてみれるとは書いてある)。つまりどちらが正しいというより、数値的に解くものが基本でたまたまARで推定できるものもあるよという話です。
ここら辺はこの次の記事で自分なりにまとめられたらと思っています。
気づいたこと・疑問
対数差分データをARで学習させると条件付き期待値の波形が反転する現象が起きました(ただの差分でも同様)。二乗誤差を小さくするようにパラメータを求めているので、反転しているほうが二乗誤差が小さいのはわかるのですが、なぜそうなってしまうのかよくわかりませんでした。わかる方がいれば教えて下さい。Gistに例を挙げてみました。gist
補論
対数差分
上記は私の大学の時のゼミで使った資料です。(懐かしい)