今回は、年金の最適受給年をPythonで考えようといった題材です。
年金の基本的な受給年は65歳からなのですが、実は、受給開始年は、60歳から70歳まで自由に調整することが出来ます。そして、受給開始年に応じて、毎月受給できる年金額も1か月ごとに増減します。
実際に受給できる額や、平均寿命から残りの受給期間などをプログラミングで計算させて、いつから受給するのがもっともお得になるのかを検証してみました!
それでは見ていこう!
コンテンツ
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
年金の基本
ここで年金について詳しく説明しても仕方ないので、詳細を知りたい方は公式サイトなどで確認するほうが正しい情報も得られるためいいと思います。
日本の公的年金は「2階建て」
厚生労働省
ですが、常識範囲の知識については紹介していきます。
すべての国民は年金を支払う必要があります。年金は基礎年金とも呼ばれ、1階部分に相当します。会社員などが加入する厚生年金は2階部分で、さらに、企業型確定拠出年金や「ideco」と呼ばれる、かわいらしい名前の個人型拠出年金は3階部分に属します。
基礎年金や厚生年金は、自分の人生が長ければ長いほど年金を受け取る期間が長くなるのでその分お得になります。特に基礎年金に関しては、支払った額よりも受け取れる額のほうが多くなる可能性が高いので、将来のためにもできるだけ支払うようにしましょう。また、年金を支払うと、所得税などが多少控除されるので税金面でもメリットがあります。
これらを踏まえて今回は、基礎年金について、受給開始年を変化させて受給額のシミュレーションをしていきます!
たのしみですねぇ~!
年金シミュレーション
考え方と設定内容
増額率と減額率の認識
受給年 | 詳細 |
---|---|
60 ~ 65歳 | 1か月繰り上げで0.5%ずつ減額。 60歳の場合、5 × 12か月 × 0.5% = 30% |
基準となる65歳 | 満額支給で月65,000円 |
65 ~ 70歳 | 1か月繰り上げで0.7%ずつ増額。 70歳の場合、5 × 12か月 × 0.7% = 42% |
具体的に月にもらえる額を認識しましょう。
各年代の計算結果を次に示しています。
受給開始年と受給額の確認
単純に考えれば、もらえる額が多いほうがいいと思うかもしれませんが、繰り下げ受給をするということは、もらえる期間が少なくなるため、1か月の額は多くても、全体的には最も良い選択になるとは限りません。
賢い選択をするためにも一般的なデータを用いて考察していきます。
また、上記のグラフは、1年ごとですが、毎月の計算をしていきたいのでプログラムを組みます。
条件の設定
設定事項
- 日本の平均寿命より、84歳まで生きると仮定
- 基礎年金の満額は6,5000円とする
- 増額されるのは75歳まで、その後一定
- 年金受給額は受け取り始めたら一定
年金受給額は毎年変わる可能性がありますが今回は一定とします。
また、現在は増額期間が70歳までとなっていますが、今後75歳まで増額されるようです。しかし、プログラムの結果から、それを考慮しても金額的にお得とはならない確率が高いので70歳までとします。
理由としては、75歳から受給しても生きている期間が短いからです。
それではコードを見ていきましょう!
待ってました!
ソースコード
以下に示すソースコードを一つにまとめていただければ実行できると思います。環境は「google colaboratory」で行いました。これは、ノートパソコンでブラウザに接続できるならば、GPUを用いてプログラムを実行できるので処理速度が速いです。また、人工知能や機械学習に取り組むための、「TensorFlow」なども簡単に利用できます。愛用者です笑。
ちなみに、GPUのさらに上のTPUも利用可能です。
TPUのすごさはこちら ← これやってみたかった(^_^)
受給開始年の増減割合の計算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
def Calc_Pension(m): #年金額を求める関数 #60歳から65歳の時の受給額の計算 if 60 * 12 <= m < 65 * 12: #減額割合の計算 p = 100 - 0.5 * (65 * 12 - m) #割合をもとに実際の額を計算 return int(65000 * p / 100) #65歳から70歳の時の受給額の計算 if 65 * 12 <= m < 70 * 12: #増額割合の計算 p = 100 + 0.7 * (m - 65 * 12) #割合をもとに実際の額を計算 return int(65000 * p / 100) #70歳以上は増額の割合は一定 if 70 * 12 <= m: #増額割合の計算 p = 100 + 0.7 * 5 * 12 #割合をもとに実際の額を計算 return int(65000 * p / 100) |
ここは特に説明がなくても理解できると思います。
受給開始年齢と総受給額のグラフ表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
from matplotlib import pyplot as plt #モジュールのインポート def Draw_Graph(x, y): #グラフを描写する関数 #オブジェクトの生成 fig, ax = plt.subplots() #y軸の表示範囲の設定(最小値から最大値まで) ax.set_ylim(np.min(y), np.max(y)) #縦横の補助線を描画 ax.grid() #X軸ラベルの設定 ax.set_xlabel("year") #Y軸ラベルの設定 ax.set_ylabel("pension") #タイトルの設定 ax.set_title("total of pension"); #棒グラフの表示 plt.bar(x, y) |
普段Pythonでグラフの描写はしないのでもしかしたら変なことをしてるかもしれません。
この関数では、numpy配列を引数とし、棒グラフを作成します。
最後の行はグラフの出力で、それ以外はグラフを見やすくするための処理です。
メイン関数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import numpy as np #モジュールのインポート if __name__ == "__main__": year = 12 #1年は12か月 average_age = 84 #平均寿命の設定 start, end = 60, 70 #受給額の変動期間 #受給額を保存する配列 height = np.array([0] * ((end - start) * year + 1)) #受給開始年の年齢を保存する配列 left = np.array([i / year for i in range(start * year, end * year + 1)]) #受給額の最大値とその時の月を保存する変数 max, month = 0, 0 for i in range(start * year, end * year + 1): #毎月の受給額の計算 Pension = Calc_Pension(i) #残り受給期間 Rest = average_age * year - i #今後受け取る年金の総額 Sum = Pension * Rest #Y軸のデータへ保存 height[i - start * year] = Sum #次の行は、受け取り開始年齢ごとの毎月の受給額と総受給額を出力。見たい方は「#」を削除してください。 #print(str(i // year) + "歳" + str(i % year) + "ヶ月の受給額:" + str(Pension) + " 合計" + str(Sum)) #受け取り額の最大を求める if max <= Sum: max = Sum month = i print("最大支給額:" + str(max) + "円") print(str(month // year) + "歳" + str(month % year) + "月") #グラフを描写する Draw_Graph(left, height) |
全体のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
from matplotlib import pyplot as plt #モジュールのインポート import numpy as np #モジュールのインポート def Calc_Pension(m): #年金額を求める関数 #60歳から65歳の時の受給額の計算 if 60 * 12 <= m < 65 * 12: #減額割合の計算 p = 100 - 0.5 * (65 * 12 - m) #割合をもとに実際の額を計算 return int(65000 * p / 100) #65歳から70歳の時の受給額の計算 if 65 * 12 <= m < 70 * 12: #増額割合の計算 p = 100 + 0.7 * (m - 65 * 12) #割合をもとに実際の額を計算 return int(65000 * p / 100) #70歳以上は増額の割合は一定 if 70 * 12 <= m: #増額割合の計算 p = 100 + 0.7 * 5 * 12 #割合をもとに実際の額を計算 return int(65000 * p / 100) def Draw_Graph(x, y): #グラフを描写する関数 #オブジェクトの生成 fig, ax = plt.subplots() #y軸の表示範囲の設定(最小値から最大値まで) ax.set_ylim(np.min(y), np.max(y)) #縦横の補助線を描画 ax.grid() #X軸ラベルの設定 ax.set_xlabel("year") #Y軸ラベルの設定 ax.set_ylabel("pension") #タイトルの設定 ax.set_title("total of pension"); #棒グラフの表示 plt.bar(x, y) if __name__ == "__main__": year = 12 #1年は12か月 average_age = 84 #平均寿命の設定 start, end = 60, 70 #受給額の変動期間 #受給額を保存する配列 height = np.array([0] * ((end - start) * year + 1)) #受給開始年の年齢を保存する配列 left = np.array([i / year for i in range(start * year, end * year + 1)]) #受給額の最大値とその時の月を保存する変数 max, month = 0, 0 for i in range(start * year, end * year + 1): #毎月の受給額の計算 Pension = Calc_Pension(i) #残り受給期間 Rest = average_age * year - i #今後受け取る年金の総額 Sum = Pension * Rest #Y軸のデータへ保存 height[i - start * year] = Sum #次の行は、受け取り開始年齢ごとの毎月の受給額と総受給額を出力。見たい方は「#」を削除してください。 #print(str(i // year) + "歳" + str(i % year) + "ヶ月の受給額:" + str(Pension) + " 合計" + str(Sum)) #受け取り額の最大を求める if max <= Sum: max = Sum month = i print("最大支給額:" + str(max) + "円") print(str(month // year) + "歳" + str(month % year) + "月") #グラフを描写する Draw_Graph(left, height) |
実行結果と考察
出力結果
お待ちかねの結果ですね!
1 2 |
#最大支給額:15644525円 #68歳7月 |
ちなみにこの時の毎月の受給額は、84,565円です。実際には変動する可能性が高いので参考値としてください。68歳7月を過ぎると、平均寿命の84歳までの期間が短くなるため、総受給額も減少傾向にありますね。
ただ、100歳くらいまで生きられるのなら70歳まで繰り下げするのも一つの選択肢ですね。
人生100年時代ですから!
考察
年金の支給額は日本の経済指標ともかかわりがあり、インフレが起こるとそれに合わせて額も上がります。年2%のインフレを考慮した結果も考えていきたい。
ただ、日本は20数年間はデフレを続けているので考えるに値しないかも、、、
(これは何にも考察になっていない)
まとめ
今回は、年金受給の繰り上げや繰り下げについて、最もお得となる受給開始年をシミュレーションしてみました。結果としては、平均寿命の84歳まで生きられた場合、68歳7月ヶ月目から受給を開始すると、毎月84,565円、最大支給額は15,644,525円となり、最もお得になるということがわかりました。そしで、大事なのは、2022年4月から75歳まで増額される予定ですが、受け取りをそこまで繰り下げても、結果として損になるということです。これは、将来的に年金制度が破綻になりかねないことが背景にあり、政府としては、なるべく国民に支払う額を抑えたいということでしょう。直感的には、75歳まで増額され続ければお得と思うかもしれませんが、実際にはそんなことなく、情弱な人間を罠にかけた改正ということがわかりました。
余談ですが、生活に余裕のないその日暮らしの人が、繰り下げ受給を行っても幸福度は下がってしまいます。そのようなときは、繰り上げて年金を受給しましょう。そして、将来のためにもちゃんと年金は支払いましょう!最初にも書きましたが、受け取り資格を得られた場合、年金を収めた額よりも、受け取れる額のほうが多くなります。また、支払いに関しては、所得税の控除などもあるため、年収が高い人ほどそのメリットは大きいでしょう。
また、年金は2年分をまとめて支払うことで、支払額を減らせたり、クレジットカード払いによってポイントを付与させることもできます。こういった情報でお得に暮らしたいですね!
気になる方は勉強してみてくださいね!
最後まで読んでいただきありがとうございます!
無料の説明会を有効活用しよう!
独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。
それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
パソコン操作にお困りではありませんか?
ExcelやWordなど、基本的なソフトの使い方がいまいちわからないという方には、「PCHack」という講座をオススメしています。スクールの中でもコストパフォーマンスに優れ、オンラインなのでどこでも好きな時間に学習できます。
3万円ほどでPC初心者を脱出したい方は参考にしてください。
【PC初心者必見!】パソコンの勉強方法が分からないならPCHack講座がオススメ!