2008年09月15日
回答編その2! 積立+複利の計算の正しいやり方を考えてみました
毎月1万円ずつ積立するとして、期待リターンを年率6%だとすると、1年後にいくらになるのか? ついに秘密の公式が明かされます!
前回は、期待リターンが年率6%のとき、毎月の期待リターンは何%か? について考えてみました。問題を単純にするために前回は毎月の積立額を0円にして計算した結果、
毎月の利回り = 年率 ^ (1/12)
ということが分かりました。今回はいよいよ、毎月の積立額を含めた計算について考えてみます。
さて。今回も、シンプルな前提条件から考えていきましょう。
o 元本100万円
o 毎月0万円ずつ積み立てる
o 期待リターンは年率6%である
年率の期待リターンから毎月の利回りを前回求めましたから、1月目の結果は以下のような単純な式で表せますよね。
100万円×毎月の利回り = 1月目
100万円が元本ですから、こういうことです。
元本 × 毎月の利回り = 1月目
では、毎月の積み立て額を1万円にすると、どうなるでしょう。次のようになりますよね。
(元本 + 1万円) × 毎月の利回り = 1月目
要するに、こういうことです。
(元本 + 積立額) × 毎月の利回り = 1月目
式が長くなるので、それぞれの漢字の1文字目だけに省略します。
(元 + 積 ) × 利 = 1月目
ここから、2月目、3月目を考えていきます。2月目はこうなりますね。
(1月目 + 積) × 利 = 2月目
この式の1月目を展開すると、こう。
(((元 + 積 ) × 利) + 積 ) × 利 = 2月目
展開するとこうなります。
(元利 + 積利 + 積) × 利 = 2月目
さらに展開!
元(利^2) + 積(利^2) + 積利 = 2月目
同じようにして、3月目はこうなります!
元(利^3) + 積(利^3) + 積(利^2) + 積利 = 3月目
ってことは、12月目はこうですね!
元(利^12) + 積(利^12) + 積(利^11) + 積(利^10) + 積(利^9) …
… + 積(利^3) + 積(利^2) + 積利 = 12月目
規則性がありますよね。つまり、
元本×(毎月の利回り^月数)
+(積立額(毎月の利回り^月数)
+(積立額(毎月の利回り^(月数 - 1))
+(積立額(毎月の利回り^(月数 - 2))
:
+積立額(毎月の利回り^(1))
ジャーン! つまりこれが、積立+複利の結果、1年後にいくらになるかを示した僕なりの公式なのです!
この式はたぶんΣとかで表せるのですが、HTMLで書くのが大変なのでここでご勘弁を。
前回、毎月の利回りは以下の式で表すことにしましたので、この式を当てはめて計算することにしましょう。
毎月の利回り = 年率 ^ (1/12)
下記の条件で計算してみましょう。
o 元本0万円
o 毎月の積み立て額が1万円
o 期待リターン年率6%
計算すると、12万3865円になりました。
月数によって式が伸び縮みするのはプログラミングとしてはやりにくいのですが、方法はありますので、この式を元に、複利計算とグラフ化のプログラムを作っていこうと思っています。
もし、もっと式を単純化できる! という方がいましたら、ぜひ教えてください。
[関連エントリ]
・ 回答編その1! 積立+複利の計算の正しいやり方を考えてみました
・ 積立+複利の計算の正しいやり方をだれか教えてください!
[関連カテゴリ]
・ 1.よもやま投資信託
[広告]
≫次 : リーマンブラザーズって名前は知ってたけどさ
≪前 : 回答編その1! 積立+複利の計算の正しいやり方を考えてみました
完成楽しみに待っています!
励ましの言葉、ありがとうございます!
ここまでの計算でもずいぶん頭脳を使ってしまい、ちょっと呆けているところでした。これからプログラミング、がんばります。
やっとできました。(Gauche)
あまり短くできませんでした。
(define (interest base month rate n)
(let1 x (expt rate 1/12)
(fold
(lambda (a m) (* x (+ a m)))
base
(make-list n month))))
実行例:
gosh> (interest 0 10000 1.06 12)
123865.2834203717
えんどうさん、こんにちは。
こ、これはマニアックな言語ですね。うーん、なるほど、ちょっと勉強してみます。
ところで。これに日本特有の「ボーナス増額」なんてのを付け加えようとすると、また複雑になっちゃうんですよねー。まいったなー。
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox
Windows用のGaucheは上記からダウンロードできます。
ボーナス時の加算ですが、
(make-list n month) の部分はこんなリストを作っています。
実行例: (12ヶ月分、月1万円)
gosh> (make-list 12 10000)
(10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000)
このリストでボーナス月の要素を増やしてやれば良さそうです。
http://karetta.jp/article/blog/MoneyHacking/230393
ちょっと長めの解説を書いてみました。
他の言語でも同じ考えで良いはずですが、
foldのない言語では面倒かも知れません。
とおりすがりの工学者ですが,気になったのでコメント.
1)まず,
>毎月の利回り = 年率 ^ (1/12)
ではなく,
>毎月の利回り = (年率+1) ^ (1/12) -1
でしょう.
2)そして,積立額が一定のときのNヶ月後の総資産を求めるのが目的なら,これは初期項のある有限等比級数の和ですから,いちいち和として求めなくても次のように閉じた形で書けます:
つまり,
S(N)=Nヶ月後の総資産
A=毎月の積立額
γ=毎月の利回り
(年率6%なら γ=(1.06)^(1/12)-1 )
とすると(私の計算が間違ってなければ),
S(N)
=S(0)×(1+γ)^N
+A×{(1+γ)^Nー1}×(1+γ)/γ
のはずです(細部は各月のどこで利がつくとするかによりますが).
蛇足ですが,これは,もとの和の形を使って,
(1+γ)×S(N)ーS(N)
を計算することで導けます(等比級数の和の基本).
3)ちなみに,毎月の積立額や利回りが変動する場合には,S(N)からS(N+1)を出す漸化式を立てて,月ごとに計算すればいいでしょう.
追加です:ボーナス増額や臨時増額については,もともと重ね合わせのできる正確の問題ですから,単純に毎月分とは別に半年利率を使って計算して足せばいいだけです.
えんどうさん、解説ありがとうございます。
bonfireさん、キター!これこれ、この等比級数の和の式に変形したかったんですよ。これでループ回さなくても計算だけで答えがだせますからね。等比級数の和、たしか学校でやったのにすっかり忘れています。
いただいたコメント、まだ全部理解できているわけではないですが、時間のあるときにじっくり勉強させていただきます。ありがとうございました。
素朴なギモンとして、積立て投資って毎月配当があるのが普通でしょうか(1ヶ月複利)。
配当は年1回(元本に組み込まれるのが年1回)の場合が少なくないと思うのですが。
ひらのさん、こんにちは。投資信託は最近は毎月分配型の人気がありますが、全体では1年に1度のほうが多いですね。個人的にも年に1度の分配がおすすめです。
で、ご質問の複利の計算では、分配(配当)が毎月であるか毎年であるかは関係ありませんね。投資したお金が1%値上がりしたら、それが分配されようがされまいが1%値上がりしているわけで。
[トラックバックURL]
[コメントを書く]