kernels.ODPBootstrapDiagonal

Next year’s diagonal from an England-Verrall ODP residual bootstrap.

Usage

Source

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 = True
resample_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

Source

check(fit)

where the negative-increment refusal and the degrees-of-freedom check live, and both are cheap enough to pay twice.