はじめに
こんにちは。将棋と筋トレが好きな、学生エンジニアのゆうき(@engieerblog_Yu)です。
今日は、金融省の投資シミュレーションをプログラミングで実装してみようと思います。
今回参考にしたサイトはこちらの金融省のサイトです。
今回の製作物
今回は、毎月の投資金額と想定される利回りと積立期間を入力すると、想定される運用成績が表示されるようなプログラムを実装していきたいと思います。
イメージとしてはこんな感じです。


それでは実装していきましょう。
ライブラリのインポート
今回使用するライブラリはnumpyとmatplotlibです。
import numpy as np
import matplotlib.pyplot as plt

numpyは配列の処理に、matplotlibはグラフ表示に使用します。
入力受付
次にユーザー毎に違う値である、値の入力をinput関数で受け付けていきます。
ini_inv_amount = int(input("初期投資額を入力してください(万円):"))
reserve_amount = int(input("毎月積み立て額を入力してください(万円):"))
invest_period = int(input("投資期間を入力してください(年):"))
annual_rate = float(input("年率を入力してください(%):"))
金融省の入力データに加えて、今回は初期投資額も追加したいと思います。
計算部分

それではメインとなる計算部分です。
今回の投資シミュレーションはこのような漸化式で表すことができます。
\(a_{n+1}=a_n×(1+r)\)
\(a_n:n年目の運用収益 r:想定利回り\)
今回は漸化式で\(a_1,a_2,a_3・・・a_n\)を計算したものを、順に配列に格納していきたいと思います。
//初期投資額をchartに格納する
chart = []
//運用収益
total_money = ini_inv_amount
chart.append(total_money)
//毎月の積立てと年率を計算
for i in range(invest_period*12):
if i % 12 == 0 and i > 0:
total_money = total_money * (1+annual_rate/100)
chart.append(total_money)
total_money = total_money + reserve_amount
chartの中身を出力したものが以下です。


プログラミングの魅力の一つは、漸化式などの繰り返し処理に強いことです。
それでは次に棒グラフに出力していきましょう。
グラフ出力
それでは先ほどの運用収益を、棒グラフにプロットしていきたいと思います。
//横軸(年)の値
year = np.array(range(invest_period))
//縦軸(運用収益)の値
chart = np.array(chart)
//グラフプロット
plt.bar(year, chart,align="center")
plt.xlabel("Accumulation period")
plt.ylabel("Investment results")

元本と収益を色分けしてグラフ表示してみる
//運用収益
total_money = ini_inv_amount
//元本
principal = ini_inv_amount
//chart1(運用収益)
chart1.append(total_money)
//chart2(元本)
chart2.append(0)
//毎月の積立てと年率をchart1とchart2に分けて計算
for i in range(invest_period*12):
if i % 12 == 0 and i > 0:
total_money = total_money * (1+annual_rate/100)
chart1.append(total_money-principal)
chart2.append(principal)
total_money = total_money + reserve_amount
principal = principal + reserve_amount
year = np.array(range(invest_period))
chart1 = np.array(chart1)
chart2 = np.array(chart2)
//元本と運用収益を分けてグラフ表示
plt.bar(year, chart1, align="center",color="green")
plt.bar(year, chart2, bottom=chart1, color="orange")
plt.xlabel("Accumulation period")
plt.ylabel("Investment results")


金融省の投資シミュレーション結果と同じようなグラフを表示することができました。

他にもいろんな投稿をしてるにゃ。
終わりに
今回は、金融省の投資シミュレーションをプログラミングで実装してみました。
プログラミングを使えば、意外と簡単に金融省が作成している投資シミュレーションが作れることがお分かりいただけたかと思います。
最後におまけとして、私がPythonを習得した、おすすめ講座を紹介したいと思います。
・大学のPythonの講義が理解できないから単位取れるか不安
・プログラミングを使ったバイトやインターン、就職に興味がある
・Pythonで案件をこなせる基礎を身につけたい
という方は特におすすめの講座になります。
Pythonの勉強方法【おまけ】
上記に当てはまった人はUdemyというオンラインプログラミング学習プラットフォームにあるこちらの講座がおすすめです。

上記の講座のコースを全て受ければ即Pythonエンジニアとして働くことができるくらいのスキルを身につけることができます。
上記の講座は豊富なコースがあるので単位やバイト、インターン程度であれば必要だと思った箇所だけ受けるなんてことも可能です。
私が受けたPythonの講座の中では最も良かったですし、この講座を受けるだけで本質的にプログラミングを理解することができると思います。
プログラミングについて予備知識が無いという前提の講座ですし、質問をすることもできるので自分のプログラミングスキルに自信がない方で、頑張ってみたいと思っていたらぜひ受けてみて欲しい講座となっています。
コメント