reserving.Benktander
The Benktander (iterated Bornhuetter–Ferguson) method: starting from
Usage
reserving.Benktander()U(0) = apriori * exposure, U(k) = latest + (1 - 1 / cdf) * U(k-1) for n_iters steps, as chainladder-python’s Benktander. n_iters=0 is the expected loss method, 1 is Bornhuetter–Ferguson, and many iterations approach the chain ladder. The steps are summed in closed form, so a large n_iters is cheap; where an origin’s cdf is below 1/2 they diverge instead.
Parameters
apriori: float = 1.0-
Expected loss ratio of the starting ultimate; positive.
n_iters: int = 1-
Number of Bornhuetter–Ferguson steps.
average: (volume, simple, regression) = "volume"-
How link ratios are averaged, as in ChainLadder.
sigma_interpolation: (log - linear, mack) = "log-linear"tail: (float, TailConstant, TailCurve, TailBondy or TailLogLinear)- As ChainLadder; no tail by default.
Examples
>>> from prospicio.reserving import Benktander, Triangle
>>> tri = Triangle.from_long(
... [2020, 2020, 2021], [12, 24, 12],
... {"paid": [100.0, 150.0, 200.0], "premium": [250.0, 250.0, 400.0]},
... )
>>> fit = Benktander(apriori=0.5, n_iters=2).fit(tri, "paid", "premium")
>>> [round(u, 2) for u in fit.ultimate][150.0, 288.89]
Attributes
| Name | Description |
|---|---|
| apriori | Expected loss ratio of the starting ultimate. |
| average | How link ratios are averaged. |
| n_iters | Number of Bornhuetter–Ferguson steps. |
| sigma_interpolation | How unestimable variance parameters are filled in. |
| tail | The tail: a constant factor as a number, otherwise its estimator. |
apriori
Expected loss ratio of the starting ultimate.
apriori: float
average
How link ratios are averaged.
average: str
n_iters
Number of Bornhuetter–Ferguson steps.
n_iters: int
sigma_interpolation
How unestimable variance parameters are filled in.
sigma_interpolation: str
tail
The tail: a constant factor as a number, otherwise its estimator.
tail: Any
Methods
| Name | Description |
|---|---|
| fit() | Fits one loss column in every segment of a triangle, each with its |
fit()
Fits one loss column in every segment of a triangle, each with its
Usage
fit(triangle, column, exposure)own exposure.
Parameters
triangle: Trianglecolumn: str-
The losses to project.
exposure: str- The exposure column; each origin’s latest observed cumulative value is its exposure (an incremental triangle’s is cumulated).
Returns
ExpectedLossFit
Raises
ValueError- As ExpectedLoss.fit.