kernels.ODPBootstrapDiagonal
Next year’s diagonal from an England-Verrall ODP residual bootstrap.
Usage
kernels.ODPBootstrapDiagonal(
process="od_poisson", process_noise=True, resample_residuals=True
)The generator behind R’s CDR.BootChainLadder: resample DoF-adjusted Pearson residuals into a pseudo-triangle, refit the chain ladder on it, project the next diagonal off that refit and add over-dispersed Poisson process noise. The mechanics are kernels/odp_bootstrap.py, where they can be read against R’s source; this class is the CDR-side wiring.
process is the noise law (od_poisson = phi * Poisson(mu/phi), the England-Verrall construction england_verrall_odp.predict also draws, or gamma; both have mean mu and variance phi * mu). Note R’s BootChainLadder defaults to gamma, so a like-for-like comparison with R needs process="gamma" set explicitly.
resample_residuals and process_noise are the two risk-source switches - R’s NYCost arm is both on, its NYParamDist arm is process_noise=False, and the process-only arm R derives by subtraction is resample_residuals=False. Turning both off is refused: every draw would be identical, which is a degenerate answer rather than a meaningful with-and-without comparison.
The family limit is real and is refused by name. The ODP quasi-likelihood is defined on non-negative increments, so a cohort with a negative paid increment cannot be bootstrapped - about half the Schedule P mart, the same limitation england_verrall_odp carries. check() raises there and says so, and points at the mack generator, which has no such restriction.
Parameter Attributes
process: str = "od_poisson"process_noise: bool = Trueresample_residuals: bool = True
Methods
| Name | Description |
|---|---|
| check() | Build the deterministic half of the bootstrap and discard it: it is |
check()
Build the deterministic half of the bootstrap and discard it: it is
Usage
check(fit)where the negative-increment refusal and the degrees-of-freedom check live, and both are cheap enough to pay twice.