aggregate.EventSet

Simulated years of individual losses, for applying per-loss terms such

Usage

aggregate.EventSet()

as reinsurance layers.

Created by simulate_events. Year i was drawn from stream i of the generator keyed by seed, so results do not depend on the number of threads.

Attributes

Name Description
has_sums_insured Whether the losses carry sums insured.
has_times Whether the losses carry times.
n_sims Number of simulated years.
seed The seed the years were drawn from.

has_sums_insured

Whether the losses carry sums insured.

has_sums_insured: bool


has_times

Whether the losses carry times.

has_times: bool


n_sims

Number of simulated years.

n_sims: int


seed

The seed the years were drawn from.

seed: int

Methods

Name Description
counts() Number of losses in each year.
events() Year sim’s individual losses, in the order they were drawn.
from_years() Years of losses from elsewhere (your own simulation, or a
sums_insured() Year sim’s sums insured, one per loss, or None.
times() Year sim’s times, one per loss, or None.
totals() Each year’s total loss.
with_seasonal_times() The same events at times drawn from a seasonal density.
with_uniform_times() The same events at times spread uniformly over the year.

counts()

Number of losses in each year.

Usage

counts()
Returns
list of int

events()

Year sim’s individual losses, in the order they were drawn.

Usage

events(sim)
Parameters
sim: int
Returns
list of float
Raises
IndexError
If sim is not a simulated year.

from_years()

Years of losses from elsewhere (your own simulation, or a

Usage

from_years(years, sums_insured=None, seed=0, times=None)

catastrophe model’s event loss table by year), optionally with the sum insured of the risk each loss hit, which a surplus treaty needs.

Parameters
years: list of list of float

Each year’s losses, in order.

sums_insured: list of list of float = None

The same shape: each loss’s sum insured, at least the loss.

seed: int = 0

Recorded in results’ provenance.

times: list of list of float = None
The same shape: each loss’s time, as the fraction of the year elapsed (in [0, 1], non-decreasing within a year), which reinstatements pro rata as to time need.
Returns
EventSet
Examples
>>> from prospicio.aggregate import EventSet
>>> e = EventSet.from_years([[5.0, 2.0], [], [9.0]], [[10.0, 2.0], [], [50.0]])
>>> e.counts(), e.sums_insured(2)

([2, 0, 1], [50.0])


sums_insured()

Year sim’s sums insured, one per loss, or None.

Usage

sums_insured(sim)
Parameters
sim: int
Returns
list of float or None

times()

Year sim’s times, one per loss, or None.

Usage

times(sim)
Parameters
sim: int
Returns
list of float or None

totals()

Each year’s total loss.

Usage

totals()
Returns
PredictiveDistribution

with_seasonal_times()

The same events at times drawn from a seasonal density.

Usage

with_seasonal_times(weights)

The year is cut into len(weights) equal periods (12 for months, 52 for weeks) starting at the contract’s inception, and a loss falls in period k with probability weights[k] / sum(weights), uniformly within it. A zero weight means no losses in that period. The draws are those of with_uniform_times, mapped through the season’s quantile, so equal weights give the uniform times.

Parameters
weights: list of float
Each period’s relative weight: non-negative, not all zero.
Returns
EventSet
Examples
>>> from prospicio.aggregate import EventSet
>>> e = EventSet.from_years([[5.0, 2.0, 7.0]], seed=3)
>>> t = e.with_seasonal_times([0.0, 1.0]).times(0)
>>> all(x >= 0.5 for x in t) and t == sorted(t)

True


with_uniform_times()

The same events at times spread uniformly over the year.

Usage

with_uniform_times()

Year i‘s losses take sorted uniform draws, in their order, from a stream of the generator keyed by the set’s seed apart from the losses’ own, so the losses are unchanged and any year replays alone.

Returns
EventSet
Examples
>>> from prospicio.aggregate import EventSet
>>> e = EventSet.from_years([[5.0, 2.0, 7.0]], seed=3).with_uniform_times()
>>> t = e.times(0)
>>> t == sorted(t) and e.has_times

True