Insurance#
For a life insurance policy, the time at which the benefit will be paid is unknown until the policyholder actually dies and the policy becomes a claim. In this section, formulas are developed for the valuation of traditional insurance benefits (such as whole life, term and endowment insurance) and their second moments, as well as varying insurances.
Present value of life insurance r.v. \(Z\)#
Valuation functions for the present value of insurance benefits, denoted by \(Z\), are based on the continuous future lifetime random variable, \(T_x\), or the curtate future lifetime random variable, \(K_x\). The interest rate is generally assumed to be fixed and constant. Given a survival model and an interest rate we can derive the distribution of the present value random variable for a life contingent benefit, and can therefore compute quantities such as the mean and variance of the present value. Valuation functions are developed per dollar of sum assured, which can be multiplied by the actual sum insured for different benefit amounts. The expected present value of insurance benefit, denoted and solved by \(EPV(Z)\), is sometimes referred to as the actuarial value, actuarial present valuen (APV), or single net premium. Later sections will review special mortality law assumptions where EPV’s can be computed without the need for integration.
Whole life insurance#
Whole life insurance pays a benefit whenver \((x)\) dies.
\(Z = v^{T_x}\)
continuous insurance, where the benefit of $1 is payable immediately on death
\(\overline{A}_x = E[v^{T_x}] = \int_{t=0}^{\infty} ~ v^t ~ _tp_x ~ \mu_{x+t} ~ dt\)
EPV continuous whole life insurance that pays benefit of $1 immediately on death
\(Z = v^{K_x + 1}\)
annual insurance, where benefit of $1 is payable at end of year of death
\(A_x = E[v^{K_x+1}] = \sum_{k=0}^{\infty} ~ v^{k+1} ~ _{k|}q_x\)
EPV of annual whole life insurance that pays benefit of $1 at end of year on death
Term insurance#
A term life insurace for \(t\) years pays the benefit if death occurs within \(t\) years, 0 otherwise.
\(Z = 0\) when \(T_x > t\), else \(v^{T_x}\)
death benefit is payable immediately only if the policy-holder dies within \(t\) years
\(\overline{A}^ {1}_{x:\overline{t|}} = \int_{s=0}^{t} ~ v^s ~ _sp_x ~ \mu_{x+s} ~ ds = \overline{A}_x - ~_tE_x ~ \overline{A}_{x+t}\)
continous term insurance as the difference of continous whole life and deferred continuous whole life
\(Z = 0\) when \(K_x \ge t\), else \(v^{K_x + 1}\)
death benefit is payable at the end of the year of death provided this occurs within \(t\) years
\(A^ {1}_{x:\overline{t|}} = \sum_{k=0}^{t-1} ~ v^{k+1} ~ _{k|}q_x = A_x - ~_tE_x ~ A_{x+t}\)
annual term insurance as the difference of annual whole life and deferred annual whole life
Deferred insurance#
Does not begin to offer death benefit cover until the end of a deferred period
\(Z = 0\) when \(T_x < u\), else \(v^{T_x}\)
benefit is payable immediately on the death of (x) provided that (x) dies after the age of \(x+u\)
\(_{u|}\overline{A}_{x:\overline{t|}} = ~_uE_x ~ \overline{A}_{x+u:\overline{t|}}\)
continuous deferred insurance as the EPV of whole life insurance starting at the end of deferred period.
\(Z = 0\) when \(K_x < u\), else \(v^{K_x + 1}\)
annual deferred insurance where the death benefit is payable at the end of the year of death
\(_{u|}A_{x:\overline{t|}} = ~_uE_x ~ A_{x+u:\overline{t|}}\)
annual deferred insurance as the EPV of whole life insurance starting at the end of deferred period.
Endowment insurance#
An endowment insurance provides a combination of a term insurance and a pure endowment.
\(Z = v^t\) when \(T_x \ge t\), else \(v^{T_x}\)
benefit is payable on the death of (x) should (x) die within \(t\) years, but if (x) survives for \(t\) years, the sum insured is payable at the end of the \(t\)-th year.
\(\overline{A}_{x:\overline{t|}} = \overline{A}^ {1}_{x:\overline{t|}} + ~_tE_x\)
continuous endowment insurance as continuous term insurance plus a pure endowment
\(Z = v^t\) when \(K_x \ge t\), else \(v^{K_x + 1}\)
annual endowment insurance where the death benefit is payable at the end of the year of death
\(A_{x:\overline{t|}} = A^ {1}_{x:\overline{t|}} + ~_tE_x\)
annual endowment insurance as annual term insurance plus a pure endowment
Pure endowment#
\(Z = 0\) when \(T_x < t\), else \(Z = v^t\)
benefit payable in \(t\) years if (x) is still alive at that time, but pays nothing if (x) dies before then.
\({_n}E_x = A^{~~~~1}_{x:\overline{n|}} = v^n ~ _np_x\)
because the pure endowment will be paid only at time \(t\), assuming the life survives, there is only the discrete time version
Variances#
The variance of life insurance benefits is computed as the difference of the second moment \(E[Z^2]\) and square of the first moment \(E[Z]^2\). By the rule of momenets: \(E[Z^n]\) at force of interest \(\delta\) equals \(E[Z]\) at force of interest \(n\delta\) with the benefit amount also raised to the \(n\)-th power.
\(E[Z^n] = \int_{t=0}^{\infty} ~b_t^n ~ v_t^{n} ~ _tp_x ~ \mu_{x+t} ~ dt\)
when calculating with moments, the benefit and discount factor are raised to the \(n\)-th power.
\({^2}{\overline{A}}_{x} = \int_{t=0}^{\infty} ~ v^{2t} ~ _tp_x ~ \mu_{x+t} ~ dt\)
second moment of continuous insurance equal to \(\overline{A}_{x}\) at double the force of interest.
\({^2}{A}_{x} = \sum_{k=0}^{\infty} ~ v^{2(k+1)} ~ _{k|}q_x\)
second moment of annual insurance is equal to \(A_{x}\) at double the force of interest.
Whole Life insurance:
\(Var(\overline{A}_{x}) = {^2}\overline{A}_{x} - (\overline{A}_{x})^2\)
variance of continuous whole life insurance
\(Var(A_{x}) = {^2}A_{x} - ~(A_{x})^2\)
variance of annual whole life insurance
Term Life insurance:
\(Var(\overline{A}^ {1}_{x:\overline{t|}}) = {^2}\overline{A}^ {1}_{x:\overline{t|}} - (\overline{A}^ {1}_{x:\overline{t|}})^2\)
variance of continuous term life insurance
\(Var(A^ {1}_{x:\overline{t|}}) = {^2}A^ {1}_{x:\overline{t|}} - ~(A^ {1}_{x:\overline{t|}})^2\)
variance of annual term life insurance
Deferred Life insurance:
\(Var(_{u|}\overline{A}_{x:\overline{t|}}) = {^2_{u|}}\overline{A}_{x:\overline{t|}} - (_{u|}\overline{A}_{x:\overline{t|}})^2\)
variance of continuous deferred life insurance
\(Var(_{u|}A_{x:\overline{t|}}) = {^2_{u|}}A_{x:\overline{t|}} - ~(_{u|}A_{x:\overline{t|}})^2\)
variance of annual deferred life insurance
Endowment insurance:
\(Var(\overline{A}_{x:\overline{t|}}) = {^2}\overline{A}_{x:\overline{t|}} - (\overline{A}_{x:\overline{t|}})^2 = Var(\overline{A}^ {1}_{x:\overline{t|}}) + Var(_tE_x) - Cov(\overline{A}^ {1}_{x:\overline{t|}}, ~_tE_x)\)
variance of continous endowment insurance may also be expressed on the sum of a term insurance and pure endowment, which are mutually exclusive hence \(Cov(\overline{A}^ {1}_{x:\overline{t|}}, ~_tE_x) = E[\overline{A}^ {1}_{x:\overline{t|}}] E[_tE_x]\)
\(Var(A_{x:\overline{t|}}) = {^2}A_{x:\overline{t|}} - ~(A_{x:\overline{t|}})^2 = Var(A^ {1}_{x:\overline{t|}}) + Var(_tE_x) - Cov(A^ {1}_{x:\overline{t|}}, ~_tE_x)\)
variance of annual endowment insurance
Pure Endowment:
\({^2_t}E_{x} = v^{2t} ~ _tp_x = v^t ~ _tE_x\)
second moment of pure endowment by discounting \(_tE_x\)
\(Var(~_tE_x) = v^{2t} ~ _tp_x ~ _tq_x = v^{2t} ~_tp_x - (v^t ~ _tp_x)^2\)
variance of pure endowment is the variance of a Bernoulli random variable
Varying insurance#
Increasing insurance:
Amount of death benefit increases arithmetically at a rate of $1 per year.
\((\overline{IA})_{x} = \int_{t=0}^{\infty} ~ t ~ v^t ~ _tp_x ~ \mu_{x+t} ~ dt\)
increasing continuous whole life insurance
\((IA)_{x} = \sum_{k=0}^{\infty} ~ (k+1) ~ v^{k+1} ~ _{k|}q_x\)
increasing annual whole life insurance
\((\overline{IA})^{1}_{x:\overline{t|}} = \int_{s=0}^{t} ~ s ~ v^s ~ _sp_x ~ \mu_{x+s} ~ ds\)
increasing continuous term insurance
\((IA)^{1}_{x:\overline{t|}} = \sum_{k=0}^{t-1} ~ (k+1) ~ v^{k+1} ~ _{k|}q_x\)
increasing annual term insurance
Decreasing insurance:
Amount of death benefit increasing arithmetically at a rate of $1 per year.
\((\overline{DA})^{1}_{x:\overline{t|}} = \int_{s=0}^{t} ~ (t-s) ~ v^s ~ _sp_x ~ \mu_{x+s} ~ ds\)
decreasing continuous term insurance (not defined for whole life)
\((DA)^{1}_{x:\overline{t|}} = \sum_{k=0}^{t-1} ~ (t-k) ~ v^{k+1} ~ _{k|}q_x\)
decreasing annual term insurance (not defined for whole life)
Identity relationship:
\((\overline{DA})^{1}_{x:\overline{t|}} + (\overline{IA})^{1}_{x:\overline{t|}} = t ~ \overline{A}^{1}_{x:\overline{t|}}\)
relates continuous increasing and decreasing insurances to level insurance
\((DA)^{1}_{x:\overline{t|}} + (IA)^{1}_{x:\overline{t|}} = (t+1) ~ A^{1}_{x:\overline{t|}}\)
relates annual increasing and decreasing insurances to level insurance
Probabilities and percentiles#
The larger \(T\), the lower the present value of the payment and the random variable \(Z\). For a level benefit whole life insurance, the \(100\pi\)-th percentile of the actuarial present value is determined by the \(100(1 - \pi)\)-th percentile of the lifetime random variable.
Percentile of \(Z\):
\(t_{\pi} = S^{-1}(\pi)\)
the \(100(1-p)\)-th percentile of the lifetime variable for WL insurance can be obtained by looking up the inverse of the survival function at probability \(p\); e.g. if \(~_tp_x = e^{-\mu t}\), then \(t_{\pi} = \dfrac{-\ln \pi}{\mu}\)
\(Z_{\pi} = b_{\pi} v^{t_{\pi}}\)
the PV of the insurance r.v. that pays benefit \(b_{t_{\pi}}\) at time \(t_{\pi}\)
Probability of \(Z\):
To determine the probability that the present value of an annuity is greater than some percentile value \(Pr(Z \ge z_{\pi})\), it is necessary to plot Z as a function of \(t\), then identify those time periods where \(Z \ge z_{\pi}\) and compute the cumulative probability of \(T\) being in those time periods.
Methods#
The Insurance class implements methods to compute the expected present value of life insurance
import math
import numpy as np
import matplotlib.pyplot as plt
from actuarialmath import Insurance
import describe
describe.methods(Insurance)
class Insurance - Compute expected present values of life insurance
Methods:
--------
E_x(x, s, t, endowment, moment):
Pure endowment: t_E_x
A_x(x, s, t, u, benefit, endowment, moment, discrete):
Numerically compute EPV of insurance from basic survival functions
insurance_variance(A2, A1, b):
Compute variance of insurance given moments and benefit
whole_life_insurance(x, s, moment, b, discrete):
Whole life insurance: A_x
term_insurance(x, s, t, b, moment, discrete):
Term life insurance: A_x:t^1
deferred_insurance(x, s, u, t, b, moment, discrete):
Deferred insurance n|_A_x:t^1 = discounted term or whole life
endowment_insurance(x, s, t, b, endowment, moment, discrete):
Endowment insurance: A_x^1:t = term insurance + pure endowment
increasing_insurance(x, s, t, b, discrete):
Increasing life insurance: (IA)_x
decreasing_insurance(x, s, t, b, discrete):
Decreasing life insurance: (DA)_x
Z_x(x, s, t, discrete):
EPV of year t insurance death benefit for life aged [x]+s: b_x[s]+s(t)
Z_t(x, prob, discrete):
T_x, given the prob of the PV of life insurance, i.e. r.v. Z(t)
Z_from_t(t, discrete):
PV of annual or continuous insurance payment Z(t) at t=T_x
Z_from_prob(x, prob, discrete):
Percentile of annual or continuous WL insurance PV r.v. Z given probability
Z_to_t(Z):
T_x s.t. PV of continuous WL insurance payment is Z
Z_to_prob(x, Z):
Probability that continuous WL insurance PV r.v. is no more than Z
Z_plot(x, s, stop, benefit, T, discrete, ax, dual, title, color, alpha):
Plot of PV of insurance r.v. Z vs t
Examples#
Given a survival model, the A_x class method computes the EPV for arbitrary life insurance benefits, endowments, discount functions, terms and moments using numerical integration or summation.
life = Insurance().set_interest(delta=0.06)\
.set_survival(mu=lambda *x: 0.04)
benefit = lambda x,t: math.exp(0.02 * t)
A1 = life.A_x(0, benefit=benefit, discrete=False)
A2 = life.A_x(0, moment=2, benefit=benefit, discrete=False)
var = A2 - A1**2 # compute variance of this life insurance
print(var) # 0.0833
0.08333333333333331
But typically, the common life insurance EPV’s are computed by calling the class methods whole_life_insurance, term_insurance, deferred_insurance, endowment_insurance, increasing_insurance, decreasing insurance, or E_x (i.e. pure endowment). It is observed in the example below that term insurance can be equivalently computed as the difference of endowment insurance and a pure endowment, or as the difference of whole life and deferred insurance.
def S(x, s, t): # define a survival function
return math.exp(-.00022*t - (.0000027*1.124**(x+s)*(1.124**t-1))/math.log(1.124))
life = Insurance().set_survival(S=S, minage=20, maxage=130)\
.set_interest(i=0.05)
x, t = 50, 10
print(f"{t}-year endowment insurance for ({x}): ", life.endowment_insurance(x, t=t))
print(f"{t}-year pure endowment for ({x}): ", life.E_x(x, t=t))
print(f"{t}-year term insurance for ({x}): ", life.term_insurance(x, t=t))
print(f"{t}-year deferred insurance for ({x}): ", life.deferred_insurance(x, u=t))
print(f"whole life insurance for ({x}): ", life.whole_life_insurance(x))
print(f"{t}-year increasing insurance for ({x}):", life.increasing_insurance(x, t=t))
print(f"{t}-year decreasing insurance for ({x}):", life.decreasing_insurance(x, t=t))
10-year endowment insurance for (50): 0.6164284147269636
10-year pure endowment for (50): 0.6018174267001221
10-year term insurance for (50): 0.014610988026841604
10-year deferred insurance for (50): 0.1746968722738868
whole life insurance for (50): 0.1893078603007284
10-year increasing insurance for (50): 0.08665589675401192
10-year decreasing insurance for (50): 0.07406497154124572
The Z_t class method returns the \(100p\)-th percentile of the survival function, then Z_from_t can be called to discount the benefit paid at that time. The Z_from_prob class method performs both steps with one call. Z_plot plots the insurance present value r.v. \(Z\) as a function of time \(t\).
def S(x, s, t): # define a survival function
return math.exp(-.00022*t - (.0000027*1.124**(x+s)*(1.124**t-1))/math.log(1.124))
life = Insurance().set_survival(S=S, minage=20, maxage=130).set_interest(i=0.05)
P = 0.75 # to find the 75-th percentile of Z
T = life.Z_t(x=20, prob=P, discrete=False) # corresponding percentile of lifetime
life.Z_plot(x=20, stop=80, T=T, discrete=False) # plot Z vs t, and annotate at time T
print('T:', T) # call methods and compare results
print('p:', P, life.p_x(x=20, t=T))
print('Z:', life.Z_from_prob(x=20, prob=P, discrete=False), life.Z_from_t(t=T, discrete=False))
T: 60.274191128246535
p: 0.75 0.7500000000000304
Z: 0.05282410383956641 0.05282410383956641
By setting the dual argument to True, the survival probability of (x) can be simultaneously plotted to annotate, say, the median survival lifetime.
def S(x, s, t): # define a survival function
return math.exp(-.00022*t - (.0000027*1.124**(x+s)*(1.124**t-1))/math.log(1.124))
life = Insurance().set_survival(S=S, minage=20, maxage=130).set_interest(i=0.05)
T = life.Z_t(x=20, prob=0.5, discrete=False) # compute the median lifetime
K = life.Z_t(x=20, prob=0.5, discrete=True) # plot using discrete approximation
life.Z_plot(x=20, stop=80, T=K, discrete=True, dual=True, title="median Z(K)")
print(f"S(K={K:.4f}):", life.p_x(x=20, t=K)) # survival function at integer age
print(f"S(T={T:.4f}):", life.p_r(x=20, t=T)) # survival function at fractional age
S(K=68.0000): 0.5003864946350018
S(T=68.0097): 0.49999343308443683
SOA Question 4.18
You are given that T, the time to first failure of an industrial robot, has a density f(t) given by
with \(f(t)\) undetermined on \([10, \infty)\).
Consider a supplemental warranty on this robot that pays 100,000 at the time T of its first failure if \(2 \le T \le 10\) , with no benefits payable otherwise. You are also given that \(\delta = 5\%\). Calculate the 90th percentile of the present value of the future benefits under this warranty.
print("SOA Question 4.18 (A) 81873 ")
def f(x,s,t): return 0.1 if t < 2 else 0.4*t**(-2)
life = Insurance().set_interest(delta=0.05)\
.set_survival(f=f, maxage=10)
def benefit(x,t):
return 0 if t < 2 else 100000
life.Z_plot(x=0, stop=10, benefit=benefit, T=2, dual=True, discrete=False,
title='benefits begin at T=2')
prob = 0.9 - life.q_x(x=0, t=2)
T = life.Z_t(x=0, prob=prob)
Z = life.Z_from_t(T, discrete=False) * benefit(0, T)
print(T, Z)
SOA Question 4.18 (A) 81873
4 81873.07530779815
SOA Question 4.10
The present value random variable for an insurance policy on (x) is expressed as:
Determine which of the following is a correct expression for \(E[Z]\).
(A) \(_{10|}\overline{A}_x + _{20|}\overline{A}_x - _{30|}\overline{A}_x\)
(B) \(\overline{A}_x + _{20}E_x \overline{A}_{x+20} - 2~_{30}E_x \overline{A}_{x +30}\)
(C) \(_{10}E_x \overline{A}_x + _{20}E_x \overline{A}_{x+20} - 2 ~_{30}E_x \overline{A}_{x +30}\)
(D) \(_{10}E_x \overline{A}_{x+10} + _{20}E_x \overline{A}_{x+20} - 2~ _{30}E_x \overline{A}_{x+30}\)
(E) \(_{10}E_x [\overline{A}_{x} + _{10}E_{x+10} + \overline{A}_{x+20} - _{10}E_{x+20} + \overline{A}_{x+30}]\)
print("SOA Question 4.10: (D)")
life = Insurance().set_interest(i=0)\
.set_survival(S=lambda x,s,t: 1, maxage=40)
def fun(x, t): # given target
if 10 <= t <= 20: return life.interest.v_t(t)
elif 20 < t <= 30: return 2 * life.interest.v_t(t)
else: return 0
def A(x, t): # Z_x+k (t-k)
return life.interest.v_t(t - x) * (t > x)
x = 0
benefits=[lambda x,t: (life.E_x(x, t=10) * A(x+10, t)
+ life.E_x(x, t=20)* A(x+20, t)
- life.E_x(x, t=30) * A(x+30, t)),
lambda x,t: (A(x, t)
+ life.E_x(x, t=20) * A(x+20, t)
- 2 * life.E_x(x, t=30) * A(x+30, t)),
lambda x,t: (life.E_x(x, t=10) * A(x, t)
+ life.E_x(x, t=20) * A(x+20, t)
- 2 * life.E_x(x, t=30) * A(x+30, t)),
lambda x,t: (life.E_x(x, t=10) * A(x+10, t)
+ life.E_x(x, t=20) * A(x+20, t)
- 2 * life.E_x(x, t=30) * A(x+30, t)),
lambda x,t: (life.E_x(x, t=10)
* (A(x+10, t)
+ life.E_x(x+10, t=10) * A(x+20, t)
- life.E_x(x+20, t=10) * A(x+30, t)))]
fig, ax = plt.subplots(3, 2) # plot shapes of the target and the five functions
ax = ax.ravel()
for i, b in enumerate([fun] + benefits):
life.Z_plot(0, benefit=b, ax=ax[i], color=f"C{i+1}", title='')
ax[i].legend(["(" + "abcde"[i-1] + ")" if i else "Z"])
z = [sum(abs(b(0, t) - fun(0, t)) for t in range(40)) for b in benefits]
print("ABCDE"[np.argmin(z)]) # output letter of the function most similar to target
SOA Question 4.10: (D)
D
SOA Question 4.12
For three fully discrete insurance products on the same (x), you are given:
\(Z_1\) is the present value random variable for a 20-year term insurance of 50
\(Z_2\) is the present value random variable for a 20-year deferred whole life insurance of 100
\(Z_3\) is the present value random variable for a whole life insurance of 100.
\(E[Z_1] = 1.65\) and \(E[Z_2] = 10.75\)
\(Var(Z_1) = 46.75\) and \(Var(Z_2) = 50.78\)
Calculate \(Var(Z_3)\).
print("SOA Question 4.12: (C) 167")
cov = Insurance.covariance(a=1.65, b=10.75, ab=0) # Z1 and Z2 nonoverlapping
var = Insurance.variance(a=2, b=1, var_a=46.75, var_b=50.78, cov_ab=cov)
print(var)
SOA Question 4.12: (C) 167
166.82999999999998
SOA Question 4.11
You are given:
\(Z_1\) is the present value random variable for an n-year term insurance of 1000 issued to (x)
\(Z_2\) is the present value random variable for an n-year endowment insurance of 1000 issued to (x)
For both \(Z_1\) and \(Z_2\) the death benefit is payable at the end of the year of death
\(E [ Z_1 ] = 528\)
\(Var ( Z_2 ) = 15,000\)
\(A^{~~~~1}_{x:{\overline{n|}}} = 0.209\)
\(^2A^{~~~~1}_{x:{\overline{n|}}} = 0.136\)
Calculate \(Var(Z_1)\).
print("SOA Question 4.11: (A) 143385")
A1 = 528/1000 # E[Z1] term insurance
C1 = 0.209 # E[pure_endowment]
C2 = 0.136 # E[pure_endowment^2]
def fun(A2):
B1 = A1 + C1 # endowment = term + pure_endowment
B2 = A2 + C2 # double force of interest
return Insurance.insurance_variance(A2=B2, A1=B1)
A2 = Insurance.solve(fun, target=15000/(1000*1000), grid=[143400, 279300])
var = Insurance.insurance_variance(A2=A2, A1=A1, b=1000)
print(var)
SOA Question 4.11: (A) 143385
143384.99999999997
SOA Question 4.15
For a special whole life insurance on (x), you are given:
Death benefits are payable at the moment of death
The death benefit at time \(t\) is \(b_t = e^{0.02t}\), for \(t \ge 0\)
\(\mu_{x+t} = 0.04\), for \(t \ge 0\)
\(\delta = 0.06\)
Z is the present value at issue random variable for this insurance.
Calculate \(Var(Z)\).
print("SOA Question 4.15 (E) 0.0833 ")
life = Insurance().set_survival(mu=lambda *x: 0.04)\
.set_interest(delta=0.06)
benefit = lambda x,t: math.exp(0.02*t)
A1 = life.A_x(0, benefit=benefit, discrete=False)
A2 = life.A_x(0, moment=2, benefit=benefit, discrete=False)
var = A2 - A1**2
print(var)
SOA Question 4.15 (E) 0.0833
0.08333333333333331
SOA Question 4.4
For a special increasing whole life insurance on (40), payable at the moment of death, you are given:
The death benefit at time t is \(b_t = 1 + 0.2 t, \quad t \ge 0\)
The interest discount factor at time t is \(v(t) = (1 + 0.2 t ) − 2, \quad t \ge 0\)
\(_tp_{40} \mu_{40+t} = 0.025~\text{if} ~ 0 \le t < 40\), otherwise \(0\)
Z is the present value random variable for this insurance Calculate Var(Z).
print("SOA Question 4.4 (A) 0.036")
x = 40
life = Insurance().set_survival(f=lambda *x: 0.025, maxage=x+40)\
.set_interest(v_t=lambda t: (1 + .2*t)**(-2))
benefit = lambda x,t: 1 + .2 * t
A1 = life.A_x(x, benefit=benefit, discrete=False)
A2 = life.A_x(x, moment=2, benefit=benefit, discrete=False)
var = A2 - A1**2
print(var)
SOA Question 4.4 (A) 0.036
0.03567680106032681