
今回は投資信託シミュレータ「たたかえ!ファンドゴーレム」の運用ロジックが収まったExcelファイルを公開すると共に、運用ロジックの概要を解説します。
シミュレータ内の運用関連値はどうやって算出しているのか把握したい方や、積立シミュレータに使えそうなExcelファイルないかなと思ってた方のお役に立てるでしょう。
これが「ゴーレム・コア」だ


シミュレータ上はもっともらしい数値が出ているけど、信頼に足る数値なのだろうか?
と考えるのは実に健全な疑問です。
運用ロジック実装に先駆けて、まず私は設計書として運用ロジックを取りまとめたExcelファイルを作成し「ゴーレム・コア」と命名しました。
テストや不具合発生時の検証をしやすいよう、ゴーレム・コアの通りの変数ならびに計算式で実装してあります。
色々なパターンでゴーレム・コア⇔実装の突き合わせをしてあるので、おそらく同じ挙動になっているでしょう。
先にファンドゴーレム運用ロジックの概要から解説しますので、使い方だけ知りたい場合は「ゴーレム・コアを使おう」に飛んでください。
ファンドゴーレムの運用ロジック概要
ゴーレム・コアの理解がはかどるよう、ロジックのキモを解説します。
ファンドゴーレム内部では「現金」と「口数」で保持
証券口座をイメージしてみましょう。
あなたの証券口座は買付余力としての「現金」と、どのファンドを何口持っているという「口数」だけで最低限表現できるはず。
ファンドゴーレムもそれに倣って「現金」と「口数」を中核としています。
「たたかう」を選んだ時、現金があればそれを全てその時の基準価額換算で口数に、現金がなければ手持ちの口数がそのまま引き継がれます。
「よける」を選んだ時はその逆で、口数があればそれを全てその時の基準価額換算で現金に、口数がなければ手持ちの現金がそのまま引き継がれます。
シミュレータ内では必ず現金か口数どちらかに変換された状態であり、現金も口数もあるといった状況は存在しません。
より簡単に言うと「たたかう」を選ぶと口数に、「よける」を選ぶと現金に、スイングしながらシミュレータは進行しています。

先ほど「その時の基準価額換算で」と申し上げたのが大事なところで、安値であれば買える口数は多く、高値であれば買える口数は少なくなります。
「よける」の現金化も同様なので、高値で売って下がり切ったら買い戻すムーブも理屈のうえでは可能です。
高値で「よける」を選んで、下がり切るまで「よける」を続け、下がり切ったら「たたかう」を選びましょう。
実際うまくできるか、一騎打ちモードでぜひシミュってみてください。
積立や取崩は内部的には12か月に分割のうえ計算している
積立や取崩のロジック概要を説明します。
年初基準価額:10000円
リターン:7%
積立:30000円/月
というケースを例としましょうか。
月々積み立てられた3万円はいつの基準価額で買付されるのか?
年初の基準価額なのか、7%上昇した年末の基準価額なのか、それによって評価額は変わってきますね。
答えはどちらでもなく、月ごとの基準価額で算出しています。
1月の基準価額は10000×1.07^(1/12)
2月の基準価額は10000×1.07^(2/12)
(略)
12月の基準価額は10000×1.07^(12/12)
このように各月の基準価額はリターンを割り戻す形で算出し、積立や取崩の口数換算に用いています。
なので7%プラスのリターンが出ても評価額は7%プラスとはなりませんが、それはバグではありません。
リアル運用と同様、基準価額が7%上がったってだけですから。
以上を踏まえ、ゴーレム・コアの1ターン(1年)は下図の構造となっています。

関連して「運用ダメージ」についても解説します。
被ダメ与ダメ時にゴーレムの頭上に出るダメージ値ですね。

運用ダメージは平たく言えばそのターン(年)における運用損益。
年末の評価額から去年の評価額と今年の積立/取崩額を引いた値です。
「よける」では現金化により価格変動を受け付けなくなるので運用ダメージはゼロです。
ゴーレム・コアを使おう
コマンド名などはファンドゴーレムに寄せてありますが、積立/取崩のシミュレータとして単体で使えます。
リターンを任意に入れて色んなケースを試しても良いですし、シミュレータのリターン値を入力して内部的にどうなっているか見てみるのも良いでしょう。
まずは青セル「入力フォーム値」を入力しましょう。

期待リターンが7%なら0.07、リスクが20%なら0.20のように小数で。
(書式設定でパーセントに変えてくれても構いませんが、その際は桁数を小数点2桁にした方が良いでしょう)
スタート元本は円単位。シミュレータ画面上では万円単位で表示していますが、内部ロジックでは円単位で保持しているためです。
積立取崩は単位(万円/%)とセットで入力してください。取崩はマイナス値なのと、月あたりの数値ですよ。
あとは緑セルに各ターンの選択コマンドとリターンを入力するのみ。

0ターンは運用開始時点なので、入力するのは1ターン目からです。
選択コマンドとリターン以外は数式が入っているので入力しないよう気を付けてください。
実際にシミュレータで出たリターンを入れてみたリザルト値と画面表示値の対応を図に示しておきます。

なお「期待B」とは期待ベースの事で、期待リターン通りに運用された世界線です。
一般的な右肩上がりシミュの結果とご理解ください。
20年以上運用させたい場合は行をコピーして末尾に貼り付けていってください。
途中に行挿入や行削除を行うと参照がズレる可能性が高いので増やすも消すも末尾から、と覚えておきましょう。
オマケとして「【おまけ】正規分布乱数取得」シートを用意しました。
入力フォーム値から正規分布に基づく乱数を生成してくれます。
乱数リターン値をゴーレム・コアに値貼り付けしてご利用いただけます。
(セル参照しちゃうと何か操作するたび再計算がかかるので推奨しない)
もしもVBAの使い手だったら
マクロ組めれば、できる事はもっと広がる可能性があります。
コマンド選択したら前述の乱数リターン値から値を持ってきてリターンのセルに設定などすればExcel上でも一騎打ちモードごっこができます。
さらにそれを何度もループすれば合戦モードごっこも可能ですが、集計は各自で頑張ってください。
さいごに
世の中シミュレータはたくさんありますが、他のシミュレータと同条件でも同じ結果になるかは分かりません。
他シミュレータがブラックボックスなのもありますし、たぶんもう少し色々簡略化して算出してるんじゃないかなと思います。
ゴーレム・コアとしてExcelファイルで公開しましたので、もし愚者小路流の処理の仕方がお気に召さないようだったら各自で修正してみてください。

以上、ゴーレム・コアの解説でした。

ありがとうございます。
次回もまた見てくださいね。
応援していただくとより多くの方にご覧いただけるし、投稿モチベーションも上がります。
↑いつもランキング向上にご協力ありがとうございます!
コメント