2008年12月 4日

どうやって投資信託の値動きのシミュレーションをしたのか

投資信託を長期保有したとき、その結果はどうなるのか? を知るために、Excelを使ってさんざんシミュレーションをしてきました。今回は僕がどうやってシミュレーションしたのかのお話。どちらかというと数学とExcelのお話ですが、投資に興味がある人も知っておくとちょっと得かも。

まずは正規分布と対数正規分布について。この2つは以前のエントリでも紹介しましたが、念のためもういちどその違いをみてみましょう。

Seikibunpu

どちらも、平均1、標準偏差0.3のグラフです。

左の正規分布は平均の1を中心に左右対称です。左右にすそ野がずっと伸びています。一方で右の対数正規分布は平均の1の左右が非対称ですね。そして、左のすそ野は0で終わっていて、右側の方向にはすそ野がずっと伸びています。

さて、これまでの僕のシミュレーションでは、最初のシミュレーションでは正規分布に従う乱数で、二度目のシミュレーションは対数正規分布に従う乱数で行いました。

正規分布に従う乱数というのは、乱数のばらつきが正規分布に従う、ということです。つまり、上のグラフの正規分布は平均が1ですから、正規分布に従う乱数を100回発生させてみると、全部の平均値はだいたい1になるはずです。そして、グラフをみるとX軸の1がいちばん高くて、両側が下がっているから、乱数をずらりと並べてみると1の発生頻度がいちばん高いはずで、0.8くらいの発生頻度はやや高くて、しかも左右対称だから1.2の発生頻度は0.8と同じはずです。そして1から離れて行くに従って発生頻度が低くなる。0.1くらいになるとほとんど発生しない。0とか-0.5とかはもうめったに発生しない。大きい方も同様で、1.5とかはときどき発生するけど、2とか3になるともうめったに発生しないということになります。

これは投資信託の値動きも同じですね。いつも小さな値動きはちょこちょこ発生しているけれど、マイナス30%とか大きな値動きはめったに発生しません。突然2倍になるなんてことは、可能性としてはあるけどほとんど発生しない。

株式や投資信託の値動きが正規分布に従う、というのはこういうことなんですね。だから正規分布に従う乱数で投資信託の値動きをシミュレーションできるのです。

ところが、株式や投資信託の値動きはおおむね正規分布に従うんだけど、実は対数正規分布のほうがより本物らしい値動きだといわれています。じゃあ最初から対数正規分布でみんな説明すればいいじゃん、と思うのですが、対数正規分布は正規分布より名前が複雑なのと同じように計算も複雑なので、普通は正規分布で考えておけば十分オッケー、という感じなわけです。

ではその対数正規分布に従う乱数はどんな感じでしょう? 上のグラフの例でいえば平均は1ですから、対数正規分布に従う乱数を100回発生させてみると、全部の平均値はだいたい1になるはずです。そして、グラフをみるとやはりX軸の1がいちばん高くて、両側が下がっているから、乱数をずらりと並べてみると1の発生頻度がいちばん高いはずです。そして1以外の発生頻度をみてみると、1より小さい数はグラフが急速に傾いているので、0.7くらいはまだときどき発生するとしても、0.4とか0.3になるともうなかなか発生しなくなる。そして0以下の数は絶対に発生しなくなります。一方で1より大きい数は、グラフの傾きがなだらかなところから分かるように、1.5くらいでもまだそこそこ発生する。1.7くらいでもそこそこ、1.9だとめったに発生しなくなるくらい。で、右側にはなだらかにすそ野が広がっていくので、可能性としては3とか4とかだって発生する可能性は0ではない、となります。

これが対数正規分布に従う乱数です。

で、話はExcelへ移ります。

Excelでは、ずばり正規分布の乱数を発生させる機能はないので、いくつかの関数を組み合わせて作らなければなりません。

まず正規分布に従う乱数。正規乱数の生成は次の式でできます。

=NORMINV(RAND(),平均,標準偏差)

これだけ。簡単ですよね。だから僕も正規乱数を使ったシミュレーションはすぐに作ることができました。

しかし正規乱数を使ったシミュレーションだと、困ったことがときどき起きます。僕もそれに遭遇したことは書きましたが、困ったことというのは、シミュレーションの中で価格がマイナスになってしまうことがある、ということです。

正規乱数はわずかながらですが、プラスからマイナスまであらゆる数字が発生するわずかな可能性があるため、ときどきマイナスの数字が発生することがあるわけです。

で、マイナスの値の発生を避けるためと、より正確なシミュレーションのために、対数正規分布に従う乱数、対数正規乱数を生成したくなります。

で、正規乱数の生成に使った正規分布のための関数「NORMINV」に相当する対数正規分布の関数「LOGINV」があるので、それを使えばいいわけです。

=LOGINV(RAND(),平均,標準偏差)

ところが、これだとうまくいかないんですね。この関数に渡す平均と標準偏差を、対数正規分布に対応したものに変換しなければならないのでした。僕にとって、これを調べるのが一番むずかしいところでした。

生成したい乱数の平均をm、標準偏差をσとして、LOGINVに渡す平均のMと標準偏差のSを求めるには以下の式を当てはめます。

M=LN(m)-LN((σ/m)^2+1)/2
S=SQRT(LN((σ/m)^2+1))

これで生成した乱数は、対数正規分布に従って、かつ平均がM、標準偏差がSになります。

なぜこうなるかは、「エクセルを用いた対数正規分布の計算」などを見ると参考になると思います。僕もここを見て試行錯誤した結果なんとか答えにたどり着いたのです。

ちなみに、生成した乱数たちがちゃんと設定した平均と標準偏差になっているかは、乱数たちに対してAVERAGE関数とSTDEV関数を当てはめてみれば簡単に検算できます。これ豆知識。

この式を解説したワークシート「norminv_loginv.xls」をダウンロード可能にしておきますので、よろしければ参考にしてみてください。上記のグラフの描き方もついでにワークシート内に含めてあります。それから、発生した乱数の度数分布表を作りたい場合は、最初のシミュレーションのワークシートなどを参考にしてみてください。

このテーマの記事一覧
第1話:緊急調査:株式投資に複利効果はあるのか?
第2話:再考:株式投資に複利効果はあるのか?
第3話:改題:投資信託の長期投資は複利なのか?
第4話:追求:投資信託の長期投資は複利なのか?
第5話:さらに追求:投資信託の長期投資は複利なのか?
第6話:中間報告:投資信託の長期投資は複利なのか?
第7話:どうやって投資信託の値動きのシミュレーションをしたのか
第8話:長期保有の値動きシミュレーションを公式化してみよう
第9話:投資信託を長期保有したら複利になるのか、の参考文献
第10話:投資信託を長期保有したらどうなるか、20年分のシミュレーション
第11話:その投資信託のN年後のリスクを計算する方法(概算で)
第12話:続:その投資信託のN年後のリスクを計算する方法(概算で)
第13話:投資信託のリターンは対数正規分布に従うらしい、けど厳密には違うらしい
第14話:リスクがあるとき、複利はひとり勝ちを生む
第15話:TOPIXを20年保有したシミュレーション。元本割れの確率は?
第16話:高いリスクこそが破壊的な結果をもたらすのではないか
第17話:まとめ:長期保有のリスクとリターンについて分かったこと(前編)
第18話:まとめ:もしくは再検討の予告

[関連カテゴリ]
1.よもやま投資信託

[広告]

[ブックマーク]  Yahoo!ブックマークに登録

≫次 : 告知:インデックス投資イベントに内藤忍さん、カン・チュンドさん出演決定! 僕も出ます!
≪前 : 中間報告:投資信託の長期投資は複利なのか?



[トラックバックURL]
http://app.cocolog-nifty.com/t/trackback/36569/43314584


[コメントを書く]

名前:
Mail:  (必須です。ダミーでも可)
URL:  (必須ではありません)