Skip to main content
Back to module
Actuarial Mathematics · Life Contingencies

Survival models and life tables

Reading38mLesson 1 of 3 in this module

Read a life table and turn it into survival and death probabilities for any age and period.

Why it matters

Life insurance, annuities and pensions all pay (or stop paying) when someone dies, so their value depends on how likely a person is to be alive at each future date. Actuaries summarise those probabilities in a survival model, usually presented as a life table. Everything in the rest of this module (insurance prices, annuity values, reserves) is built from the few probabilities you learn to read here. This material is the start of the SOA long-term actuarial mathematics exams.

The survival function

Let T_x be the future lifetime of a person aged exactly x, written (x). Two probabilities are used constantly:

  • t_p_x = probability that (x) survives at least t more years.
  • t_q_x = probability that (x) dies within t years = 1 - t_p_x.

When t = 1 the t is dropped: p_x and q_x. So q_65 is the probability that a 65-year-old dies before 66. The mortality rate q_x rises with age for adults, which is the single most important fact about human mortality.

A useful identity: surviving 5 years means surviving each year in turn, so

5_p_60 = p_60 * p_61 * p_62 * p_63 * p_64

The life table

A life table starts with a large imaginary group, the radix (say 100,000 people at age 60), and lists l_x, the expected number still alive at each age. The illustrative table below is made up for teaching (real tables, such as the SOA's published mortality tables or national population tables, have many more ages and are based on data):

age xl_xd_x = l_x - l_(x+1)q_x = d_x / l_x
60100,0001,0000.010000
6199,0001,0800.010909
6297,9201,1700.011949
6396,7501,2700.013127
6495,4801,3800.014453
6594,1001,5000.015940
6692,6001,6300.017603
6790,9701,7700.019457
6889,2001,9200.021525
6987,2802,0800.023831
7085,200

From the l_x column alone you can answer any survival question between ages in the table:

t_p_x = l_(x+t) / l_x
t_q_x = (l_x - l_(x+t)) / l_x

Worked examples

Survive 5 years from 60: 5_p_60 = l_65 / l_60 = 94,100 / 100,000 = 0.941.

Die within 3 years from 65: 3_q_65 = (94,100 - 89,200) / 94,100 = 0.052072.

Deferred death probability. u|t_q_x is the probability that (x) survives u years and then dies in the following t years. For a 60-year-old dying between 62 and 65:

2|3_q_60 = (l_62 - l_65) / l_60 = (97,920 - 94,100) / 100,000 = 0.0382

Deferred probabilities with t = 1, k|q_x = (l_(x+k) - l_(x+k+1)) / l_x, are exactly what you need to price insurance in the next lesson: they are the probabilities that the benefit is paid in year k + 1.

Expected future lifetime. The curtate expectation e_x (complete years lived) is the sum of the survival probabilities: e_x = 1_p_x + 2_p_x + 3_p_x + .... Over just the 10 years in our table, a 60-year-old is expected to live 0.99 + 0.9792 + ... + 0.852 = 9.285 complete years.

lx = {60: 100000, 61: 99000, 62: 97920, 63: 96750, 64: 95480, 65: 94100}

def tpx(x, t):
    return lx[x + t] / lx[x]

print(tpx(60, 5))  # 0.941

Models behind the table

Tables can be generated from a formula. In Gompertz's law the force of mortality mu_x = B * c^x grows exponentially with age, and Makeham adds a constant A for accidents. Survival analysis in statistics (Kaplan-Meier, hazard functions) uses the same ideas. Real work also uses select tables (recently underwritten lives die less in the first years) and mortality improvement scales (people live longer each calendar year).

Common mistakes

  • Dividing by the wrong l. Probabilities for (x) always divide by l_x, the starting age, never by a later age.
  • Confusing t_q_x with t|q_x. The first is "dies within t years"; the second is "survives t years, then dies in the next one".
  • Adding probabilities across ages. Survival probabilities multiply across years; they do not add.
  • Using a table outside its population. Insured lives, annuitants and the general population have different mortality.

Quick recap

  • t_p_x = l_(x+t)/l_x, t_q_x = 1 - t_p_x, q_x = d_x/l_x.
  • u|t_q_x = (l_(x+u) - l_(x+u+t))/l_x.
  • Curtate expectation = sum of k_p_x for k = 1, 2, ....

Try it

In the Do tab, turn this life table into Python functions for survival, death and deferred death probabilities.

Also in this lesson: