Skip to contents

limit 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.

share

Placed share, in (0, 1].

aggregate_deductible

Annual aggregate deductible.

aggregate_limit

Annual aggregate limit; Inf for none.

reinstatements

Number of free reinstatements, which sets the annual limit to limit * (reinstatements + 1); cannot be combined with a finite aggregate_limit.

premium

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 to limit * (length(reinstatement_rates) + 1); cannot be combined with reinstatements or a finite aggregate_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 at 1 - t. Needs reinstatement_rates, and events with times (with_uniform_times(), or times in events_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