When is the best age to begin a life insurance policy? If I begin the policy too young I’ll end up paying in a lot more, with little risk of dying young. However if I plan to begin the policy at a later age then there is a higher risk of me dying before I take out the policy, leaving my descendants with nothing. Using some probability I’ll find a naïve optimal age to begin a life insurance policy.

Let’s assume I’m planning on taking out a whole life level policy; so I’ll pay a fixed amount every month of my life until I die; and my descendants will receive a fixed lump sum once I pass. Using dubious sources the average monthly cost is £30.40, for a policy worth £100,000. (There are a huge amount of policies out there, some much cheaper! This is used as an illustrative example).

>>> year_cost = 30.40 * 12
>>> payoff_after_death = 100000

In this post we’ll be taking the product of a list of numbers, so define a function to do just that:

from math import log, exp
def prod(data):
    return exp(sum(map(log, data)))

First let’s define \(m_i\) as the probability of dying at age \(i\). Using ONS data this is freely available, as described in a previous blog post (stored as the list mortalities in this code).

Say I plan to take out an insurance policy at age \(i\), define \(s_i\) as my probability of surviving up to the point I take out the policy:

\[s_i = \prod_{j=0}^i \left(1 - m_i\right)\]
>>> prob_survive_to_insurance = [prod([1 - m for m in mortalities[:age_start]]) for age_start in range(102)]

Similarly, if I live to take the policy out at age \(i\), my chance of living until age \(j\) is \(\prod_{k=i}^j \left(1 - m_{i + k}\right)\). And so my expected number of years left to live after taking out my policy at age \(i\) is:

\[y_i = \sum_{j = i}^\infty \prod_{k=i}^j \left(1 - m_{i + k}\right)\]
>>> expected_years_left_after_policy_start = [sum([prod([1 - m for m in mortalities[age_start:age_die]]) for age_die in range(age_start, 102)]) for age_start in range(102)]

Let’s say my policy costs \(\kappa\) pounds a month, and once I’m dead my descendants will receive a lump sum of \(F\) pounds.

After beginning a policy at age \(i\) my expected lifetime contribution is:

\[c_i = \kappa y_i\]
>>> expected_lifetime_payment = [year_cost * years for years in expected_years_left_after_policy_start]

And so my descendants’ expected profit, \(p_i\), is \(F - c_i\) if I live to the age \(i\) where I begin my policy, and £0 is I don’t:

\[p_i = s_i \left(F - c_i\right)\]
>>> expected_payoff_per_year = [s * (payoff_after_death - cost) for s, cost in zip(prob_survive_to_insurance, expected_lifetime_payment)]

From this function we can find the age at which to begin the policy in order to maximise expected profit:

>>> max_payoff = max(expected_payoff_per_year)
>>> optimal_age = expected_payoff_per_year.index(max_payoff)

Which gives the optimal age to begin this policy at 56, yielding a profit of £85,191.49.

Note: This post is a huge simplification of real life, ignoring many important things such as interest rates. It also assumes that I don’t have any debts, morgages etc. This post should not be taken as financial advice!