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 leasttmore years.t_q_x= probability that(x)dies withintyears= 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 x | l_x | d_x = l_x - l_(x+1) | q_x = d_x / l_x |
|---|---|---|---|
| 60 | 100,000 | 1,000 | 0.010000 |
| 61 | 99,000 | 1,080 | 0.010909 |
| 62 | 97,920 | 1,170 | 0.011949 |
| 63 | 96,750 | 1,270 | 0.013127 |
| 64 | 95,480 | 1,380 | 0.014453 |
| 65 | 94,100 | 1,500 | 0.015940 |
| 66 | 92,600 | 1,630 | 0.017603 |
| 67 | 90,970 | 1,770 | 0.019457 |
| 68 | 89,200 | 1,920 | 0.021525 |
| 69 | 87,280 | 2,080 | 0.023831 |
| 70 | 85,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 byl_x, the starting age, never by a later age. - Confusing
t_q_xwitht|q_x. The first is "dies withintyears"; the second is "survivestyears, 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_xfork = 1, 2, ....
Try it
In the Do tab, turn this life table into Python functions for survival, death and deferred death probabilities.