reserving.ClarkLdf

Clark’s LDF method (Clark 2003), as R ChainLadder’s ClarkLDF: each

Usage

reserving.ClarkLdf()

origin’s expected ultimate and a growth curve are fitted to the incremental losses by over-dispersed Poisson maximum likelihood, with ages measured from the average date of loss (the middle of the origin period, R’s adol = TRUE).

The ultimate is the latest value developed by the fitted curve to max_age. Process risk is the scale times the fitted reserve, and parameter risk the delta method on the parameters’ covariance, the scale times the inverse Fisher information.

Parameters

curve: (loglogistic, weibull) = "loglogistic"

The growth curve G: x**omega / (x**omega + theta**omega) or 1 - exp(-(x / theta)**omega).

max_age: float
Age in months at which development stops; at least the triangle’s last age. None develops to infinity.

Raises

ValueError
If curve is unknown.

Examples

>>> from prospicio.reserving import ClarkLdf, Triangle
>>> rows = [[110.0, 290.0, 370.0, 420.0, 440.0], [95.0, 300.0, 390.0, 425.0],
...         [130.0, 320.0, 410.0], [105.0, 305.0], [120.0]]
>>> tri = Triangle.from_long(
...     [2020 + i for i, row in enumerate(rows) for _ in row],
...     [12 * (d + 1) for row in rows for d in range(len(row))],
...     [v for row in rows for v in row],
... )
>>> fit = ClarkLdf(curve="weibull", max_age=120).fit(tri, "values")
>>> fit.omega > 0 and fit.total_standard_error > fit.total_process_risk

True

>>> round(fit.ultimate[2] * fit.growth(36) / fit.growth(120), 6)

410.0

Attributes

Name Description
curve The growth curve.
max_age Age in months at which development stops; None for infinity.

curve

The growth curve.

curve: str


max_age

Age in months at which development stops; None for infinity.

max_age: float | None

Methods

Name Description
fit() Fits one loss column in every segment of a triangle, each on its

fit()

Fits one loss column in every segment of a triangle, each on its

Usage

fit(triangle, column)

own.

Parameters
triangle: Triangle
column: str
Returns
ClarkFit
Raises
ValueError
As ChainLadder.fit, if the triangle has fewer than four ages, max_age is before its last age, an origin’s latest value is not positive, or the likelihood search does not converge.