View source: R/MackChainLadderFunctions.R
MackChainLadder | R Documentation |
The Mack chain-ladder model forecasts future claims developments based on a historical cumulative claims development triangle and estimates the standard error around those.
MackChainLadder(Triangle, weights = 1, alpha=1, est.sigma="log-linear",
tail=FALSE, tail.se=NULL, tail.sigma=NULL, mse.method="Mack")
Triangle |
cumulative claims triangle. Assume columns are the development
period, use transpose otherwise.
A (mxn)-matrix |
weights |
weights. Default: 1, which sets the weights for all
triangle entries to 1. Otherwise specify weights as a matrix of the same
dimension as |
alpha |
'weighting' parameters.
Default: 1 for all development periods; alpha=1 gives the historical
chain-ladder age-to-age factors, alpha=0 gives the straight average of the
observed individual development factors and alpha=2 is the result of
an ordinary regression of |
est.sigma |
defines how to estimate |
tail |
can be logical or a numeric value.
If |
tail.se |
defines how the standard error of the tail factor is estimated. Only needed if
a tail factor > 1 is provided. Default is |
tail.sigma |
defines how to estimate individual tail variability. Only needed if
a tail factor > 1 is provided.
Default is |
mse.method |
method used for the recursive estimate of the parameter risk component of the mean square error. Value "Mack" (default) coincides with Mack's formula; "Independence" includes the additional cross-product term as in Murphy and BBMW. Refer to References below. |
Following Mack's 1999 paper let C_{ik}
denote the cumulative loss
amounts of origin period (e.g. accident year)
i=1,\ldots,m
, with losses known for development period
(e.g. development year) k \le n+1-i
.
In order to forecast the amounts C_{ik}
for
k > n+1-i
the Mack chain-ladder-model assumes:
\mbox{CL1: } E[ F_{ik}| C_{i1},C_{i2},\ldots,C_{ik} ] = f_k
\mbox{ with } F_{ik}=\frac{C_{i,k+1}}{C_{ik}}
\mbox{CL2: } Var( \frac{C_{i,k+1}}{C_{ik}} | C_{i1},C_{i2},
\ldots,C_{ik} ) = \frac{\sigma_k^2}{w_{ik} C^\alpha_{ik}}
\mbox{CL3: } \{ C_{i1},\ldots,C_{in}\}, \{
C_{j1},\ldots,C_{jn}\},\mbox{ are independent for origin period } i
\neq j
with w_{ik} \in [0;1]
, \alpha \in \{0,1,2\}
.
If these assumptions hold, the Mack chain-ladder gives an
unbiased estimator for IBNR (Incurred But Not Reported) claims.
Here w_{ik} are the \code{weights} from above.
The Mack chain-ladder model can be regarded as a special form of a
weighted linear regression
through the origin for each development period:
lm(y ~ x + 0, weights=weights/x^(2-alpha))
,
where y
is the vector of claims at development period
k+1
and x
is the vector of claims at development period
k
.
It is necessary, before actually applying the model, to check if the main assumptions behind the model (i.e. Calendar Year Effect and Correlation between subsequent Accident Years, see dfCorTest
, cyEffTest
) are verified.
MackChainLadder returns a list with the following elements
call |
matched call |
Triangle |
input triangle of cumulative claims |
FullTriangle |
forecasted full triangle |
Models |
linear regression models for each development period |
f |
chain-ladder age-to-age factors |
f.se |
standard errors of the chain-ladder age-to-age factors f (assumption CL1) |
F.se |
standard errors of the true chain-ladder age-to-age factors
|
sigma |
sigma parameter in CL2 |
Mack.ProcessRisk |
variability in the projection of future losses not explained by the variability of the link ratio estimators (unexplained variation) |
Mack.ParameterRisk |
variability in the projection of future losses explained by the variability of the link-ratio estimators alone (explained variation) |
Mack.S.E |
total variability in the projection of future losses
by the chain-ladder method; the square root of the mean square error
of the chain-ladder estimate: |
Total.Mack.S.E |
total variability of projected loss for all origin years combined |
Total.ProcessRisk |
vector of process risk estimate of the total of projected loss for all origin years combined by development period |
Total.ParameterRisk |
vector of parameter risk estimate of the total of projected loss for all origin years combined by development period |
weights |
weights used |
alpha |
alphas used |
tail |
tail factor used. If tail was set to TRUE the output will include the linear model used to estimate the tail factor |
Additional references for further reading:
England, PD and Verrall, RJ. Stochastic Claims Reserving in General Insurance (with discussion), British Actuarial Journal 8, III. 2002
Barnett and Zehnwirth. Best estimates for reserves. Proceedings of the CAS, LXXXVI I(167), November 2000.
Markus Gesmann markus.gesmann@gmail.com
Thomas Mack. Distribution-free calculation of the standard error of chain ladder reserve estimates. Astin Bulletin. Vol. 23. No 2. 1993. pp.213:225
Thomas Mack. The standard error of chain ladder reserve estimates: Recursive calculation and inclusion of a tail factor. Astin Bulletin. Vol. 29. No 2. 1999. pp.361:366
Murphy, Daniel M. Unbiased Loss Development Factors. Proceedings of the Casualty Actuarial Society Casualty Actuarial Society - Arlington, Virginia 1994: LXXXI 154-222
Buchwalder, Bühlmann, Merz, and Wüthrich. The Mean Square Error of Prediction in the Chain Ladder Reserving Method (Mack and Murphy Revisited). Astin Bulletin Vol. 36. 2006. pp.521:542
See also qpaid
for dealing with non-square triangles,
chainladder
for the underlying chain-ladder method,
dfCorTest
to check for Calendar Year Effect,
cyEffTest
to check for Development Factor Correlation,
summary.MackChainLadder
,
quantile.MackChainLadder
,
plot.MackChainLadder
and
residuals.MackChainLadder
displaying results,
CDR.MackChainLadder
for the one year claims development result.
## See the Taylor/Ashe example in Mack's 1993 paper
GenIns
plot(GenIns)
plot(GenIns, lattice=TRUE)
GNI <- MackChainLadder(GenIns, est.sigma="Mack")
GNI$f
GNI$sigma^2
GNI # compare to table 2 and 3 in Mack's 1993 paper
plot(GNI)
plot(GNI, lattice=TRUE)
## Different weights
## Using alpha=0 will use straight average age-to-age factors
MackChainLadder(GenIns, alpha=0)$f
# You get the same result via:
apply(GenIns[,-1]/GenIns[,-10],2, mean, na.rm=TRUE)
## Only use the last 5 diagonals, i.e. the last 5 calendar years
calPeriods <- (row(GenIns) + col(GenIns) - 1)
(weights <- ifelse(calPeriods <= 5, 0, ifelse(calPeriods > 10, NA, 1)))
MackChainLadder(GenIns, weights=weights, est.sigma = "Mack")
## Tail
## See the example in Mack's 1999 paper
Mortgage
m <- MackChainLadder(Mortgage)
round(summary(m)$Totals["CV(IBNR)",], 2) ## 26% in Table 6 of paper
plot(Mortgage)
# Specifying the tail and its associated uncertainty parameters
MRT <- MackChainLadder(Mortgage, tail=1.05, tail.sigma=71, tail.se=0.02, est.sigma="Mack")
MRT
plot(MRT, lattice=TRUE)
# Specify just the tail and the uncertainty parameters will be estimated
MRT <- MackChainLadder(Mortgage, tail=1.05)
MRT$f.se[9] # close to the 0.02 specified above
MRT$sigma[9] # less than the 71 specified above
# Note that the overall CV dropped slightly
round(summary(MRT)$Totals["CV(IBNR)",], 2) ## 24%
# tail parameter uncertainty equal to expected value
MRT <- MackChainLadder(Mortgage, tail=1.05, tail.se = .05)
round(summary(MRT)$Totals["CV(IBNR)",], 2) ## 27%
## Parameter-risk (only) estimate of the total reserve = 3142387
tail(MRT$Total.ParameterRisk, 1) # located in last (ultimate) element
# Parameter-risk (only) CV is about 19%
tail(MRT$Total.ParameterRisk, 1) / summary(MRT)$Totals["IBNR", ]
## Three terms in the parameter risk estimate
## First, the default (Mack) without the tail
m <- MackChainLadder(RAA, mse.method = "Mack")
summary(m)$Totals["Mack S.E.",]
## Then, with the third term
m <- MackChainLadder(RAA, mse.method = "Independence")
summary(m)$Totals["Mack S.E.",] ## Not significantly greater
## One year claims development results
M <- MackChainLadder(MW2014, est.sigma="Mack")
CDR(M)
## For more examples see:
## Not run:
demo(MackChainLadder)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.