Loss reserving with four methods and a reproducible bootstrap
Chain ladder, Bornhuetter-Ferguson, Cape Cod and ELR on one triangle, with Mack and a seeded bootstrap for the range.
One triangle, four deterministic methods. Chain ladder develops the paid or reported triangle on volume-weighted link ratios; Bornhuetter-Ferguson blends the development estimate with an a-priori loss ratio by the proportion still undeveloped; Cape Cod derives that a-priori from the data itself rather than taking it as an input; and the expected-loss-ratio method holds it fixed. Running them side by side is the point — the spread between them is the actuary's first read on how much the answer depends on the method.
The range comes from two stochastic methods with different assumptions. Mack gives an analytic standard error on the chain-ladder estimate without simulating anything. The bootstrap resamples residuals to build a full predictive distribution, and it is SEEDED — the same triangle and the same seed reproduce the same percentiles exactly. A stochastic reserve range you cannot reproduce is not evidence, and reproducibility here is a property of the implementation rather than a process someone follows.
Tail development is fitted rather than assumed: a tail factor is estimated from the observed link ratios and applied beyond the triangle, so the ultimate does not quietly stop at the last development period the data happens to reach.
Paid and incurred are reconciled rather than selected between. Run classical chain ladder on each triangle in isolation and one book has two ultimates — the reserve then depends on which triangle somebody chose. Munich chain ladder uses the correlation between them, informing each triangle by the other's residuals so the two estimates converge instead of being averaged by hand and called a selection. It narrows the gap and does not close it, and the residual gap is reported: a method producing exact agreement would be hiding the disagreement rather than resolving it. Where the fitted lambdas are near zero Munich collapses back to plain chain ladder, which is the engine saying the method has nothing to add here.
Segment experience is believed in proportion to its exposure. Bühlmann-Straub credibility weights a segment's own loss ratio against the portfolio mean, so a small book cannot price itself on three volatile years — a segment swinging by a factor of four between years is telling you about its size rather than its risk. The weight is applied whether or not the answer it produces is the one the segment's owner wanted.
What it does
- Run chain ladder, Bornhuetter-Ferguson, Cape Cod and ELR against the same triangle.
- Derive the Cape Cod a-priori loss ratio from the triangle rather than accepting it as an input.
- Produce an analytic standard error via Mack without simulation.
- Build a predictive distribution by residual bootstrap, seeded so the same inputs reproduce the same percentiles.
- Bound the bootstrap between 50 and 5,000 iterations, defaulting to 500.
- Fit a tail factor from observed link ratios and apply it beyond the triangle.
- Return percentiles from the fitted distribution rather than a point estimate alone.
- Reconcile paid and incurred ultimates with Munich chain ladder, reporting the gap that remains.
- Collapse Munich back to chain ladder where the fitted lambdas carry no signal.
- Weight a segment's own experience against the portfolio mean by Bühlmann-Straub credibility.
- Leave the lower-right of a triangle empty where it has not developed rather than filling it with zeros.
Implements
- Chain ladder, Bornhuetter-Ferguson, Cape Cod, expected loss ratio
- Mack analytic standard error
- Residual bootstrap with fixed seed
- Fitted tail factor
- Munich chain ladder (paid / incurred reconciliation)
- Bühlmann-Straub credibility
See it in the product
Run a reserving job twice with the same seed: the percentiles are identical to the digit. Change the seed and the distribution moves — which is what tells you the range is simulated rather than stored.