pricing.RiskProfile
A risk profile for property per-risk business: bands of sum insured,
Usage
pricing.RiskProfile()each with an expected loss (given, or premium times a loss ratio) and its own exposure curve.
Each band’s representative risk has sum insured SI (its total sum insured over its number of risks, say), taken as its MPL. The band expects EL / (SI * curve.mean_rate) losses a year; each simulated loss is the band’s SI times a destruction rate from the band’s curve, and carries that SI, so a surplus treaty (Layer.surplus) and the per-risk excess of loss it inures to apply to the events. The exposure-rated expectations (expected_layer_loss, expected_surplus_loss) check the simulation.
Parameters
sums_insured: list of float-
One per band.
risks: list of float-
Number of risks per band (for reference).
curves: Mbbefd or TabulatedCurve, or a list of them-
One curve for every band, or one per band.
expected_losses: list of float-
Expected annual loss per band. Give this, or
premiums. premiums: list of float-
Premium per band, with loss_ratio.
loss_ratio: float or list of float-
Expected loss ratio, one for all bands or one per band.
lower: list of float or None-
Bounds of each band’s sums insured (
Nonefor a band without). A band with bounds spreads its risks’ sums insured uniformly between them: its meanSIis(lower + upper) / 2(in place of sums_insured), each simulated loss draws its ownSIbetween the bounds, and the exposure-rated expectations average over the band, weighted by sum insured. upper: list of float or None-
Bounds of each band’s sums insured (
Nonefor a band without). A band with bounds spreads its risks’ sums insured uniformly between them: its meanSIis(lower + upper) / 2(in place of sums_insured), each simulated loss draws its ownSIbetween the bounds, and the exposure-rated expectations average over the band, weighted by sum insured. spread: (uniform, tilted) = "uniform"-
How a band with bounds spreads its sums insured.
"tilted"keeps sums_insured as the mean, so the spread matches both the bounds and the band’s total sum insured: the density∝ exp(θ s)on the bounds withθsolved for that mean (sums_insured must lie strictly between the bounds).
Examples
>>> from prospicio.pricing import Mbbefd, RiskProfile
>>> p = RiskProfile([1e6, 10e6], [800, 50], Mbbefd.swiss_re(3.0),
... premiums=[2e6, 1e6], loss_ratio=0.6)
>>> round(p.expected_loss())1800000
>>> events = p.simulate(1000, 7)
>>> events.has_sums_insuredTrue
Methods
| Name | Description |
|---|---|
| expected_claims() | Expected number of losses a year, per band. |
| expected_layer_loss() | Exposure-rated expected loss to a per-risk layer limit xs |
| expected_loss() | Expected annual loss, all bands. |
| expected_surplus_loss() | Expected annual loss ceded to a surplus treaty. |
| simulate() | n_sims years of losses, each with its risk’s sum insured. |
expected_claims()
Expected number of losses a year, per band.
Usage
expected_claims()Returns
list of float
expected_layer_loss()
Exposure-rated expected loss to a per-risk layer limit xs
Usage
expected_layer_loss(
limit, attachment, surplus_retention=None, surplus_lines=None
)attachment, optionally on each risk net of a surplus treaty.
Parameters
limit: float-
inffor unlimited. attachment: floatsurplus_retention: float = None-
A surplus treaty the layer inures to.
surplus_lines: float = None- A surplus treaty the layer inures to.
Returns
float
expected_loss()
Expected annual loss, all bands.
Usage
expected_loss()Returns
float
expected_surplus_loss()
Expected annual loss ceded to a surplus treaty.
Usage
expected_surplus_loss(retention, lines)Parameters
retention: floatlines: float
Returns
float
simulate()
n_sims years of losses, each with its risk’s sum insured.
Usage
simulate(n_sims, seed)Parameters
n_sims: intseed: int
Returns
EventSet