This function implements multivariate loss reserving models within the chain-ladder framework. Two major models are included. One is the Multivariate chain-ladder (MCL) model proposed by Prohl and Schmidt (2005). This is a direct multivariate generalization of the univariate chain-ladder model in that losses from different triangles are assumed to be correlated but the mean development in one triangle only depends on its past values, not on the observed values from other triangles. In contrast, the other model, the General Multivariate chain-ladder (GMCL) model outlined in Zhang (2010), extends the MCL model by allowing development dependencies among different triangles as well as the inclusion of regression intercepts. As a result, structurally related triangles, such as the paid and incurred loss triangles or the paid loss and case reserve triangles, can be developed together while still accounting for the potential contemporaneous correlations. While the MCL model is a special case of the GMCL model, it is programmed and listed separately because: a) it is an important model for its own sake; b) different MSE methods are only available for the MCL model; c) extrapolation of the residual variance estimation can be implemented for the MCL model, which is considerably difficult for the GMCL model.
We introduce some details of the GMCL model in the following. Assume N triangles are available. Denote \(Y_{i,k}=(Y^{(1)}_{i,k}, \ldots ,Y^{(N)}_{i,k})\) as an \(N \times 1\) vector of cumulative losses at accident year i and development year k, where (n) refers to the n-th triangle. The GMCL model in development period k (from development year k to year k+1) is:
$$Y_{i,k+1}=A_k + B_k \cdot Y_{i,k}+\epsilon_{i,k},$$
where \(A_k\) is a column of intercepts and \(B_k\) is the \(N \times N\) development matrix. By default, MultiChainLadder
sets \(A_k\) to be zero. This behavior can be changed by appropriately specifying the int
argument.
Assumptions for this model are:
$$E(\epsilon_{i,k}|Y_{i,1},\ldots,Y_{i,I+1-k})=0.$$
$$cov(\epsilon_{i,k}|Y_{i,1},\ldots,Y_{i,I+1-k})=\Sigma_{\epsilon_{i,k}}=D(Y_{i,k}^{\delta/2})\Sigma_k D(Y_{i,k}^{\delta/2}).$$
$$\mbox{losses of different accident years are independent}.$$
$$\epsilon_{i,k} \, \mbox{are symmetrically distributed}.$$
The GMCL model structure is generally over-parameterized. Parameter restrictions are usually necessary for the estimation to be feasible, which can be specified through the restrict.regMat
argument. We refer the users to the documentation for systemfit
for details and the demo of the present function for examples.
In particular, if one restricts the development matrix to be diagonal, the GMCL model will reduce to the MCL model. When non-diagonal development matrix is used and the GMCL model is applied to paid and incurred loss triangles, it can reflect the development relationship between the two triangles, as described in Quarg and Mack (2004). The full bivariate model is identical to the "double regression" model described by Mack (2003), which is argued by him to be very similar to the Munich chain-ladder (MuCL) model. The GMCL model with intercepts can also help improve model adequacy as described in Barnett and Zehnwirth (2000).
Currently, the GMCL model only works for trapezoid data, and only implements mse.method = "Mack"
. The MCL model allows an additional mse estimation method that assumes independence among the estimated parameters. Further, the MCL model using fit.method = "OLS"
will be equivalent to running univariate chain-ladders separately on each triangle. Indeed, when only one triangle is specified (as a list), the MCL model is equivalent to MackChainLadder
.
The GMCL model allows different model structures to be specified in each development period. This is generally achieved through the combination of the int
argument, which specifies the periods that have intercepts, and the restrict.regMat
argument, which imposes parameter restrictions on the development matrix.
In using the multivariate methods, we often specify separate univariate chain-ladders for the tail periods to stabilize the estimation - there are few data points in the tail and running a multivariate model often produces extremely volatile estimates or even fails. In this case, we can use the subset operator "["
defined for class triangles
to split the input data into two parts. We can specify a multivariate model with rich structures on the first part to reflect the multivariate dependencies, and simply apply multiple univariate chain-ladders on the second part. The two models are subsequently joined together using the Join2Fits
function. We can then invoke the predict
and Mse
methods to produce loss predictions and mean square error estimations. They can further be combined via the JoinFitMse
function to construct an object of class MultiChainLadder
. See the demo for such examples.
To facilitate such a split-and-join process for most applications, we have created the function MultiChainLadder2
. This function splits the data according to the last
argument (e.g., if last = 3
, the last three periods go into the second part), and fits the first part according to the structure indicated in the type
argument. See the 'Arguments' section for details.