Products and Policies — The Premium Is Computed
In one line
An insurance product is priced on three assumptions — the risk rate, the interest rate, and the expense ratio — and a contract cycles through a life cycle of application, underwriting, maintenance, renewal, surrender, and lapse — the data of an insurance system sits at the intersection of these two axes.
Why this knowledge is needed
The first things an engineer who joins an insurance company hears are things like "this product is third-sector insurance, so both life and non-life insurers sell it," "the net premium and the expense loading have to be stored separately," and "a lapsed contract is not a surrendered one." If you do not know the structure of products and contracts, you cannot understand why the status column of the contract table has more than ten values, or why the premium column is split into three.
Life insurance, non-life insurance, and third-sector insurance
The domestic insurance business has three branches.
Life Covers a person's survival or death. Whole life, term, annuity, savings. Fixed-amount benefits.
Non-life Covers loss to property. Auto, fire, liability, marine. Indemnity: pays the actual loss.
Third sector Illness, injury, long-term care. Covers people, but can be indemnity or fixed-amount,
so both life and non-life insurers sell it.
This distinction carries straight into regulation and accounting. With fixed-amount benefits, how much will be paid is set at the time of the contract, and with indemnity benefits, the amount is set only when an accident occurs. In a system, for the former the sum insured column is the core, and for the latter the loss adjustment procedure is the core.
A premium is computed
A premium comes from three assumptions. The assumed risk rate (how many die or are injured — life tables and experience rates), the assumed interest rate (how much will be earned by investing the premiums received), and the assumed expense ratio (how much it costs to sell and maintain). What is calculated from the first two is the net premium, and the one with expenses added on top is the gross premium the customer pays. The difference is the expense loading (additional premium).
gross premium = net premium + loading
net premium = risk premium (PV of death/accident benefits) + savings premium (PV of maturity/surrender refunds)
loading = acquisition cost + maintenance cost + collection cost
A product with no refund, such as term insurance, has no savings premium, and whole life and savings-type products have a large share of savings premium. The reason a system stores the premium split into three is that later the reserves, surrender values, and expense results each have to be calculated separately.
When the assumed interest rate falls, the present value of future payouts grows and the premium rises. This is why insurers lower the assumed interest rate and raise premiums when interest rates fall.
The life cycle of a contract
Application The customer applies and discloses health and occupation.
Underwriting The insurer assesses the risk: accept, decline, or accept with conditions (rating, exclusion).
In force The policy takes effect when the first premium arrives; premiums are paid each period.
Renewal Renewable riders re-price at set intervals using updated risk rates.
Surrender The customer ends the policy. Any surrender value is paid out.
Lapse Unpaid premium past the grace period suspends coverage. It can be reinstated within a set period.
Lapse and surrender are different. Surrender is the customer's will and lapse is the result of non-payment, and a lapse can be reinstated. The underwriting result becomes a contract condition — even for the same product, a contract with a surcharge has a different premium, and a contract with an exclusion does not cover accidents to a particular body part. These conditions must remain in the contract data so that when a claim comes in later, you can judge whether to pay.
The speed at which products change sets the system design
What changes most often in an insurance system is not code but products. New riders come out, rates change, and sales are suspended. If you take those changes in as code, deployments get tied to the product launch schedule.
Treat products as data. Put coverages, rates, and underwriting rules in tables, and the code becomes an engine that interprets those tables. A new product becomes a matter of inserting rows into the table, and it can go out without a deployment. In return, validation that catches it when the table is wrong becomes more important than the code.
No rate comes without a date. A contract is maintained under the rules at the time it was concluded, so you must not recompute yesterday's contract with today's rates. Put an effective start date and end date on every rule row, and always pass the reference date along when querying. A function that defaults the reference date to today will someday compute a past contract under today's rules.
A contract is a state machine. Application, underwriting, issuance, maintenance, lapse, reinstatement, surrender, and maturity. If you scatter these transitions as if statements across the code, nobody can say what is possible in which state. Keep a transition table in one place and look only at that.
A correction is not reverting but a new version. When the contract content changes, the old content must remain too. What the conditions were at which point in time decides whether to pay. Instead of updating the contract table, a structure that accumulates change history and computes the current state lasts longer.
Personal information has a different weight. Medical history, diagnosis names, and beneficiary relationships are sensitive information. Leave query logs, mask them on screen, and put them through de-identification when sending them to the analytics system. The habit of copying production data "just for a moment during development" is where accidents start.
What really matters in practice
First, assumptions are part of the product definition. The risk tables, assumed interest rates, and expense ratios differ by product and by time of sale, and a contract is computed for life with the assumptions at the time of enrollment. If you hard-code assumptions, you can no longer compute old contracts.
Second, state is not a stored value but a value computed from dates. A lapse comes from the unpaid date and the grace rules, and maturity comes from the maturity date. The status column is a copy that a batch wrote in, and a copy can be wrong.
Third, premiums must be reproducible to the last won. Which assumption was rounded in which order and how is in the product definition document, and the system must follow that order exactly.
In the next lab, you will calculate a term insurance net premium directly with a hypothetical life table and assumed interest rate, and add expenses to build the gross premium.