アクチュアリーのためのPython入門(第8回)
将来収支における解約返戻金
はじめに
前回では、
死亡指数・解約率を用いて将来の件数・保険金額の推移を作成しました。
将来収支モデルでは、
それらを使って次のような計算をしていきます。
- 保険料収入
- 保険金支出
- 解約返戻金支出
今回はこのうち、解約返戻金の計算について整理します。
前提条件
- 8年の養老保険
- 保険金額:100万円
- 契約時年齢・性別:40歳男性
- 解約控除をアルファ基準で最大10年間とします
$W_t$ = $V_t$ - $\alpha$ (1-$\frac{t}{10}$)
今回は、保険料と保険料積立金を計算した定期保険ではなく、養老保険で計算してみます。
- 年払の想定ですので、解約返戻金は期末Vを基準とした額とします
- 将来収支の目的は金額の方向感・規模感の把握ですので、
→ Decimal型ではなくfloat型で進めていきます
保険料積立金の計算
養老保険のため、保険料積立金の計算式を少し手直しします。
n年経過後の生存給付を加えます。
# 養老給付現価
def Axn(start_age, n):
age_index = start_age - 40
return (Mx[age_index] - Mx[age_index + n] + Dx[age_index + n]) / Dx[age_index]
# 純保険料
def netPremE(start_age, n):
return Axn(start_age, n) / axn(start_age, n)
# 営業保険料
def PremE(start_age, n):
alpha = 0.025
delta = 0.02
gamma = 0.00215
beta = 0.03
value = (Axn(start_age, n) + alpha + gamma * axn(start_age, n)) \
/ ((1 - beta - delta) * axn(start_age, n))
return roundhu(value, 6)
# 保険料積立金
def ResE(start_age, n, t):
benefit = Axn(start_age + t, n - t)
income = netPremE(start_age, n) * axn(start_age + t, n - t)
value = Decimal(str(benefit)) - Decimal(str(income))
return roundhu(value, 6)
保険料・保険料積立金の計算と将来収支との両方で使えるように、
ここまでは、Decimal型にしておきます。
解約返戻金の計算
解約返戻金を計算します。
ここまでは解約返戻金額がレート表でも使えるようにDecimal型で計算します。
# 解約返戻金の計算
def SVE(start_age, n, t):
if t <= 10:
surrender_fact = 0.025 * (1 - t / min(n , 10))
else:
surrender_fact = 0
value = ResE(start_age, n, t) - Decimal(str(surrender_fact))
return max(roundhu(value, 6), 0)
計算結果を確認してみます。
for t in range(0,8):
print(t, ResE(40,8,t), SVE(40,8,t))
0 0.000000 0
1 0.121991 0.100116
2 0.244776 0.226026
3 0.368387 0.352762
4 0.492858 0.480358
5 0.618219 0.608844
6 0.744502 0.738252
7 0.871745 0.868620
まとめ
今回は、解約返戻金の計算を行いました。
次回は、生命表に保険料、保険料積立金、解約返戻金を乗じていき、
最終的に保険収支の形にしていきます。