わくわく計算ライフ

ドムプラをキメつづけるブログになりつつある。

その積立いくら貯まる?(漸化式編)

前回の記事では、資産から得られる毎月の利率と、毎月の積立金額からどのくらい資産が増えていくかの試算をしました。

calc-life.hatenablog.com

前回のサンプルでは、月初の資産と利率、積立額から累積的に計算しています。
正確といえば正確ですが、求めたい月数分計算の回数が必要で若干頭が悪い感じになっています。
今回はもう少しスマートな計算方法について説明します。

1.漸化式を使う

漸化式(ぜんかしき)と読みます。高校数学で出てくる奴ですね。
「こんなのなんの役に立つんだ…」って言われそうなやつです。
しかし、ありきたりな人生でも使うことが今回わかってしまうのです。

2.漸化式を立てる

前回の設定問題を漸化式で書いてみます。

 k ヶ月目における月初の資産合計 :  A(k) (Amount の気分)を求めたいとします。
月利 :  P_m (厳密には利息ではないのでProfitの気分)
毎月の積立金額 :  C_m (Contributionの気分)
と置くと k-1ヶ月目の月初資産総額  A(k-1) を用いて

 \displaystyle
A(k) = (1 + P_m) A(k-1) + S_m

となります。

3.特性方程式を解いて式変形する

特性方程式の詳細については省略します。
最近はWeb上のブログやYoutubeで分かりやすく数学を説明しているコンテンツが山ほどあるので、そういう方々にお任せしましょう。
ありがたやー。

先ほどの式の A(k), A(k-1)のところを \alphaと置いて特性方程式を立てます。

 \displaystyle
\alpha = (1 + P_m) \alpha + S_m

変形して \alphaを求めます。

 \displaystyle
\alpha = -\frac{S_m}{P_m}

この \alphaを最初の式の両辺から引いてやって漸化式を変形します。

 \displaystyle
A(k) + \frac{S_m}{P_m} = (1 + P_m) A(k-1) + S_m + \frac{S_m}{P_m}

右辺全体を (1+R_m)でくくって整理すると以下の様になります。

 \displaystyle
A(k) + \frac{S_m}{P_m} = (1 + P_m) \{ A(k-1) + \frac{S_m}{P_m} \}

 A(k) + \frac{S_m}{P_m}に関する等比数列の形になりました。
初項が A(1) + \frac{S_m}{P_m}、公比が (1 + P_m)等比数列なので、一般式は次式となります。

 \displaystyle
A(k) + \frac{S_m}{P_m} = ( A(1) + \frac{S_m}{P_m})(1 + P_m)^{k-1}

これで、100ヶ月後だろうが1000ヶ月後だろうがこの一般式に k (とその他パラメータ)を入れれば A(k)を一発計算というわけです。
毎月の1円未満の端数切捨て処理がこの一般化式には含まれていないので値が若干大きく出ますが、ほかの要素の影響の方が大きいので今回は無視します。  

4.実際に値を入れてみる

前回の設定を参照すると年間の利率 P_y = 0.04より、 P_m = \sqrt[12]{1+P_y} - 1 \fallingdotseq 0.0033

docs.google.com

積立額 S_m=10000、積み立て開始月の月初資産総額は A(1) = 0
これを3節で求めた一般式に代入すると。

 \displaystyle
A(k)  = ( 0 + \frac{10000}{0.0033})(1 + 0.0033)^{k-1} - \frac{10000}{0.0033}

各数値の小数点第4位を四捨五入すると次の形になります。

 \displaystyle
A(k)  = 3030303.03 \cdot 1.0033^{k-1} - 3030303.03

実際に48ヶ月目を見たいということで k=48を入れてみましょう。
すると計算結果は507,191円となりました(「漸化式」のシートに追加しています)。
もともとのスプレッドシートの48ヶ月目との比較は以下

f:id:savaki:20210303213156p:plain
漸化式の一般式からの計算結果

500,000円程度の金額に対して10円の差なので問題ないといえるでしょう。

5.目標金額への到達時期を知りたい

一度式を立ててしまえば、目線を変えれば様々な分析ができるのも一般式の良いところ。
以下に事例を紹介します。

目標金額 A_Tに何か月で到達するか計算してみましょう。
 A(k) \ge A_Tを考えると。

 \displaystyle
A(k)  = ( A(1) + \frac{S_m}{P_m})(1 + P_m)^{k-1} - \frac{S_m}{P_m} \ge A_T

等比数列の形にするため移項目しましょう。

 \displaystyle
( A(1) + \frac{S_m}{P_m})(1 + P_m)^{k-1}  \ge A_T + \frac{S_m}{P_m}
 \displaystyle
(1 + P_m)^{k-1}  \ge \frac{A_T + \frac{S_m}{P_m}}{A(1) + \frac{S_m}{P_m}}

式変形の割り算の分母は0になってはいけないのですが、今回の用途では割り算の分母は0にはならないのでOKです。 ここで、両辺の対数を取ります。なんと一般生活で対数が出てきました(対数については他のサイトでお勉強しましょう)。

 \displaystyle
log((1 + P_m)^{k-1})  \ge log(\frac{A_T + \frac{S_m}{P_m}}{A(1) + \frac{S_m}{P_m}})
 \displaystyle
(k-1) log(1 + P_m)  \ge log(\frac{A_T + \frac{S_m}{P_m}}{A(1) + \frac{S_m}{P_m}})
 \displaystyle
k   \ge \frac{log(A_T + \frac{S_m}{P_m}) - log(A(1) + \frac{S_m}{P_m})}{log(1 + P_m)} + 1

こちらも検算として A_T = 500000を入れると、 k \ge 47.38が求まり、端数を切り上げて48ヶ月目の値をシートで確認すると、507,181円となっておりちょうど500,000円を超えたことが確認されます。
老後2000万問題なんて言われる昨今なので A_T = 20000000を試しに入れてみると619ヶ月(50年強)以上と出てきて10代前半から積み立てないと65歳に間に合わない!でも月2万なら20歳から溜めれば間に合うな…なんてことが分かります。

同様にして「10年で500万円貯めたいけど、年率4%の運用だと毎月いくら積み立てれば良い?」とかもわかりますね。
求めたい変数以外に値を入れてみていろいろ試してみましょう。

6. まとめ

積立モデルの漸化式を解いて、ざっくり分析を行ってみました。
一度シンプルな式として解けてしまうと、その後の分析もシンプルになり広がりが出ますね。 高校数学レベルでも全然日常生活の役に立ちますね。