固定収入と複利運用はどちらが得か、Pythonでグラフ化してみた

職場内で投資の話になったことがありました
ちょうどその頃、会社内のLTで話すために、僕はPythonでグラフを描いていました

何となく気が向いたので、投資をした時の資産額の推移を遊びでグラフ化してみました
固定収入と複利運用はどちらが得なのかをPythonで計算して、グラフ化はmatplotlibというライブラリを使いました


# 資産額を数式で表す

1. 初期費用が50万円で毎月の固定収入が1万円
2. 50万円を年利回り5%で運用

1と2でどちらが得かを計算します

※固定収入は一定とします
※複利運用のときの元の資産自体の価値は一定で、資産額は利息だけで増えるとします
※複利運用は利息を全額再投資するとします
※税金やその他諸々の経費は考えないとします

yを資産額、xを年数とします

1は$y=12x-50$で表せます
2は$y=50×(1.05)^x$

固定収入は直線、複利運用は指数関数のグラフになります

# 動作環境
Mac OS Mojave 10.14.5
Python 2.7.10

# 準備

デフォルトだとmatplotlibではグラフに日本語を表示できないので、準備しておきます

[IPAフォントのダウンロード](https://ipafont.ipa.go.jp/old/ipafont/download.html)
このサイトから.ttfファイルをダウンロードして、~/Library/Fonts/に移動させます

```python
import matplotlib.font_manager
font = {'family': 'IPAGothic'}
matplotlib.rc('font', **font)
```

これをコードに入れて、

```
rm ~/.matplotlib/fontList*.cache
```

これでcacheを消しておきます

# コード

```python:composed_interest.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# matplotlib.pyplotを、ファイルの中でpltと書いて使えるようにする
import matplotlib.pyplot as plt

# グラフで日本語を使えるようにする
import matplotlib.font_manager

font = {'family': 'IPAGothic'}
matplotlib.rc('font', **font)

# 年数、固定収入の資産額、複利運用の資産額を入れる空配列を準備
year = []
regular_income = []
composed_interest = []

print "年数[年] |", "固定収入の資産額[万円] |", "複利運用の資産額[万円]"

for n in range(60):
  # 資産額の単位は万円
  print n, "|", (12 * n - 50), "|", (50 * (1.05) ** n)

  # 年数、固定収入の資産額、複利運用の資産額の配列に追加
  year.append(n)
  regular_income.append(12 * n - 50)
  composed_interest.append(50 * (1.05) ** n)

  if (12 * (n - 1) - 50) < (50 * (1.05) ** (n - 1)) and (12 * n - 50) > (50 * (1.05) ** n):
    print "↑固定収入が複利運用を超えた！"

  if (12 * (n - 1) - 50) > (50 * (1.05) ** (n - 1)) and (12 * n - 50) < (50 * (1.05) ** n):
    print "↑複利運用が固定収入を超えた！"

# x軸が年数、y軸が固定収入の資産額のグラフを出力
plt.plot(year, regular_income)

# x軸が年数、y軸が複利運用の資産額のグラフを出力
plt.plot(year, composed_interest)

# グラフの凡例を表示
plt.legend([u'固定収入',u'複利運用'], loc='best')

# グラフタイトルとx,y軸の軸ラベルを表示
plt.title(u"50万円を払って毎月1万円の収益があるのと、\n 50万円を年利5%で運用するのはどちらが良いか")
plt.xlabel(u"年")
plt.ylabel(u"資産 [万円]")

# ファイルに保存して、グラフを出力
plt.savefig('composed_interest.png')
plt.show()


```

上のファイルを作って、

```
python composed_interest.py
```

このコマンドをターミナルで実行すると、composed_interest.pyが実行されます

下は固定収入が複利運用を超える年数と、複利運用が固定収入を超える年数を見つける部分です

```python
if (12 * (n - 1) - 50) < (50 * (1.05) ** (n - 1)) and (12 * n - 50) > (50 * (1.05) ** n):
  print "↑固定収入が複利運用を超えた！"

if (12 * (n - 1) - 50) > (50 * (1.05) ** (n - 1)) and (12 * n - 50) < (50 * (1.05) ** n):
  print "↑複利運用が固定収入を超えた！"
```

ここはもっといい書き方があれば、教えてください！

# 出力結果

```
年数[年] | 固定収入の資産額[万円] | 複利運用の資産額[万円]
0 | -50 | 50.0
1 | -38 | 52.5
2 | -26 | 55.125
3 | -14 | 57.88125
4 | -2 | 60.7753125
5 | 10 | 63.814078125
6 | 22 | 67.0047820313
7 | 34 | 70.3550211328
8 | 46 | 73.8727721895
9 | 58 | 77.5664107989
10 | 70 | 81.4447313389
11 | 82 | 85.5169679058
12 | 94 | 89.7928163011
↑固定収入が複利運用を超えた！
13 | 106 | 94.2824571162
14 | 118 | 98.996579972
15 | 130 | 103.946408971
16 | 142 | 109.143729419
17 | 154 | 114.60091589
18 | 166 | 120.330961685
19 | 178 | 126.347509769
20 | 190 | 132.664885257
21 | 202 | 139.29812952
22 | 214 | 146.263035996
23 | 226 | 153.576187796
24 | 238 | 161.254997186
25 | 250 | 169.317747045
26 | 262 | 177.783634397
27 | 274 | 186.672816117
28 | 286 | 196.006456923
29 | 298 | 205.806779769
30 | 310 | 216.097118758
31 | 322 | 226.901974695
32 | 334 | 238.24707343
33 | 346 | 250.159427102
34 | 358 | 262.667398457
35 | 370 | 275.80076838
36 | 382 | 289.590806799
37 | 394 | 304.070347139
38 | 406 | 319.273864495
39 | 418 | 335.23755772
40 | 430 | 351.999435606
41 | 442 | 369.599407387
42 | 454 | 388.079377756
43 | 466 | 407.483346644
44 | 478 | 427.857513976
45 | 490 | 449.250389675
46 | 502 | 471.712909158
47 | 514 | 495.298554616
48 | 526 | 520.063482347
49 | 538 | 546.066656464
↑複利運用が固定収入を超えた！
50 | 550 | 573.369989288
51 | 562 | 602.038488752
52 | 574 | 632.14041319
53 | 586 | 663.747433849
54 | 598 | 696.934805542
55 | 610 | 731.781545819
56 | 622 | 768.37062311
57 | 634 | 806.789154265
58 | 646 | 847.128611978
59 | 658 | 889.485042577
```

12年目に、固定収入の資産額が複利運用の資産額を超えます
49年目に、複利運用の資産額が固定収入の資産額を超えます
複利運用は加速度的に増えていくので、その後は固定収入が複利運用を超えることはありません


# グラフ

![composed_interest.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257093/62bb518f-1b94-cdc5-aee1-46d4b838c4dd.png)

[理論通り](https://qiita.com/it31415/items/89c6860d8bfeae168177#%E8%B3%87%E7%94%A3%E9%A1%8D%E3%82%92%E6%95%B0%E5%BC%8F%E3%81%A7%E8%A1%A8%E3%81%99)、固定収入は直線、複利運用は指数関数のグラフになっています

# 結論

0~11年目は複利運用の方が資産額が多い
12~48年目は固定収入の方が資産額が多い
それ以降は複利運用の方が資産額が多い

となります

※元手がいくらか、固定収入がいくらか、年利回りがいくらかなど[色々な前提条件](https://qiita.com/it31415/items/89c6860d8bfeae168177#%E8%B3%87%E7%94%A3%E9%A1%8D%E3%82%92%E6%95%B0%E5%BC%8F%E3%81%A7%E8%A1%A8%E3%81%99)によって結果は異なります

# 参考
[Scipy Lecture Notes](http://www.turbare.net/transl/scipy-lecture-notes/index.html)
[matplotlib入門](https://yubais.net/doc/matplotlib/)

# おわりに

たまに計算とかグラフ化とかすると楽しいですね笑
単に技術的な記事も読んでて役に立つからありがたいんだけど、実際に技術を使って何かをしてみる方が記事を書くのは面白いね

最後まで読んでいただきありがとうございました。
QiitaやTwitterなどにコメントをしてもらったり、SNSでシェアしてもらえるとうれしいです！
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Pythonを使ってグラフを描いて遊んでみました！<br><br>Macを使っている人ならPythonを1秒も触ったことない人でも、この記事の内容をコピペすれば10分くらいで綺麗なグラフが書けるようになると思います！<br><br>固定収入と複利運用はどちらが得か、Pythonでグラフ化してみた <a href="https://t.co/kPLvCB1wK0">https://t.co/kPLvCB1wK0</a> <a href="https://twitter.com/hashtag/Qiita?src=hash&amp;ref_src=twsrc%5Etfw">#Qiita</a></p>&mdash; ITのんびり@V字回復エンジニア (@it31415) <a href="https://twitter.com/it31415/status/1140212705598615552?ref_src=twsrc%5Etfw">2019年6月16日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>