Actuarial / Life Insurance · 2026

Mdingi Life

A South African life insurer modelled end to end, on real deaths, bond and capital data

Context & Problem

A chat prompt about pricing a funeral rider during AIM vac work, asking for a case study brief for a whole South African life insurer
The prompt the project started from.

In January 2026 I was part of the Actuaries in the Making (AIM) vacation work programme, which is run by the Actuarial Society of South Africa. My group was led by an actuary from Liberty, and our task was to price a funeral benefit that financial advisers could add to one of the company's risk products. The pricing had to start from the premium rates of a funeral product the company already sold online, and we had two weeks to do it. After several rounds of research, assumptions and changes to the pricing basis, we settled on a funeral rider to the risk product, together with a quote tool that projected the premiums five years ahead.

The rider passed the checks we had at the time. However, those checks only looked at the benefit on its own. I wanted to see how a funeral product priced in a similar way would behave inside an insurer that also sells other products, where every line draws on the same capital and a wrong assumption in one of them affects the company as a whole. I was also finishing my honours in risk analysis, so I asked for a case study brief that would make me build such an insurer.

The brief that came back described a new South African life insurer selling pensions for life and funeral cover. Its board wanted four things answered: what to charge, what the company owes on the policies it sells, how much capital the regulator requires under SAM, and whether it stays solvent over the next five years.

What I built

The front page of the Mdingi Life website
Mdingi Life's website.

What I ended up with is Mdingi Life as a working company. It is a South African life insurer that sells a pension that pays an income for as long as the customer lives, and funeral cover that pays upon death.

The two products are affected in opposite ways when people live longer than expected. The pensions are paid for more years, while the funeral claims arrive later. The insurer sells both in a mix chosen to balance them, and the sections below go through how this is achieved.

Visit the websiteCode on GitHubSlides

How I built it

Mdingi Life is built on three sets of real data. From Stats SA's registered deaths, distributed by DataFirst as unit records, I counted deaths by age, sex and year from 1997, and divided them by the UN's population estimates from World Population Prospects 2024 to get death rates. From the National Treasury's auction results for fixed-rate and inflation-linked government bonds, I fitted a yield curve for each auction day, and the gap between the two curves gives the inflation the market expects. From the Prudential Authority's Financial Soundness Standards, I took the parameters of the SAM standard formula. The customers, their policies, the running costs and the R400m of capital are invented, and the customers are drawn with a fixed seed so the same book comes out every time.

I used the death rates to fit and backtest the mortality models, and the chosen model, together with the yield curves, gives the pension prices and funeral premiums. Applied to the invented book, the same assumptions give what the company owes on its policies, and the standard formula turns that into the capital it must hold. The yield curves also feed a scenario generator, which produces 1,000 five-year paths for interest rates and inflation. I projected the company along each path and through five named stresses, with its IFRS 17 profit rolled forward alongside. The results are written to a single file, which a FastAPI service on Azure serves to the company's website.

From data to the website
DataPreparedModelsValuationFive yearsWebsiteStats SA's registered deaths, as unit records distributed by DataFirst, counted by age, sex and year from 1997.Registered deathsStats SA, via DataFirstThe UN's mid-year population by age and sex, the number of people who could have died.PopulationUN WPP 20244,610 yields from National Treasury auctions of fixed-rate and inflation-linked bonds, April 2010 to September 2026.Bond auctionsNational TreasuryThe parameters of the SAM standard formula, from the Prudential Authority's Financial Soundness Standards.Capital rulesPrudential AuthorityThe customers and their policies, the running costs and the R400m of capital, all invented. The customers are drawn with a fixed seed.Customersinvented, fixed seedDeaths divided by population, adjusted for deaths at older ages that are not registered.Death ratesby age, sex and yearA curve for each auction day, fixed-rate and inflation-linked. The gap between the two is the inflation the market expects.Yield curvesand expected inflationLee-Carter, Cairns-Blake-Dowd and Renshaw-Haberman, each scored on years it had not seen. Renshaw-Haberman was chosen.Mortality modelsfitted and backtested1,000 five-year paths for interest rates and inflation, from the fitted curve factors.1,000 scenariosrates and inflationWhat a customer pays: one amount for a pension, or a monthly premium for funeral cover.Pricespensions and funeral coverThe best-estimate liabilities and the risk margin: what the company expects to pay its customers, valued on the curves.What it owesliabilities and risk marginThe solvency capital requirement under the standard formula, R222m, and the cover ratio.Capital requiredSCR and coverThe company along each of the 1,000 paths and through five named stresses. 95.6% of paths stay above 100% at every year-end.Projectionand five named stressesThe contractual service margin, the profit the company has not yet earned, rolled forward each year.IFRS 17profit not yet earnedOne file, written by the export script, holding every result the site shows.Results fileevery number on the siteA FastAPI service on Azure serves the results file and the company's website.WebsiteFastAPI on Azure

Hover over a step to see what it is and the path it sits on.

Each box is a step in the code. The dashed box is invented, and the rest of the first column is real data.

The data

The raw data is what I downloaded: Stats SA's death records, the UN's population estimates, the National Treasury's auction results and the Prudential Authority's standards. The prepared data is what the models read after cleaning: death rates by age, sex and year, a yield curve for each auction day, the inflation the market expects, and the invented book. DataFirst's terms do not allow the death records to be republished, so the charts and tables below show counts, rates and summary statistics computed from them.

What went in, and what came out of preparing it
SourceRawPrepared
Stats SA death records, 1997 to 2024, distributed by DataFirst13,596,631 records in three files, one for each death, with the year, age, sex and cause. 81,897 have no age and 43,303 no sex. 2023 holds only 6,693 records, all late registrations.Deaths by single age, sex and year, with the unknown ages and sexes shared out in proportion, stillbirths dropped and 2023 left out. Ages 50 to 89 go to the mortality models, and deaths by cause to the 2024 funeral table.
UN World Population Prospects 2024Population at 1 July and deaths, by single age, sex and year.The population each death rate is divided by, checked against Stats SA's mid-year estimates, Census 2011, the 2016 Community Survey and Census 2022. The UN's deaths show how complete registration is.
National Treasury bond auction results4,705 results from 6 April 2010 to 29 September 2026, for 21 fixed-rate and 14 inflation-linked bonds, each with its clearing yield.4,610 usable yields (2,361 fixed-rate, 2,249 inflation-linked), of which 9 were screened out. A yield curve for each auction day, and 178 month-end readings of the inflation the market expects.
National Treasury Schedule of Domestic DebtThe coupon and redemption date of each bond.The cash flows each clearing yield is priced on.
Prudential Authority Financial Soundness StandardsThe SAM standard formula: its shocks, correlations and cost of capital.The parameters of the capital model.
Invented5,000 annuities and 50,000 funeral policies drawn with a fixed seed, the running costs and R400m of capital.A book of 676 annuitants and 212,455 funeral policies.

The death records cannot be republished under DataFirst's terms, so everything shown in this section is a count, rate or summary computed from them.

Each death record gives the year, the person's age and sex, and the cause of death. Not every death in South Africa is registered, and from 1997 to 2022 the registered deaths came to between 75% (1997) and 94% (2009) of the UN's estimate of all deaths. Registration is more complete at older ages. At 50 to 89, the ages the mortality models are fitted on, the share ranged from 79% for women in 1997 to 101% for men in 2006. The 2023 file holds only 6,693 records, all of them late registrations, so that year is left out, and 2024 is back to 80%.

Registered deaths each year, against the UN's estimate of all deaths

Registered with Stats SAUN estimate

0200k400k600k800k19972000200520102015202020242023 left out

2009: 584,691 deaths registered against the UN's 624,186, 94% of them. At ages 50 to 89: women 94%, men 100%.

All ages. The share at ages 50 to 89 is from the model's completeness check, which runs to 2022.

Dividing the deaths at each age by the UN's population at that age gives a death rate. The models use the registered deaths as they are, and a version scaled up to the UN's totals was run only as a sensitivity. The rates rose to 2006 during the HIV epidemic, were lower again by 2019, and rose sharply in 2021 with COVID-19. The models are fitted from 2006, after the peak.

Death rates by age, the prepared data the models are fitted on
Year

WomenMen

5102050100200per 1,000505560657075808589womenmen

In 2021, 58 of every 1,000 men aged 70 died, and 40 of every 1,000 women. Against 2019, that is 26% higher for men and 40% higher for women.

Registered deaths divided by the UN's population at 1 July, on a log scale so that equal steps up are equal percentage rises. The models are fitted from 2006.

The Treasury publishes the result of every government bond auction. From April 2010 to September 2026 there are 4,705 results for 21 fixed-rate and 14 inflation-linked bonds. Leaving out the auctions where nothing was allocated gives 4,610 clearing yields. I screened out 9 that were more than one percentage point away from a curve fitted to the auctions around them, and repaired 3 settlement dates. The coupons and redemption dates of each bond come from the Treasury's Schedule of Domestic Debt. The gap between the fixed-rate and inflation-linked curves at one year gives the inflation the market expects, which over the 178 month-ends from January 2011 averaged 6.3%, ranged from −8.7% to 15.5%, and stood at 4.6% in September 2026.

Clearing yields at each month's auctions, and the inflation they imply

Fixed-rate bondsInflation-linked bondsExpected inflation, one year ahead

0%4%8%12%-10%-5%0%5%10%15%20122014201620182020202220242026fixed-rateinflation-linkedexpectedinflation

Sep 2026: fixed-rate 8.53% to 9.47%, inflation-linked 4.13% to 4.29%; expected inflation 4.6%.

Top: the range of clearing yields across each month's auctions, with the median as a line. Inflation-linked yields are real, above inflation. Bottom: the gap between the fitted fixed-rate and inflation-linked curves at one year, at each month-end from January 2011. The dashed line is its mean of 6.3%. The 9 screened auctions are left out.

From the Prudential Authority's Financial Soundness Standards I took the parts of the standard formula that apply to this company. Death rates rise by 15% for the funeral cover and fall by 10% for the pensions, with each later year's improvement one percentage point faster. Lapses rise or fall by 50%, and in the mass lapse 40% of policies are cancelled at once. Expenses rise by 10% with inflation 2 percentage points higher, and the risk margin is charged at a 6% cost of capital.

The customers are invented. I drew 5,000 pensioners and 50,000 funeral customers with a fixed seed, so the same book comes out every time, and then gave each drawn policy a weight, which sets the size and mix of the company's book.

The invented book, from the draw to the company
Pensions for lifeFuneral cover
Drawn with a fixed seed5,00050,000
Women49.9%55.1%
Age at the valuation72.6 on average, 56 to 9044.1 on average, 18 to 79
The policymedian income R59,673 a year, 50.3% rising with inflationcover of R10,000 30%, R15,000 30%, R20,000 25%, R30,000 15%; 50.3% age-rated
Running costs, a policy a yearR600R180
Weight on each drawn policy0.1354.249
In the company's book676212,455

The weights give enough funeral cover to offset the pensions' longevity risk, and a book that R400m of own funds covers 1.8 times.

Mortality models

I fitted three models of how death rates change over time: Lee-Carter, Cairns-Blake-Dowd and Renshaw-Haberman. Each was fitted twice, once on the full run from 1997 and once from 2006, after the peak of the HIV epidemic, and every model did better on the shorter run. To choose between them, I fitted each one to the deaths up to 2016 and asked it to predict 2017 to 2019, then compared the predictions with what was registered. The tests were that a model must beat simply repeating the last three years' rates, that the shorter run must beat the full run, that at least 90% of the observed rates must fall inside the model's 95% range, and that the price of a pension at 65 must be within 2% of the price on the observed rates.

The backtest: fitted to 2016, scored on the deaths of 2017 to 2019
Sex
Deviance, lower is better02k4k6k8k6,8354,6573,3591,648Rates inside the 95% range0%25%50%75%100%no range27%45%55%Error in the price at 650%1%2%3%2.5%1.8%0.8%1.6%No improvementLee-CarterCairns-Blake-DowdRenshaw-Haberman

Renshaw-Haberman, men: a deviance of 1,648, 76% below the model with no improvement, with 55% of the observed rates inside its 95% range. The price of a pension at 65 was out by 1.6% on average.

Ages 50 to 89, each model fitted from 2006. The vertical lines are the pass marks: 90% of rates inside the range, and the price of a pension at 65 within 2%. The model with no improvement repeats the last three years' rates and has no range.

Renshaw-Haberman, which adds a term for the year each person was born, came closest for both sexes and was chosen. It passed three of the tests and failed the third: only 55% of the observed rates for men and 79% for women fell inside its range. The model's central prices are kept, but its ranges are too narrow, so the ranges on the pension prices are lower bounds on the uncertainty. Fitted from 2006 to 2019, it prices a pension of R1 a year from 65 at R13.53 for a man and R16.05 for a woman, at a 4% interest rate. As a check I fitted the same models to the UN's death rates. There, Cairns-Blake-Dowd was chosen and the prices were R11.04 and R13.02, so the Stats SA prices are about 23% higher for both sexes. Most of that gap comes from the choice of model and fitting run, and the incomplete registration of deaths explains between a tenth and a third of it.

Scaling the deaths up for registration, averaging the models, letting each sex choose its own fitting run and smoothing the birth-year term all failed to fix the ranges. Each left them too narrow, made them too wide or priced a woman's pension below a man's, so the prices above stand, with ranges that are lower bounds.

Yield curves

A yield curve gives the interest rate for each length of time, and I needed one on the valuation date for each kind of bond, fixed-rate and inflation-linked. I compared three curves: a straight line joining the bonds' yields by maturity, Nelson-Siegel, and its extension by Svensson, which adds a second hump. The benchmark was simply to take each bond's own last clearing yield. Each curve was fitted on the auctions of the 91 days before an auction day and used to predict that day's clearing yields. The curve was chosen on the auctions from 2010 to 2017, and the auctions from 2018 to September 2026 were scored once, after the choice. The tests were that the chosen curve beats the benchmark, that Svensson beats Nelson-Siegel, and that the error is under 25 basis points, a quarter of a percentage point.

The curve backtest: each auction predicted from the 91 days before it
Bonds
Design, 2010 to 2017: chooses the curve010203040not used to choose27.928.930.3Validation, 2018 to 2026: run once01020304036.035.432.933.3Each bond's last yieldLinear (chosen)Nelson-SiegelNelson-Siegel-Svensson

Linear, fixed-rate bonds: 27.9 basis points in the design period, 35.4 in validation, and 28.9 in validation without March to May 2020.

Root mean squared error in basis points (a hundredth of a percentage point) on 1,041 auctions in the design period and 1,245 in validation. The design scores are on the auctions every curve could price; repeating each bond's last yield was the benchmark to beat in validation.

The straight line had the smallest error from 2010 to 2017 for both kinds of bond and was chosen. In validation it beat the benchmark by less than one basis point for both kinds, because the Treasury auctions the same few bonds week after week and most bonds' last yields are recent. Svensson did not beat Nelson-Siegel, and the fixed-rate error of 38.2 basis points failed the 25-point test, while the inflation-linked error of 23.5 passed. Nelson-Siegel would have done 2 to 2.5 basis points better out of sample, but the choice stands as it was made. The months of March to May 2020 alone add 6 to 9 basis points to the fixed-rate error.

A straight line through the yields gives a bond's yield, but pricing a pension needs the rate for each single future payment. On the valuation date I built that curve from the same bonds, setting the rate between one bond's maturity and the next so that every bond is priced exactly at its clearing yield. Beyond the longest bond the rate is held flat. The weakness of this method shows at the long end of the fixed-rate curve. R2042 and R2044 mature less than three years apart, which leaves 12.45% on the last stretch, held flat beyond 18 years, where Nelson-Siegel gives 10.55%. On the inflation-linked curve, whose longest bond runs 31 years, the rates stay between 3.5% and 4.6%.

The window of auctions behind each curve, at the end of every quarter
Bonds

LinearNelson-SiegelNelson-Siegel-SvenssonClearing yields

4%6%8%10%12%05 years10 years15 years20 years25 years30 yearsR2033: 8.75% at 6.5 yearsR2037: 9.12% at 10.4 yearsR2038: 9.21% at 11.5 yearsR2039: 9.31% at 12.5 yearsR2040: 9.44% at 13.4 yearsR2042: 9.47% at 15.5 yearsR2044: 9.39% at 18.4 years

On 29 September 2026, 7 fixed-rate bonds were in the window, from 6.5 to 18.4 years. At 10 years: linear 9.08%, Nelson-Siegel 9.15%, Nelson-Siegel-Svensson 9.05%.

Dots are the latest clearing yield of each bond auctioned in the 91 days up to the date. The linear curve joins them and is held flat beyond them. The Nelson-Siegel curves are drawn as the yields of bonds priced at par, so they sit on the same scale. Past the longest bond, every curve is an extrapolation.

Prices

A pension for life is priced as the value today of every monthly payment the customer is expected to live to receive. The death rates come from the Renshaw-Haberman model of the mortality section, multiplied by 0.7 because people who buy pensions tend to live longer than the population. The 0.7 is an assumption, since no South African pensioner data is public. An income that rises with inflation is discounted on the inflation-linked curve and a level income on the fixed-rate curve, both on the valuation date of 25 September 2026. A pension of R1 a year from 65, rising with inflation, costs R15.67 for a woman and R13.22 for a man. A level income costs about 55% to 65% as much, because fixed-rate yields near 9.5% to 10% discount it more heavily. The inflation-linked curve is worth a flat real rate of 4.2%, close to the 4% used in the mortality section. The ranges carry the uncertainty in the death rates only, and are lower bounds for the reason given there.

What a pension for life costs
Customer
Retiring at
Income

A woman retiring at 65 on R10,000 a month, rising with inflation, pays R1.88m once, somewhere between R1.80m and R1.96m.

R0R1mR2mwoman, 55: R2.21m (R2.04m to R2.35m)woman, 55woman, 65: R1.88m (R1.80m to R1.96m)woman, 65woman, 75: R1.44m (R1.35m to R1.54m)woman, 75man, 55: R1.93m (R1.79m to R2.07m)man, 55man, 65: R1.59m (R1.54m to R1.65m)man, 65man, 75: R1.14m (R1.10m to R1.19m)man, 75

One payment at retirement buys an income for life. Priced on Stats SA deaths from 2006 to 2019 and the government bond curves of 25 September 2026. The bars are the model's 95% ranges, which in the backtest contained 79% of death rates for women and 55% for men.

Funeral cover pays a fixed sum of R10,000 to R30,000 on death, and is priced on a separate table built for younger ages. I graduated Stats SA's registered death rates for 2024 and projected them with a Lee-Carter model for each of three groups of causes: HIV-related, external causes such as accidents and violence, and all other causes. After 2050 the improvement continues at each age's 2050 pace. I built this table with its results in view, so it is a judged basis that was never backtested. The deaths are not scaled up for registration, so if registration is incomplete the premiums are too cheap, and the SAM mortality stress carries that risk. Premiums are priced at 9% interest, with R180 a year of running costs rising at 5% and a 20% margin.

Customers choose how to pay. A level premium stays the same for life. An age-rated premium follows a schedule set at sale, starting lower and rising with age, and every five years the company may reprice the schedule for all age-rated customers together, without new medical checks. Because the repricing cannot be done customer by customer, SAM's rules still treat the policy as lasting for life, so every future premium on the schedule counts in the valuation. A woman who buys R15,000 of cover at 35 pays R43 a month level, or R23 to start on the age-rated schedule. The age-rated premium passes the level one at 49, and by 60 she has paid more in total. The customers who keep an age-rated policy the longest pay the most.

Monthly premium: the same for life, or rising with age
Customer
Cover

At 35, a woman buying R15,000 of cover pays R43 a month for life, or R23 to start if the premium follows her age. The age-rated premium passes the level one at 49, and by 60 she would have paid more in total.

R0R200R4003540506070809090levelage-rated

At 49: level R43, age-rated R45 a month

Monthly premiums on Mdingi Life's own rates: expected claims plus running costs of R180 a year rising at 5%, with a 20% margin. The age-rated schedule is set at sale; every 5 years the company may reprice it for all age-rated customers together, with no health check.

Balance sheet and capital

On the valuation date the company owes its customers a best-estimate liability (BEL) of R349.0m. This is the expected value of everything it will pay out, less the premiums it will receive, discounted on the curves of the yield section. The pensions account for R531.0m. The funeral line's BEL is −R182.0m, because the R706.1m of premiums it expects is more than its R188.7m of claims and R335.4m of running costs together. SAM adds a risk margin of R58.0m on top, which is roughly what another insurer would charge to take the book over: 6% a year on the capital it would have to hold until the last policy ends. Against this the company holds R807.0m of assets. R349.0m is in government bonds, chosen so that their value moves with the BEL when rates change at each of four terms on each curve. R418.9m is in a 182-day Treasury bill, and R39.0m is premiums held by collectors and cash at a bank. What is left after the BEL and the risk margin, R400m, is the company's own funds.

South African insurers have been regulated under the Solvency Assessment and Management framework (SAM) since July 2018. Under SAM an insurer has to hold enough capital to get through a year that is expected once in 200 years. That amount is the solvency capital requirement (SCR). The standard formula finds it by applying a set stress for each risk and measuring how far own funds fall, then combining the falls with set correlations. Mdingi Life's SCR is R222.2m, so its own funds cover it 1.8 times.

From each stress to the SCR, in R million

Funeral coverPensionsWhole book

0100200300400own funds 400Mortality27.7Longevity38.2Lapse89.4Expense97.7Catastrophe9.5Interest rates112.0Default2.7Diversification−161.0Operational6.0SCR222.2

Interest rates: Fixed-rate yields rising by SAM's set shock, 29% of the yield at 10 years. The funeral line's future profits lose value, and no bonds are held against them: R112.0m.

Each bar is the fall in own funds under one of the standard formula's stresses on 25 September 2026, coloured by the line it comes from. Interest rates, default and operational risk are charged on the whole book.

The largest charge, R112.0m, comes from fixed-rate yields rising. The funeral line's future profits are valued on the fixed-rate curve, and protecting them would mean selling bonds the company does not own, which the matching rule does not allow. Among the insurance risks, running costs rising is the largest at R97.7m, followed by customers cancelling at R89.4m. Both come almost entirely from funeral cover, so the funeral line produces most of the SCR although the pensions make up most of the BEL.

The book has 676 pensioners and 212,455 funeral policies. The mix is set by a rule: enough funeral cover that an error in the level of death rates leaves the total BEL unchanged, since what the pensions lose when people live longer, the funeral line gains. The offset only holds for the level of death rates. If they improved 1 point a year faster than assumed, the pensions would lose R18.0m and the funeral line would gain only R10.9m. SAM also treats mortality and longevity as separate risks with a correlation of −0.25, so it recognises only part of the offset, and both charges appear in the SCR.

The smallest charge, R2.7m, is for counterparty default: the firms that collect premiums and the bank that holds the company's cash. The company's largest credit exposure carries no charge at all. Of what it owns, 95% is South African government bonds and bills, and the standard formula charges nothing for default on rand government debt. Real South African insurers are in a similar position, because rand government bonds are the main way to match long-term rand liabilities, and South Africa's debt has been rated below investment grade by S&P and Fitch since 2017 and by Moody's since 2020. A loss of 23% on the government's bonds and bills would take cover down to 100%, and a loss of 52% would leave no own funds.

If the government didn't pay in full

Cover 180%, with R400m of capital left against a requirement of R222m. Cover reaches 100% at a loss of 23%.

95% of what the company owns is South African government bonds and bills, on which the regulator's formula charges nothing for default. This applies one loss to all of them and holds the capital requirement where it is; a real default would also move interest rates, the rand and how many customers leave.

Five years ahead

The SCR describes the company on one date. To see how cover changes over time, I projected the company five years ahead on 1,000 simulated paths for the two bond curves. Each curve is reduced to a level and a slope, and each of the four follows its own autoregressive process, fitted to month-end curves from 2011 to September 2026. Inflation on each path comes from the gap between the two curves. At every year-end the book is valued again, its bonds are rematched and the SCR is worked out afresh. As a check on the paths, I compared the spread of a year's change in the 10-year rate with history: the paths spread 1.32 times as much for fixed-rate yields and 1.16 times for real yields, inside the 0.75 to 1.33 I allowed. The target was cover above 100% at every year-end on at least 95% of paths. Starting from R400m, 95.6% stay above it.

Cover over five years, across 1,000 paths
Starting capital
Stress

Middle half of pathsMiddle 90%MedianRates as expected

0%100%200%300%400%202620272028202920302031100%, the minimum

After 5 years: half the paths are above 287%, and one in 20 is below 178%. With rates as expected, cover is 282%. 95.6% of paths stay above 100% at every year-end, and the lowest cover on any path is 58%.

Each path is one simulated future for both bond curves and inflation, with the bonds rematched to the liabilities at every year-end. The bands hold the middle half and the middle 90% of the paths at each year-end, so a single path can leave them.

I also applied five named stresses: both curves 1.5 points lower at once, pensioners' death rates 20% lower for good, a year with the death rates of 2021 instead of 2019 (35% higher for women and 25% for men), 30% of funeral customers cancelling at once, and the first, third and fourth together. From R400m none takes cover below 100%, so none needs new capital. The lowest is pensioners living longer, at 161%. A wave of cancellations raises cover to 229%, because the policies that leave take their share of the SCR with them: own funds fall by R40m and the SCR by R65m.

Alongside SAM, I rolled the IFRS 17 accounts forward, which report profit rather than capital. At transition the risk adjustment is set equal to the risk margin, R58.0m, which works out to about an 82% confidence level. The contractual service margin (CSM), the profit not yet earned, is R38.6m at a 10% cost of capital. With rates as expected, profit rises from R20.4m in the first year to R50.0m in the fifth. Most of it is the finance result, the investment return on own funds and on the assets behind the liabilities: R14.0m of the first year's profit and R44.9m of the fifth's. The CSM barely moves, from R38.6m to R40.1m. Pensioners living longer would use up the pensions' CSM of R9.5m and leave a loss of R32.2m. The wave of cancellations would use up the funeral CSM of R29.2m and leave a loss of R11.4m.

I also started the same book from just enough capital for a cover of 100%, R218.3m, to see how often a company at the minimum falls below it. This is where the funeral premium choice makes a difference.

Share of paths that stay above 100%
Starting capital
Funeral premiums
22.7%of paths stay above 100% at every year-end, starting from R218m of capital.

Paths below 100% at each year-end

51%2027
34%2028
18%2029
14%2030
7.1%2031

Three of the five stresses take it below 100%: rates fall (lowest 90%), pensioners live longer (lowest 80%), a pandemic year (lowest 99%).

1,000 simulated paths for interest rates and inflation, five years each, plus five named stresses. The capital that changes is held in a Treasury bill, and the bonds stay matched to the liabilities. The book with level premiums only has 149,930 funeral policies and the book with half age-rated has 212,455.

When every funeral customer pays a level premium, 63.7% of paths stay above 100% from the minimum. When half pay age-rated premiums, 22.7% do. With rates as expected, own funds grow by R20.7m in the first year against R31.9m with level premiums only, and after a year the charge for fixed-rate risk is R131.2m against R97.0m. Age-rated premiums are low at first and high later, so more of the profit arrives late, on the part of the fixed-rate curve where there are no bonds against it. The book with age-rated premiums is also 42% bigger, which raises the same charges, so these numbers mix the two effects.

Limitations

The customers are invented, and so are the assumptions that drive most of the capital. Two of the three largest charges, for running costs and cancellations, rest on invented assumptions, and the third, for fixed-rate yields rising, comes from the funeral line's future profits, which depend on the same assumptions. The pensions rest on a factor of 0.7 on population death rates, which is also an assumption. The ranges on the pension prices are lower bounds, and the funeral table was built with its results in view and was never backtested.

The interest rate model was fitted to the month-end curves from 2011 to September 2026, and the spread of its paths was checked against the same years, so it shows only that the paths are in line with that history. The sovereign stress applies one loss to the government's bonds and bills and holds the SCR where it is, while a real default would also move interest rates, the rand and how many customers cancel. SAM and IFRS 17 are applied only as far as this company needs them.

Methods: Lee-Carter, Cairns-Blake-Dowd and Renshaw-Haberman mortality, Out-of-sample mortality backtests, Annuity prices with 95% intervals, Nelson-Siegel, Nelson-Siegel-Svensson and bootstrapped zero curves, Best-estimate liabilities (BEL) and risk margin, SAM standard-formula SCR, Key-rate asset-liability matching, 1,000-scenario economic scenario generator, Stress testing, IFRS 17 CSM roll-forward, SAM counterparty default risk, Sovereign reverse stress. Tools: Python, NumPy, pandas, FastAPI, Vite, Docker, Azure.

Data: Statistics South Africa, Mortality and Causes of Death (producer), distributed by DataFirst, University of Cape Town (doi:10.25828/kz4c-9748); National Treasury, Republic of South Africa (investor.treasury.gov.za), used for non-commercial purposes with acknowledgement; UN World Population Prospects 2024.