Monthly mortality rates

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:

  1. Transformation methods
  2. Practical applications

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!

Read also:

Log in to add your comment.