Project simplelife

This project includes the simplelife model, which is an annual projection model of basic traditional life policies. The simplelife model is designed in such a way that allows you to trace calculations for each individual model point, so it can be a good reference for building validation models.

A simplelife model projects life insurance cashflows and their present values for policies represented by model points. Projected items include:

  • Premium income,

  • Commissions and expenses,

  • Benefit outgo.

Cells for investment income, change in reserve and profits are included but not tested.

The cashflow projection is carried out in the Projection Space. Most Cells in the Projection Spaces are defined in its base Spaces, BaseProj and PV. The Projection is parametrized with PolicyID, so Projection[1] represents the Projection Space for Policy 1. The present values of the cashflow items are also calculated in the Projection Spaces. For example, the expression simplelife.Projection[1].PV_NetCashflow(0) returns the present value of net cashflows for Policy 1.

The Projection Space has child Spaces, Policy and Assumptions. The Policy Space contains Cells representing policy attributes, such as product type, issue age, sum assured, etc. It also contains Cells for calculating policy values such as premium rates and cash surrender value rates. The Assumptions Space contains Cells to pick up assumption data for its model point.

The Input Space is for storing input data read from the Excel input file, input.xlsx.

Input data, such as:

  • model point data,

  • product specs,

  • actuarial assumptions,

  • economic scenarios,

are read from an Excel input file, which is in the model folder. The Space contains References that hold ExcelRange objects.

Premium rates are calculated using commutation functions and actuarial formulas. Commutation functions are calculated for each combination of mortality table IDs, sex and constant interest rates in LifeTable Spaces.

Cash surrender values are calculated as net premium reserves net of surrender charges. The net premium reserves are calculated using the same commutation functions as the ones used by the premium rate calculation.


The simplelife model is designed with a focus more on traceability than speed and is best suited for model validation. To build a fast model, you should take the parallel modeling approach as employed by Project fastlife.

How to use the project

Create a project folder from IPython in Spyder. as explained in Copying a Library section. Read the model in Spyder by following the steps in Reading a Model section.

The model become accessible as simplelife global variable in the IPython console in Spyder.

There is no explicit ‘Run’ command to run the model. The model calculates its values on the fly, when requested.

Model structure

Composition Structure

The diagram below shows the spaces in the simplelife model.

blockdiag simplelife Projection [PolicyID, ScenID=1] Economic[ScenID] LifeTable [Sex, IntRate, TableID] Input BaseProj PV Assumptions Policy

Inheritance Structure

The Projection Space inherits from BaseProj and PV.

blockdiag BaseProj PV Projection

Jupyter Notebooks

A live version of the Jupyter notebook below is available online, thanks to Binder.

Launch this sample now!

  • simplelife Space Overview launch binder

Space Details


Input from files


Commutation functions and actuarial notations


Economic scenarios


Base Space for the Projection Space.


Present Value mix-in Space


Space for cashflow projection.


Policy attributes and policy values


Assumption input and calculations for individual policies.