(2004-4-25)
歳 確率 A p Ap ------------------ 90 0.07 6.30 91 0.08 7.28 92 0.09 8.28 93 0.10 9.30 94 0.10 9.40 95 0.10 9.50 96 0.10 9.60 97 0.10 9.70 98 0.10 9.80 99 0.07 6.93 100 0.05 5.00 101 0.04 4.04 ------------------ 合計 1.00 95.13
∴平均余命は、95.13-90=5.13(年)
(2004-4-25)
支払年額A=10000($)、年金利r=0.08、期間n=5.13(年)、年金の現在価値をPとすると、Pは次式を満たす。
P=(A / r)(1 - 1 / (1 + r)n)
=(10000/0.08)(1-1/1.085.13)
∴P=40,774($)
(added on 2015-04-04)
上のPの算定は、問題の「平均法を使え」を考慮していない。
平均法の意味が分からないため、次の解釈で問題を解くことにする。
期間5年の現在価値PV(5)と期間6年の現在価値PV(6)を算定し、期間5.13年の現在価値PV(5.13)を次式で求める。
PV(5.13) = (1-0.13)PV(5) + 0.13PV(6)
PV(5) = 10000 / 0.08(1 - 1/(1 + 0.08)5) = 39927 PV(6) = 10000 / 0.08(1 - 1/(1 + 0.08)6) = 46229 PV(5.13) = 0.87×39927 + 0.13×46229 = 34736 + 6010 = 40746
ただし、計算は、小数点以下を四捨五入した。
(2015-04-04, 2019-09-17, 2025-02-01.)
# 3.3.py
# 14:23 2015-04-04
# 2024-12-07 revise
# a, age
# df, discount factor
# p , probability of becoming dead
# pv, present value of x
# r, interest rate
# x, cash flow
# input
r = 0.08
istart = 90
iend = 101
n = iend - istart
a = [90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101 ]
x = [0, 10e3, 10e3, 10e3, 10e3, 10e3, 10e3, 10e3, 10e3, 10e3, 10e3, 10e3]
p = [0.07, 0.08, 0.09, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.07, 0.05, 0.04]
pp= [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
# calculate
for i in range(len(a)):
if i == 0:
pp[i] = 1
else:
pp[i] = pp[i - 1] - p[i - 1]
df = [1 / (1 + r) ** i for i in range(len(a))]
pv = [x1 * x2 * x3 for x1, x2, x3 in zip(pp, x, df)]
# output
print("3.3.py")
fmt1 = 7 * "{:>10}"
print(fmt1.format("i", "age", "p", "pp", "annuity", "df", "pv"))
print(70 * "-")
fmt2="{:10d}{:10d}{:10.2f}{:10.2f}{:10.0f}{:10.3f}{:10.0f}"
for x1, x2, x3, x4, x5, x6, x7 in zip(range(len(a)), a, p, pp, x, df, pv):
print(fmt2.format(x1, x2, x3, x4, x5, x6, x7))
print(70 * "-")
print("{:>60}{:10.0f}".format("sum of pv=", sum(pv)))
# end
2014-08-15, 2024-10-30.
年金の期待現在価値を計算するFortranプログラムを次に示す。
2024-10-29 JavaScriptのコードを次のリンクに示す。node.jsで動作確認済。
2024-10-29 Gaucheのコードを次のリンクに示す。
2024-10-29 Juliaのコードを次のリンクに示す。
revised on 2011-10-29, 2014-08-15, 2015-04-04, 2016-10-10.
2011-10-29 「割引率」を「割引係数」に訂正した。
2014-08-15 changed awk to Fortarn.
2015-04-04 Python code added.
2016-10-10 Fortran code linked.
2019-09-17 Python code revised.
2024-10-29 add a JavaScript code, a Gauche code and a Julia code.
2024-10-30 revise a Fortran code.
2025-02-01 open revised 3.3.py.