最近、積立NISAなるものが
流行ってるみたいなので
シミュレーターを作ってみました。
解説動画はこちら
そもそも、積立NISAとは?
金融庁・積立NISA
今回は金融庁が出している
シミュレーターを真似して作ってみました
金融庁・資産運用シミュレーション
こんな感じのをPythonで作ってみます
コードはこんな感じです
一応GoogleColabでも動くと思うので
試したい方はコピペして
動かしてみてください
ただし、棒グラフの万円の漢字部分が
表示されないだろうと思うので
ご了承下さい
コードのポイントとしては
スライダーで可変にして
これを入力として受け取ります
最終結果は年数分の利息を計算して
積立額にプラスして
最終結果と棒グラフに表示させます
年間40万円までなので
月額は33千円程度が限界ですかね?
これで利率4%だと
10、20年でこうなります。


10年だと積立金額の1.25倍
20年だと積立金額の1.5倍
くらいにはなりそうですね
とはいえ
この制度は始まったばかり
20年後に残っている保証も無いです
毎年必ず4%の利息が貰える
保証もありません
特に今は投資関連が
戦争やら円安やらで
ゲロやばそうな状況ですね
投資をするなら
自己責任でお願いいたします
今日はここまでです
それでは
流行ってるみたいなので
シミュレーターを作ってみました。
解説動画はこちら
そもそも、積立NISAとは?
2018年1月より開始された
少額投資非課税制度のことで
少額投資非課税制度のことで
非課税投資枠が年間40万円で
投資期間が最長20年になります
詳細はこちらをみていただければと思います
投資期間が最長20年になります
詳細はこちらをみていただければと思います
金融庁・積立NISA
今回は金融庁が出している
シミュレーターを真似して作ってみました
金融庁・資産運用シミュレーション
こんな感じのをPythonで作ってみます
コードはこんな感じです
from matplotlib import pyplot as plt import numpy as np import ipywidgets as widgets from IPython.display import display import warnings warnings.simplefilter('ignore') # 積立NISAシミュレーター def show_widgets(): button = widgets.Button(description='シミュレーション') s1 = widgets.IntSlider(value=20000 , min=1000 , max=33000 , step=1000 , description='月の積立金:') s2 = widgets.FloatSlider(value=4.0, min=0.1, step=0.1, max=10.0, description='利率:') s3 = widgets.IntSlider(value=10 , min=1 , max=20 , step=1 , description='年数:') output0 = widgets.Output(layour={'border': '1px solid black'}) output1 = widgets.Output() fig = plt.figure(figsize=(12,6)) ax = plt.gca() # クリック時の実行 def on_click(b: widgets.Button) -> None: ax.clear() reserve = s1.value rate = s2.value year = s3.value rand_y1,rand_y2 = [],[] money,cost = 0,0 for i in range(1,year+1): money += reserve * 12 cost += reserve * 12 money = int(money*(1+rate/100)) diff = money - cost rand_y1.append(cost) rand_y2.append(diff) # 棒グラフの描画 x = list(range(1,len(rand_y1)+1)) p1=ax.bar(x , rand_y1) p2=ax.bar(x , rand_y2 , bottom=rand_y1) l1=list(map(lambda x:'{0:.1f}万円'.format(x/10000), rand_y1)) l2=list(map(lambda x:'{0:.1f}万円'.format(x/10000), rand_y2)) l3=list(map(lambda x:'{0:.1f}万円'.format((x[0]+x[1])/10000), zip(rand_y1,rand_y2))) # 棒グラフのテキストラベル for i in range(len(x)): if len(x)<=10: size = 10 elif len(x)<=15: size = 8 elif len(x)<=20: size = 7 else: size = 5 ax.text(i +1, rand_y1[i]/2, l1[i], ha='center', color='black',size =size) ax.text(i +1, rand_y1[i] + rand_y2[i]/2, l2[i], ha='center', color='black',size =size) ax.text(i +1, rand_y1[i] + rand_y2[i] + 20000 , l3[i], ha='center', color='orange',size =size) ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x)))) with output0: output0.clear_output(wait=True) out_text = '積立金額 : {0:_>9}円 \n合計利息 : {1:_>9}円 \n最終金額 : {2:_>9}円' out = out_text.format(cost , diff , money) print(out) with output1: output1.clear_output(wait=True) display(ax.figure) button.on_click(on_click) box1 = widgets.Box([s1,s2]) box2 = widgets.Box([s3,button]) display(box1 , box2 , output0 , output1) plt.close() button.click() show_widgets()
一応GoogleColabでも動くと思うので
試したい方はコピペして
動かしてみてください
ただし、棒グラフの万円の漢字部分が
表示されないだろうと思うので
ご了承下さい
コードのポイントとしては
月の積立金
利率
年数
スライダーで可変にして
これを入力として受け取ります
最終結果は年数分の利息を計算して
積立額にプラスして
最終結果と棒グラフに表示させます
年間40万円までなので
月額は33千円程度が限界ですかね?
これで利率4%だと
10、20年でこうなります。


10年だと積立金額の1.25倍
20年だと積立金額の1.5倍
くらいにはなりそうですね
とはいえ
この制度は始まったばかり
20年後に残っている保証も無いです
毎年必ず4%の利息が貰える
保証もありません
特に今は投資関連が
戦争やら円安やらで
ゲロやばそうな状況ですね
投資をするなら
自己責任でお願いいたします
今日はここまでです
それでは
コメントする