Traditional Chain Ladder Model (TraditionalChainLadder
)¶
The chain ladder method is a simple loss development technique that assumes that the ratio of
ultimate losses to current losses is the same for all accident periods. Our traditional chain ladder
model is meant to closely mimic the chain ladder method, and is implemented by the
TraditionalChainLadder
model type. Mathematically, the base TraditionalChainLadder
model is
expressed as:
where \(\bf{ATA}\) is a vector of age-to-age factors that capture how losses change across development lags, \(\tau \in {2,...,M}\) is an integer chosen by an analyst that indicates how many development lags should be used to fit the model to. In practice, \(\tau\) is determined by preprocessing (i.e. clipping) the triangle before fitting.
Note that the TraditionalChainLadder
model is fit using maximum likelihood estimation (MLE) as
opposed to MCMC sampling. Combined with the wide priors and Normal outcome distribution, the
age-to-age factors estimated per TraditionalChainLadder
will much more closely resemble the
age-to-age factors estimated by the chain ladder method.
Model Fit Configuration¶
The TraditionalChainLadder
model is fit using the following API call:
model = client.development_model.create(
triangle=...,
name="example_name",
model_type="TraditionalChainLadder",
config={ # default model_config
"loss_definition": "paid",
"use_volume_weighting": True,
"recency_decay": 1.0,
}
)
The TraditionalChainLadder
model accepts the following configuration parameters in config
:
loss_definition
: Name of loss field to model in the underlying triangle (e.g.,"reported"
,"paid"
, or"incurred"
). Defaults to"paid"
.use_volume_weighting
: Whether to compute ATA factors as volume-weighted averages of observed link ratios, as opposed to straight averages. Defaults toTrue
, which performs MLE on the model as specified above. If set toFalse
, the variance term is set instead to \(\sigma_{ij}^2 &= \sigma^2\), and the resulting age-to-age factor estimates are not impacted by the loss volume.priors
: Dictionary of prior distributions to use for model fitting. Default priors are:
{
"ata__loc": 0.0,
"ata__scale": 1e6,
"sigma__loc": 0.0,
"sigma__scale": 1.0,
}
recency_decay
: Likelihood weight decay to down-weight data from older evaluation dates. Defaults to1.0
, which means no decay. If set to a value between0.0
and1.0
, the likelihood of older evaluation dates will be downweighted by a geometric decay function with factorrecency_decay
. See Geometric decay weighting for more information.
Model Predict Configuration¶
The TraditionalChainLadder
model is used to predict future losses using the following API call:
predictions = model.development_model.predict(
triangle=...,
config={ # default config
"max_dev_lag": None,
}
target_triangle=None,
)
Above, triangle
is the triangle to use to start making predictions from and target_triangle
is the triangle to make predictions on. For most use-cases, triangle
will be the same triangle that was used in model fitting, and setting target_triangle=None
will create a squared version of the modeled triangle. However, decoupling triangle
and target_triangle
means users could train the model on one triangle, and then make predictions starting from and/or on a different triangle. By default, predictions will be made out to the maximum development lag in triangle
, but users can also set max_dev_lag
in the configuration directly.
The TraditionalChainLadder
prediction behavior can be further changed with configuration parameters in config
:
max_dev_lag
: Maximum development lag to predict out to. If not specified, the model will predict out to the maximum development lag intriangle
. Note thatTraditionalChainLadder
can only generative predictions out to the maximum development lag in the training triangle, as there is no mechanism in the model to extrapolate out age-to-age beyond the training data.