今回は老後の資産をどうやって取り崩すか
資産取り崩しのシミュレーションです
解説動画はこちら
老後の資産を年利 X % で運用しつつ
毎月 X 万円取り崩していく際の
資産推移をシミュレーションします。
例:平均 4%/年、リスク(ブレ幅) 1%/年
これを 1,000回くらい繰り返す
コードでは1000回の結果を可視化していきます。
ライブラリのインストール
Google Colab で使用するには
日本語のライブラリが必要なのでこれを入れておいてください
シミュレーションボタンクリックで
結果が出ます。

老後の資産と毎月の取り崩しの金額
利回りとリスクを変更すると
どれくらいの確率で資産が破産するか
求めることができます。
破産確率が0%になるように
取り崩しをしていくと資産が残る形になります。
毎月どれくらい取り崩せるのか
おおよその金額を算出できるので
老後資金が足りるかどうか
資産したい場合は、ぜひ使ってみてください。
老後2000万円問題とか
言われていますが
2000万円では全然足りないですねーーーーーー
資産が底を尽きないように
どんどん増やしていけるように
したいと思っています。
今後も投資系のシミュレーションを
どんどんやっていきますので
リクエストがあれば、どんどん
動画のコメントに書き込んでみてください
それでは。
資産取り崩しのシミュレーションです
解説動画はこちら
老後資産取り崩し
老後の資産を年利 X % で運用しつつ
毎月 X 万円取り崩していく際の
資産推移をシミュレーションします。
資産金額、年利、リスク確率から
破産確率がどれくらいになるのか
破産確率がどれくらいになるのか
これを導き出します。
モンテカルロシミュレーション
資産取り崩しの際のシミュレーションに使うのが
モンテカルロシミュレーションです。
これはサイコロをたくさん振って
結果を求めるようなイメージです。
おおよその内容としては
モンテカルロシミュレーション
資産取り崩しの際のシミュレーションに使うのが
モンテカルロシミュレーションです。
これはサイコロをたくさん振って
結果を求めるようなイメージです。
おおよその内容としては
資産がスタート(例:5,000万円)
毎月、資産が「投資リターン」で少し増えたり減ったりする
例:平均 4%/年、リスク(ブレ幅) 1%/年
これを「正規分布」というサイコロで乱数を作って計算
その後「毎月の生活費を取り崩す」。(例:20万円ずつ減らす)
これを1シナリオとして 最後まで計算
これを 1,000回くらい繰り返す
サイコロを振って、資産の未来を1000通り描くイメージです。
コードでは1000回の結果を可視化していきます。
ライブラリのインストール
Google Colab で使用するには
日本語のライブラリが必要なのでこれを入れておいてください
# 可視化ライブラリのインストール pip install japanize-matplotlib
モンテカルロシミュレーションのコード
ipywidgetsとmatplotlibで可視化するコードです。
コピペして上から実行していくと
スライダーとボタンが出るはずです。

スライダーを調整してコピペして上から実行していくと
スライダーとボタンが出るはずです。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
import ipywidgets as widgets
from IPython.display import display, clear_output
# シミュレーション関数
def simulate_withdrawal(start_age, years, initial_assets, monthly_withdraw, annual_return, annual_risk, n_sim=1000):
months = years * 12
results = []
for _ in range(n_sim):
assets = initial_assets
monthly_returns = np.random.normal(
loc=(annual_return/100)/12,
scale=(annual_risk/100)/np.sqrt(12),
size=months
)
trajectory = []
for r in monthly_returns:
assets *= (1 + r)
assets -= monthly_withdraw
assets = max(0, assets)
trajectory.append(assets)
results.append(trajectory)
return pd.DataFrame(results).T
# 実行関数
def run_simulation(b):
clear_output(wait=True)
display(ui)
# 入力値取得
start_age = age_slider.value
years = years_slider.value
initial_assets = assets_slider.value
monthly_withdraw = withdraw_slider.value
annual_return = return_slider.value
annual_risk = risk_slider.value
# シミュレーション実行
df = simulate_withdrawal(start_age, years, initial_assets, monthly_withdraw, annual_return, annual_risk)
mean_path = df.mean(axis=1)
median_path = df.median(axis=1)
best_path = df.max(axis=1)
worst_path = df.min(axis=1)
months = np.arange(1, years*12 + 1)
# 最終結果テキスト
final_assets = df.iloc[-1]
print(
f"最終結果:"
f" 破産確率: {100 * (final_assets==0).mean():.1f}%"
f" 平均資産額: {final_assets.mean():,.0f} 万円"
f" 中央資産額: {final_assets.median():,.0f} 万円"
f" 最良ケース: {final_assets.max():,.0f} 万円"
f" 最悪ケース: {final_assets.min():,.0f} 万円"
)
# グラフ描画 (matplotlib)
plt.figure(figsize=(10,6))
#plt.plot(months, best_path, label="最良ケース", color="green")
plt.plot(months, worst_path, label="最悪ケース", color="red")
plt.plot(months, mean_path, label="平均ケース", color="blue")
plt.plot(months, median_path, label="中央値ケース", color="orange")
plt.title(f"資産取り崩しシミュレーション(開始年齢: {start_age}歳, 期間: {years}年)")
plt.xlabel("経過月数")
plt.ylabel("資産額 (万円)")
plt.legend()
plt.grid(True)
plt.show()
# スライダーUI age_slider = widgets.IntSlider(value=65, min=50, max=100, step=1, description="開始年齢") years_slider = widgets.IntSlider(value=30, min=10, max=50, step=1, description="年数") assets_slider = widgets.IntSlider(value=5000, min=1000, max=20000, step=100, description="資産(万円)") withdraw_slider = widgets.IntSlider(value=20, min=10, max=100, step=1, description="月取崩(万円)") return_slider = widgets.IntSlider(value=4, min=1, max=20, step=1, description="利回り%") risk_slider = widgets.IntSlider(value=1, min=1, max=30, step=1, description="リスク%") # 実行ボタン run_button = widgets.Button(description="シミュレーション実行", button_style="success") run_button.on_click(run_simulation) # UIまとめて表示 ui = widgets.VBox([age_slider, years_slider, assets_slider,withdraw_slider, return_slider, risk_slider,run_button]) display(ui)

シミュレーションボタンクリックで
結果が出ます。

老後の資産と毎月の取り崩しの金額
利回りとリスクを変更すると
どれくらいの確率で資産が破産するか
求めることができます。
破産確率が0%になるように
取り崩しをしていくと資産が残る形になります。
毎月どれくらい取り崩せるのか
おおよその金額を算出できるので
老後資金が足りるかどうか
資産したい場合は、ぜひ使ってみてください。
老後2000万円問題とか
言われていますが
2000万円では全然足りないですねーーーーーー
資産が底を尽きないように
どんどん増やしていけるように
したいと思っています。
今後も投資系のシミュレーションを
どんどんやっていきますので
リクエストがあれば、どんどん
動画のコメントに書き込んでみてください
それでは。

コメントする