Functional Weave
Code in Python

insurance.claim-reserve@1.0.1

README.md

2,627 bytes · view raw

# insurance.claim-reserve

The history of one claim's figures: after each transaction, what has been
paid, what has been recovered, the outstanding case reserve, the incurred
total and the movement in incurred.

    incurred = paid - recovered + outstanding

## Transactions

- **reserve**: the claims handler's new estimate of what is still to be paid.
  It sets `outstanding` outright (0 closes the claim or releases the reserve).
- **payment**: money paid out. It adds to `paid` and erodes `outstanding` by
  the same amount, never below zero. A payment within the reserve therefore
  leaves incurred unchanged; one larger than the reserve raises incurred by
  the difference, which is how an under-reserved claim shows up.
- **recovery**: salvage, subrogation or third-party recoveries received. They
  reduce net incurred. A claim recovered in full with costs can show negative
  incurred.

`movement` is the change in incurred made by each transaction: the figure
that goes through the claims account for the period, and what a
development triangle is built from. Summing the movements in a period gives
that period's incurred movement.

Transactions must be in date order; same-day transactions keep the order
given, so a payment and the reserve change that follows it on one day come
out as two positions. Dates are checked as real calendar dates.

Not covered: IBNR and other reserves not held against a specific claim,
reserve currency conversion, and claims handling expenses (pass them as
payments if your reporting counts them in incurred).

## Before you rely on this

**Not professional advice.** This capability calculates insurance figures from published rules. It is a software component for developers, not financial advice. Rules change and every rate here has an effective date. Check that the dates cover your case. Verify results against the official sources listed above, and have an actuary review how you use it, before anyone relies on the output. Provided "as is" under its licence, without warranty.

**Unreviewed.** This capability's implementations agree in every language and pass its published test vectors, which were worked out from the official sources cited. But no qualified actuary has yet checked those vectors, or confirmed that the capability covers the cases it claims. Treat it as a draft. Do not use it for real people, money or decisions without your own expert review. Once a qualified reviewer signs off, this notice is replaced with their name, qualification and the date. Each new version needs fresh sign-off.

1.0.1 marks it unreviewed. The code and the tests are unchanged.