## reserving.ExpectedLossFit


A fitted expected-loss method ([ExpectedLoss](reserving.ExpectedLoss.md#prospicio.reserving.ExpectedLoss),


Usage


``` python
reserving.ExpectedLossFit()
```


[BornhuetterFerguson](reserving.BornhuetterFerguson.md#prospicio.reserving.BornhuetterFerguson) or [Benktander](reserving.Benktander.md#prospicio.reserving.Benktander)) of every segment of a triangle column.

Per-origin lists ([origins](reserving.MackFit.md#prospicio.reserving.MackFit.origins), [latest](reserving.MackFit.md#prospicio.reserving.MackFit.latest), [exposure](reserving.ClarkFit.md#prospicio.reserving.ClarkFit.exposure), [apriori](reserving.Benktander.md#prospicio.reserving.Benktander.apriori), [ultimate](reserving.MackFit.md#prospicio.reserving.MackFit.ultimate), [reserve](reserving.MackFit.md#prospicio.reserving.MackFit.reserve)) run over the origins of each segment in turn, like the rows of [to_frame()](reserving.MackFit.md#prospicio.reserving.MackFit.to_frame). [ultimate](reserving.MackFit.md#prospicio.reserving.MackFit.ultimate) and [reserve](reserving.MackFit.md#prospicio.reserving.MackFit.reserve) are this method's; [chain_ladder](reserving.MackFit.md#prospicio.reserving.MackFit.chain_ladder) holds the chain ladder's. Per-age lists need a single-segment fit; for several segments use [development_frame()](reserving.MackFit.md#prospicio.reserving.MackFit.development_frame) or `segment(...)`.


## Examples

``` python
>>> from prospicio.reserving import BornhuetterFerguson, Triangle
>>> tri = Triangle.from_long(
...     [2020, 2020, 2021] * 2,
...     [12, 24, 12] * 2,
...     {"paid": [100.0, 150.0, 200.0, 10.0, 20.0, 30.0],
...      "premium": [250.0, 250.0, 400.0, 500.0, 500.0, 800.0]},
...     keys={"lob": ["Auto"] * 3 + ["Home"] * 3},
... )
>>> fit = BornhuetterFerguson(apriori=0.5).fit(tri, "paid", "premium")
>>> fit.exposure, fit.segment(lob="Home").ultimate
```

(\[250.0, 400.0, 500.0, 800.0\], \[20.0, 230.0\])


## Attributes

| Name | Description |
|----|----|
| [apriori](#apriori) | Expected loss ratio applied per origin. |
| [cdf](#cdf) | Age-to-ultimate factors, one per age, including the tail. |
| [chain_ladder](#chain_ladder) | The underlying chain-ladder projection, with the chain ladder's |
| [development](#development) | Development ages in months. |
| [exposure](#exposure) | Exposure per origin: the exposure column's latest observed cumulative |
| [index](#index) | Label of each segment, as [Triangle.index](reserving.Triangle.md#prospicio.reserving.Triangle.index). |
| [keys](#keys) | Names of the triangle's key columns; empty without keys. |
| [latest](#latest) | Latest observed cumulative value per origin. |
| [ldf](#ldf) | Age-to-age factors; factor `k` links age `k` to `k + 1`. |
| [origins](#origins) | Origin period of each per-origin value. |
| [reserve](#reserve) | Reserve (ultimate minus latest) per origin. |
| [total_reserve](#total_reserve) | Total reserve across segments and origins. |
| [total_ultimate](#total_ultimate) | Total ultimate across segments and origins. |
| [ultimate](#ultimate) | This method's ultimate per origin. |

------------------------------------------------------------------------


#### apriori


Expected loss ratio applied per origin.


`apriori: list[float]`


------------------------------------------------------------------------


#### cdf


Age-to-ultimate factors, one per age, including the tail.


`cdf: list[float]`


------------------------------------------------------------------------


#### chain_ladder


The underlying chain-ladder projection, with the chain ladder's


`chain_ladder: ChainLadderFit`


ultimate.


------------------------------------------------------------------------


#### development


Development ages in months.


`development: list[int]`


------------------------------------------------------------------------


#### exposure


Exposure per origin: the exposure column's latest observed cumulative


`exposure: list[float]`


value.


------------------------------------------------------------------------


#### index


Label of each segment, as [Triangle.index](reserving.Triangle.md#prospicio.reserving.Triangle.index).


`index: list[Any]`


------------------------------------------------------------------------


#### keys


Names of the triangle's key columns; empty without keys.


`keys: list[str]`


------------------------------------------------------------------------


#### latest


Latest observed cumulative value per origin.


`latest: list[float]`


------------------------------------------------------------------------


#### ldf


Age-to-age factors; factor `k` links age `k` to `k + 1`.


`ldf: list[float]`


------------------------------------------------------------------------


#### origins


Origin period of each per-origin value.


`origins: list[str]`


------------------------------------------------------------------------


#### reserve


Reserve (ultimate minus latest) per origin.


`reserve: list[float]`


------------------------------------------------------------------------


#### total_reserve


Total reserve across segments and origins.


`total_reserve: float`


------------------------------------------------------------------------


#### total_ultimate


Total ultimate across segments and origins.


`total_ultimate: float`


------------------------------------------------------------------------


#### ultimate


This method's ultimate per origin.


`ultimate: list[float]`


## Methods

| Name | Description |
|----|----|
| [development_frame()](#development_frame) | One row per segment and age, as [ChainLadderFit.development_frame](reserving.ChainLadderFit.md#prospicio.reserving.ChainLadderFit.development_frame). |
| [segment()](#segment) | The fit of one segment, chosen by key values as |
| [to_frame()](#to_frame) | One row per segment and origin: the key columns, `origin`, |
| [totals_frame()](#totals_frame) | One row per segment: the key columns and the segment's total |

------------------------------------------------------------------------


#### development_frame()


One row per segment and age, as [ChainLadderFit.development_frame](reserving.ChainLadderFit.md#prospicio.reserving.ChainLadderFit.development_frame).


Usage


``` python
development_frame()
```


Needs pandas.


##### Returns


`pandas.DataFrame`  


------------------------------------------------------------------------


#### segment()


The fit of one segment, chosen by key values as


Usage


``` python
segment(**keys)
```


[ChainLadderFit.segment](reserving.ChainLadderFit.md#prospicio.reserving.ChainLadderFit.segment).


##### Returns


`ExpectedLossFit`  


------------------------------------------------------------------------


#### to_frame()


One row per segment and origin: the key columns, `origin`,


Usage


``` python
to_frame()
```


[latest](reserving.MackFit.md#prospicio.reserving.MackFit.latest), [ultimate](reserving.MackFit.md#prospicio.reserving.MackFit.ultimate), [reserve](reserving.MackFit.md#prospicio.reserving.MackFit.reserve), [exposure](reserving.ClarkFit.md#prospicio.reserving.ClarkFit.exposure) and [apriori](reserving.Benktander.md#prospicio.reserving.Benktander.apriori). Needs pandas.


##### Returns


`pandas.DataFrame`  


------------------------------------------------------------------------


#### totals_frame()


One row per segment: the key columns and the segment's total


Usage


``` python
totals_frame()
```


[latest](reserving.MackFit.md#prospicio.reserving.MackFit.latest), [ultimate](reserving.MackFit.md#prospicio.reserving.MackFit.ultimate), [reserve](reserving.MackFit.md#prospicio.reserving.MackFit.reserve) and [exposure](reserving.ClarkFit.md#prospicio.reserving.ClarkFit.exposure). Needs pandas.


##### Returns


`pandas.DataFrame`
