Excess-of-loss reinsurance layer
xol_layer.Rdlimit xs attachment on each loss, then annual terms. For one year,
ceded = share * min(max(sum of per-loss recoveries - aggregate_deductible, 0), aggregate_limit), less any loss corridor (with_loss_corridor())
before the annual limit.
Usage
xol_layer(
name,
limit,
attachment,
share = 1,
aggregate_deductible = 0,
aggregate_limit = Inf,
reinstatements = NULL,
premium = 0,
reinstatement_rates = NULL,
pro_rata_time = FALSE,
ptr = NULL
)Arguments
- name
Layer name, unique within a tower.
- limit
Per-occurrence limit; may be
Inf.- attachment
Per-occurrence attachment.
Placed share, in
(0, 1].- aggregate_deductible
Annual aggregate deductible.
- aggregate_limit
Annual aggregate limit;
Inffor none.- reinstatements
Number of free reinstatements, which sets the annual limit to
limit * (reinstatements + 1); cannot be combined with a finiteaggregate_limit.Upfront premium for the placed share; used only by
reinstatement_rates.- reinstatement_rates
Paid reinstatements: one rate per reinstatement, as a fraction of
premium(1 is 100%), pro rata as to amount. Sets the annual limit tolimit * (length(reinstatement_rates) + 1); cannot be combined withreinstatementsor a finiteaggregate_limit.- pro_rata_time
Paid reinstatements also pro rata as to time: the limit a loss at time
t(the fraction of the year elapsed) uses up is charged at1 - t. Needsreinstatement_rates, and events with times (with_uniform_times(), ortimesinevents_from_years()).- ptr
Internal: an existing layer to wrap.
Value
An xol_layer object with read-only properties for each term
(loss_corridor is c(lower, upper, retained), empty when there is
none).
See also
quota_share() and aggregate_stop_loss() for the other contract
types, which are layers too; with_loss_corridor() for a corridor.
Examples
l <- xol_layer("5x5", 5e6, 5e6, reinstatements = 1)
ceded(l, 7e6)
#> [1] 2e+06
ceded(l, c(12e6, 20e6, 30e6))
#> [1] 1e+07
paid <- xol_layer("10x10", 10, 10, premium = 2, reinstatement_rates = c(1, 0.5))
reinstatement_premium(paid, c(22, 12))
#> [1] 2.2
timed <- xol_layer("10x10", 10, 10, premium = 2, reinstatement_rates = c(1, 0.5),
pro_rata_time = TRUE)
reinstatement_premium(timed, c(22, 12), times = c(0.25, 0.5))
#> [1] 1.6