MackChainLadder {ChainLadder}  R Documentation 
The Mack chainladder 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="loglinear",
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
chainladder agetoage 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 crossproduct 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+1i
.
In order to forecast the amounts C_{ik}
for
k > n+1i
the Mack chainladdermodel 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 chainladder gives an
unbiased estimator for IBNR (Incurred But Not Reported) claims.
Here w_{ik} are the \code{weights} from above.
The Mack chainladder 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^(2alpha))
,
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 
chainladder agetoage factors 
f.se 
standard errors of the chainladder agetoage factors f (assumption CL1) 
F.se 
standard errors of the true chainladder agetoage 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 linkratio estimators alone (explained variation) 
Mack.S.E 
total variability in the projection of future losses
by the chainladder method; the square root of the mean square error
of the chainladder 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. Distributionfree 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 154222
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 nonsquare triangles,
chainladder
for the underlying chainladder 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 agetoage 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%
## Parameterrisk (only) estimate of the total reserve = 3142387
tail(MRT$Total.ParameterRisk, 1) # located in last (ultimate) element
# Parameterrisk (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)