Mortality rates are one of the most critical assumptions in life insurance. Actuaries often rely on the mortality rates published by Statistics Offices. Typically, these rates are provided on a yearly basis. However, actuarial cash flow models operate on a monthly scale. In this post, we will explore two common methods for transforming yearly rates into monthly ones: the constant rate and uniform distribution of deaths.
List of content:
Transformation methods
When it comes to transforming yearly mortality rates into monthly ones, actuaries commonly employ two methods:
- Constant Rate
The constant rate method is the simplest. It assumes that the survival rate is consistent for each month:
$$ {}_{\frac{1}{12}} p_{x + \frac{m}{12}} = (p_{x})^{\frac{1}{12}} $$- Uniform Distribution of Deaths
Uniform distribution of deaths assumes that the number of deaths in each month is uniform. Under uniform distribution of deaths approach:
$$ {}_{\frac{1}{12}} q_{x + \frac{m}{12}} = \frac{\frac{1}{12} \cdot q_x}{(1 - \frac{m}{12} \cdot q_x)} $$Next, we will explain both of these methods using practical modeling examples. To do this, we will utilize Python and the cashflower package. If you are not familiar with cashflower, you can get started here.
Practical applications
Let's dive into practical actuarial modeling for both methods to calculate monthly mortality rates.
In our scenario, the yearly mortality rate is 0.1 in the first year and 0.2 in the second year.
@variable()
def year(t):
if t == 0:
return 0
elif t % 12 == 1:
return year(t-1) + 1
else:
return year(t-1)
@variable()
def yearly_mortality_rate(t):
if year(t) == 1:
return 0.1
elif year(t) == 2:
return 0.2
else:
return 0
Constant rate
In this approach, the yearly probability of survival is raised to the power of \( \frac{1}{12} \) to obtain a monthly survival rate.
@variable()
def monthly_mortality_rate(t):
return 1 - (1 - yearly_mortality_rate(t))**(1/12)
Using the constant rate method, the probability of death remains the same for each month of a year.
# output
t year yearly_mortality_rate monthly_mortality_rate
0 0.0 0.0 0.000000
1 1.0 0.1 0.008742
2 1.0 0.1 0.008742
3 1.0 0.1 0.008742
4 1.0 0.1 0.008742
5 1.0 0.1 0.008742
6 1.0 0.1 0.008742
7 1.0 0.1 0.008742
8 1.0 0.1 0.008742
9 1.0 0.1 0.008742
10 1.0 0.1 0.008742
11 1.0 0.1 0.008742
12 1.0 0.1 0.008742
13 2.0 0.2 0.018423
14 2.0 0.2 0.018423
15 2.0 0.2 0.018423
16 2.0 0.2 0.018423
17 2.0 0.2 0.018423
18 2.0 0.2 0.018423
19 2.0 0.2 0.018423
20 2.0 0.2 0.018423
21 2.0 0.2 0.018423
22 2.0 0.2 0.018423
23 2.0 0.2 0.018423
24 2.0 0.2 0.018423
As you can see, the monthly mortality rate is 0.008742 for each month in the first year and 0.018423 for each month in the second year.
Uniform distribution of deaths
In this approach, we assume that the distribution of deaths will be uniform across the year.
@variable()
def month(t):
if t == 0:
return 0
elif t % 12 == 0:
return 12
else:
return t % 12
@variable()
def monthly_mortality_rate(t):
return ((1/12)*yearly_mortality_rate(t))/(1 - month(t)*1/12*yearly_mortality_rate(t))
@variable()
def survivors(t):
if t == 0:
return 1
else:
return survivors(t-1) * (1 - monthly_mortality_rate(t-1))
@variable()
def deaths(t):
return monthly_mortality_rate(t) * survivors(t)
With the uniform distribution of deaths, the number of deaths per month remains constant within a year.
# output
t month year yearly_mortality_rate monthly_mortality_rate survivors deaths
0 0.0 0.0 0.0 0.000000 1.000000 0.000000
1 1.0 1.0 0.1 0.008403 1.000000 0.008403
2 2.0 1.0 0.1 0.008475 0.991597 0.008403
3 3.0 1.0 0.1 0.008547 0.983193 0.008403
4 4.0 1.0 0.1 0.008621 0.974790 0.008403
5 5.0 1.0 0.1 0.008696 0.966387 0.008403
6 6.0 1.0 0.1 0.008772 0.957983 0.008403
7 7.0 1.0 0.1 0.008850 0.949580 0.008403
8 8.0 1.0 0.1 0.008929 0.941176 0.008403
9 9.0 1.0 0.1 0.009009 0.932773 0.008403
10 10.0 1.0 0.1 0.009091 0.924370 0.008403
11 11.0 1.0 0.1 0.009174 0.915966 0.008403
12 12.0 1.0 0.1 0.009259 0.907563 0.008403
13 1.0 2.0 0.2 0.016949 0.899160 0.015240
14 2.0 2.0 0.2 0.017241 0.883920 0.015240
15 3.0 2.0 0.2 0.017544 0.868680 0.015240
16 4.0 2.0 0.2 0.017857 0.853440 0.015240
17 5.0 2.0 0.2 0.018182 0.838200 0.015240
18 6.0 2.0 0.2 0.018519 0.822960 0.015240
19 7.0 2.0 0.2 0.018868 0.807720 0.015240
20 8.0 2.0 0.2 0.019231 0.792480 0.015240
21 9.0 2.0 0.2 0.019608 0.777240 0.015240
22 10.0 2.0 0.2 0.020000 0.762000 0.015240
23 11.0 2.0 0.2 0.020408 0.746760 0.015240
24 12.0 2.0 0.2 0.020833 0.731520 0.015240
With the uniform distribution of deaths, the number of deaths amounts to 0.008403 in each month of the first year and 0.015240 in each month of the second year.
Thank you for reading this post! I hope you found it valuable. Feel free to leave a comment below or on github with your thoughts or any questions you may have. Your feedback is important to us. Happy reading!