CaseOutstanding#
- class chainladder.CaseOutstanding(paid_to_incurred=None, paid_n_periods=-1, case_n_periods=-1, groupby=None)[source]#
Deterministic development from prior-lag case reserves.
Estimates incremental paid amounts and case-reserve runoff as fractions of the prior lag’s carried case reserve. Like
MunichAdjustmentandBerquistSherman, this is useful when case reserves should inform paid ultimates. A triangle with both paid and incurred columns is required.The incremental
paid_ldf_patterns are not multiplicative link ratios; the estimator also builds origin-specific implied multiplicativeldf_so standard IBNR methods can be applied.Added in version 0.8.0.
- Parameters:
- paid_to_incurred: tuple or list of tuples
A tuple representing the paid and incurred
columnsof the triangles such as('paid', 'incurred')- paid_n_periods: integer, optional (default=-1)
number of origin periods to be used in the paid pattern averages. For all origin periods, set paid_n_periods=-1
- case_n_periods: integer, optional (default=-1)
number of origin periods to be used in the case pattern averages. For all origin periods, set case_n_periods=-1
- Attributes:
- ldf_: Triangle
Implied multiplicative loss development patterns (by paid/incurred column); each origin period has its own pattern.
- cdf_: Triangle
The estimated (multiplicative) cumulative development patterns.
- case_to_prior_case_: Triangle
Case-to-prior-case incremental ratios by origin (for review).
- case_ldf_: Triangle
Selected case-to-prior-case ratios averaged across origins.
- paid_to_prior_case_: Triangle
Paid-to-prior-case incremental ratios by origin (for review).
- paid_ldf_: Triangle
Selected paid-to-prior-case ratios averaged across origins.
Examples
On
usauto, incremental paid in 12–24 is about 84% of case outstanding at lag 12 (first entry inpaid_ldf_at development 24–36):import numpy as np tri = cl.load_sample("usauto") model = cl.CaseOutstanding( paid_to_incurred=("paid", "incurred") ).fit(tri) print(np.round(model.paid_ldf_.values[0, 0, 0, :4], 4))
[0.8428 0.71 0.7084 0.6968]
Implied multiplicative
ldf_differ by accident year; the 1998 origin paid pattern is shown below (compare to volume-weighted chainladder).import numpy as np tri = cl.load_sample("usauto") model = cl.CaseOutstanding( paid_to_incurred=("paid", "incurred") ).fit(tri) print(np.round(model.ldf_["paid"].values[0, 0, 0, :4], 4))
[1.7925 1.2056 1.0956 1.0457]
Review origin-level
paid_to_prior_case_andcase_to_prior_case_when tuningpaid_n_periodsandcase_n_periods; fitted selections appear inpaid_ldf_andcase_ldf_.import numpy as np tri = cl.load_sample("usauto") model = cl.CaseOutstanding( paid_to_incurred=("paid", "incurred") ).fit(tri) print(np.round(model.case_to_prior_case_.values[0, 0, 0, :4], 4)) print(np.round(model.case_ldf_.values[0, 0, 0, :4], 4))
[0.5378 0.5541 0.5253 0.4981] [0.534 0.5638 0.5296 0.49 ]
Inherited Methods
|
Fit to data, then transform it. |
|
Get metadata routing of this object. |
|
Get parameters for this estimator. |
|
Apply |
|
Converts triangle array_backend. |
|
Set output container. |
|
Set the parameters of this estimator. |
|
Serializes triangle object to json format |
|
Serializes triangle object to pickle. |