Skip to contents

Computes prospective or recursive terminal reserves for joint-life and last-survivor insurance. For k-thly premiums, `P` is the annualized premium and each installment equals `P / k`.

Usage

reserve_xy(
  lt,
  x = NULL,
  y = NULL,
  i = NULL,
  i_type = "effective",
  m = 1L,
  type = c("whole", "term", "endowment", "pure_endowment"),
  status = c("joint", "last"),
  n = Inf,
  h = 0L,
  benefit = 1,
  P = NULL,
  n_prem = NULL,
  k = 1L,
  timing = c("due", "immediate"),
  premium_start = c("issue", "deferred"),
  frac = c("UDD", "CF", "CML", "Balducci"),
  woolhouse = c("none", "first", "second"),
  t = NULL,
  method = c("prospective", "recursive"),
  output = c("summary", "value", "audit", "table"),
  tidy = NULL,
  check = TRUE,
  tol = 1e-10,
  ...
)

Arguments

lt

One life table, `list(lt_x, lt_y)`, or a two-life [life_contract()] object.

x, y

Integer ages at issue. Optional for a life contract.

i

Annual interest-rate input. Optional for a life contract.

i_type

Interest-rate type.

m

Conversion frequency for nominal rates.

type

One of `"whole"`, `"term"`, `"endowment"`, or `"pure_endowment"`.

status

`"joint"` or `"last"`.

n

Insurance term in years after deferment.

h

Nonnegative integer deferment in years.

benefit

Positive benefit amount.

P

Optional annualized premium. If `NULL`, [premium_xy()] is used.

n_prem

Premium-paying term. Fractional values require `n_prem * k` to be an integer.

k

Number of premium payments per year.

timing

`"due"` or `"immediate"`.

premium_start

`"issue"` or `"deferred"`.

frac

Fractional-age assumption.

woolhouse

`"none"`, `"first"`, or `"second"`.

t

Integer policy durations.

method

`"prospective"` or `"recursive"`. Recursion currently requires `h = 0`, `k = 1`, due premiums, and premiums starting at issue.

output

`"summary"`, `"value"`, or `"audit"`. `"table"` is a compatibility alias for `"summary"`.

tidy

Deprecated logical output selector.

check

Logical input-check switch.

tol

Numeric tolerance.

...

Deprecated argument aliases.

Value

A compact tibble, a named numeric vector, or a long audit tibble.

Details

The prospective reserve is $${}_tV = \operatorname{APV}_t(\text{future benefits}) - P^{(k)}\operatorname{APV}_t(\text{future premium annuity}).$$ Because [annuity_xy()] assigns amount `1 / k` to each payment, `P` is annualized and the actual installment is `P / k`.

Reserves are measured immediately before a premium payable at duration `t`. With immediate premiums this includes the installment scheduled exactly at `t`, including a last installment at maturity. Future installments use the selected annuity method; the current installment is an exact `P / k`. Pure endowments use direct discounted survival to maturity, avoiding a subtraction of nearly equal insurance values. Both lives are assumed alive at the valuation duration, under independent mortality. In particular, `status = "last"` selects the insured event; it does not condition on an unspecified surviving life. Last-survivor recursion tracks the both-alive and each single-survivor state separately. Both recursive statuses use backward conditional transition identities, direct annual `lx` decrements and the original log interest basis. This avoids forward cancellation and loss from an effective-rate conversion. Unreachable transitions contribute exactly zero. The recursion's existing timing and deferment restrictions are retained. Conditional states whose reserves themselves overflow double precision are not generally recoverable.