積立投資(毎月)の年利回りを計算するプログラムをつくってみた
年利回りの計算がなぜ必要か?
一定の投資期間において、投資した元本が1年あたり平均でどのくらい収益を上げたかを示すもので、よく投資の成績の指標に使われます。
自分の投資の成績が、他の投資商品や他の投資家と比べてどうだったか判断するのに便利な指標です。
投資成績の目標も「年利5%」などといったように、年利回りで表現されることがほとんどです。
年利回りの計算方法
まず以下の式①で月利回りを計算します。
現在の資産残高(円)=Σ {毎月投資額(円)×(1 + 月利回り)^投資月数}・・・①
式①は知りたい数字が左にある『月利回り=〇〇』の形になっていないので、手計算で解くのが難しそうだというのがわかるかと思います。(学術用語では”陽に解けない”といいます。)
プログラムをを書くことで収束計算により簡単に答えを求めることができます。こういうときプログラミングができると便利ですね (^^♪
最後に式②で年利回りに換算します。
年利回り=(1+月利回り)12 ー1・・・②
データ形式
2か月分だけサンプルでデータをいれています。 実際には下にデータが続いていきます。同じ月にいろんな金融商品を買った場合など、同じ月が複数行あっても計算できるようになっています。
年 | 月 | 新規積立額 |
---|---|---|
2020 | 10 | 12,000 |
2020 | 11 | 12,000 |
コード
R言語で年利回りを計算するコードを作ってみました。
最初の3行は毎回数字を入力する必要があります。下の例では、2022年10月の金融資産残高が400万円の場合の例です。(できるだけ注意して作っていますが、バグがないとも限らないので、使用は自己責任でお願いします。)
now_year <- 2022 #今日の年を入力してください now_month <- 10 #今日の月を入力してください v_real <- 4000000 #今日の資産残高(円)を入力してください library(tidyverse) data <- read_csv("data.csv") # 上の表のデータ形式です。 data_2 <- data %>% mutate(t = (now_year - 年)*12 + (now_month - 月)) # 投資月数を計算。 if (v_real - sum(data_2$新規積立額) > 0) { "OK" }else{ "利回りはマイナスです。計算できないため終了します。" } for (r in seq(0, 100/100, by = 0.01/100)) { v_cal_sum <- 0 for (i in 1:nrow(data_2)) { v_cal = data_2$新規積立額[i] * (1+r)^data_2$t[i] #ここが式1です。 v_cal_sum = v_cal_sum + v_cal } if (v_real - v_cal_sum < 0) { break } } ((1+r)^12-1)*100 #パーセント表示です。ここが式2です。