Bootstrap of Mack's model
mack_bootstrap_fit.RdThe lifetime view of reserve risk under Mack's model, bootstrapped as
England, Verrall and Wuthrich (2019, Appendix 1) describe: the scaled
bias-adjusted residuals of the link ratios
sqrt(n_k / (n_k - 1)) C^(alpha / 2) (F - f_k) / sigma_k are resampled
into pseudo link ratios and re-averaged into pseudo factors (parameter
error), and every future cumulative value is drawn from the one before,
the observed latest value for the first, with mean f*_k C and Mack's
variance sigma_k^2 |C|^(2 - alpha) (process error), to the triangle's
last age. An origin's reserve is its last drawn value less its latest.
Mack's model has no tail here, so development past the oldest age is not
simulated.
Usage
mack_bootstrap_fit(ptr)
mack_bootstrap(
triangle,
column = NULL,
n_sims = 10000,
seed = 0,
process = c("gamma", "lognormal", "residuals", "normal", "none"),
average = "volume",
sigma_interpolation = "log-linear",
centre_residuals = TRUE
)Arguments
- ptr
A
MackBootstrapFitpointer; used internally.- triangle
A cumulative triangle, with any number of segments and any development grain, every origin observed from the first age up to its latest, with no negative value.
- column
Name of the column to fit; by default the only one.
- n_sims
Number of simulations; positive.
- seed
Seed of the simulation streams, a non-negative whole number.
- process
Process error on each next cumulative value:
"gamma"or"lognormal"(negated for a negative mean) or"normal", with Mack's mean and variance;"residuals"(the mean plus a resampled residual times the standard deviation); or"none"for parameter error only.- average, sigma_interpolation
How Mack's model averages the link ratios and fills in a sigma behind a single link ratio, as in
mack().- centre_residuals
Subtract the residuals' mean before resampling them, so that the pseudo factors are unbiased and the mean reserve is the chain ladder's;
FALSEresamples them uncentred, as England, Verrall and Wuthrich's Appendix 1 is written.
Details
The standard deviation of the reserves approximates Mack's analytic
standard error (mack()), and the mean is the chain ladder's reserve:
the pooled residuals do not have a zero mean, so by default
(centre_residuals = TRUE) they are centred before resampling.
Resampled as they are (centre_residuals = FALSE, EVW's Appendix 1 as
written) they bias every pseudo factor, and the mean reserve with them
(about 17% above the chain ladder's on RAA, 0.7% on GenIns, 0.8% below
on ABC); EVW's Table 4 expected reserves agree with the centred
bootstrap.
Every segment is bootstrapped on its own, with its own Mack model and
residuals, into one joint distribution of the reserves. Simulation i
uses random stream i of seed for every segment in turn.
Properties of the fit: chain_ladder (the chain_ladder_fit of Mack's
averaging), mack (the mack_fit on the observed triangle, with the
analytic standard errors), origins, development, residuals (an
origin x development matrix, [o, k] the residual of the link from age
k to k + 1, NA where there is none; never centred; single segment
only) and reserves, a predictive_distribution of the reserve with the
triangle's keys and origin as dimensions.
This is Python's MackBootstrap(...).fit(), which returns a
MackBootstrapFit.
See also
mack() for the analytic standard errors, mack_one_year()
for the one-year view on the same bootstrap, odp_bootstrap().
Examples
long <- data.frame(year = rep(2018:2021, 4:1),
age = c(12, 24, 36, 48, 12, 24, 36, 12, 24, 12),
paid = c(100, 150, 165, 170, 110, 170, 180, 120, 175, 130))
boot <- mack_bootstrap(triangle(long, "year", "age", "paid"), n_sims = 2000, seed = 42)
boot@reserves@keys
#> origin
#> 1 2018
#> 2 2019
#> 3 2020
#> 4 2021
c(mean = mean(boot@reserves), chain_ladder = boot@chain_ladder@total_reserve)
#> mean chain_ladder
#> 111.8672 111.4489
c(sd = sqrt(variance(boot@reserves)), mack = boot@mack@total_standard_error)
#> sd mack
#> 19.20362 19.54168
as.data.frame(boot)
#> origin latest ultimate reserve mean std_dev
#> 1 2018 170 170.0000 0.000000 0.000000 0.000000
#> 2 2019 180 185.4545 5.454545 5.520966 5.632281
#> 3 2020 175 194.3892 19.389205 19.642917 8.515991
#> 4 2021 130 216.6051 86.605114 86.703367 11.401785