GMIB: Variable Annuity with GMIB guarantee

Description Usage Format Details Value Methods References Examples

Description

Class for VA with Guaranteed Minimum Income Benefit (GMIB). A GMIB rider provides a lifetime annuity from a specified future time. Types of GMIB supported are a whole-life annuity (Ia), an annuity-certain (Ib) or annuity-certain followed by a deferred whole-life annuity (Ic). It supports a simple state-dependent fee structure with a single barrier.
See References for a description of variable annuities life insurance products, their guarantees and fee structures.

Usage

1

Format

R6Class object.

Details

The annuity payment is assumed to be annual and it's calculated as the annuitization rate by the roll-up or ratchet payoff at the end of the accumulation period t.

Value

Object of R6Class

Methods

new

Constructor method with arguments:

payoff

payoff object of the GMAB guarantee

t0

timeDate object with the issue date of the contract

t

timeDate object with the end date of the accumulation period

t1

timeDate object with the end date of the life benefit payment

age

numeric positive scalar with the age of the policyholder

fee

constant_parameters object with the fee

barrier

numeric positive scalar with the state-dependent fee barrier

penalty

penalty_class object with the penalty

eta

numeric scalar with the market annuitisation rate

type

string with the income benefit type: it can be 'Ia' for a whole-life annuity, 'Ib' for an annuity-certain with maturity t1, 'Ic' for an annuity certain with maturity t1 followed with a deferred life-annuity if the insured is alive after t1.

get_times

get method for the product time-line. Returns a timeDate object

get_age

get method for the age of the insured

set_age

set method for the age of the insured

get_barrier

get method for the state-dependent fee barrier. Returns a positive scalar with the barrier

set_barrier

set method for the state-dependent fee barrier. Argument must be a positive scalar.

set_penalty_object

the argument penalty is a penalty_class object which is stored in a private field.

get_penalty_object

gets the penalty_class object.

set_penalty

set method for the penalty applied in case of surrender. The argument must be a scalar between 0 and 1.

get_penalty

get method for the surrender penalties. It can be a scalar between 0 and 1 in case the penalty is constant or a numeric vector in case the penalty varies with time.

set_fee

set method for the contract fee. The argument is a constant_parameters object with the fee.

set_payoff

set method for the payoff_guarantee object.

survival_benefit_times

returns a numeric vector with the survival benefit time indexes.

surrender_times

returns a numeric vector with the surrender time indexes. Takes as argument a string with the frequency of the decision if surrendering the contract, e.g. "3m" corresponds to a surrender decision taken every 3 months.

times_in_yrs

returns the product time-line in fraction of year

cash_flows

returns a numeric vector with the cash flows of the product. It takes as argument spot_values a numeric vector which holds the values of the underlying fund, death_time a time index with the time of death and discounts a numeric vector with the discount factors at time of death. These latest are used to calculate the death benefit for type Ib and Ic.

survival_benefit

Returns a numeric scalar corresponding to the survival benefit. The arguments are spot_values vector which holds the values of the underlying fund and time the time index of the survival benefit. The function will return 0 if there's no survival benefit at the specified time

get_premium

Returns the premium as non negative scalar

References

  1. [BMOP2011] Bacinello A.R., Millossovich P., Olivieri A., Pitacco E., "Variable annuities: a unifying valuation approach." In: Insurance: Mathematics and Economics 49 (2011), pp. 285-297.

  2. [BHM2014] Bernard C., Hardy M. and Mackay A. "State-dependent fees for variable annuity guarantees." In: Astin Bulletin 44 (2014), pp. 559-585.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#Sets up the payoff as a roll-up of premiums with roll-up rate 1%

rate <- constant_parameters$new(0.01)

premium <- 100
rollup <- payoff_rollup$new(premium, rate)


t0 <- timeDate::timeDate("2016-01-01")

#Five year accumulation period
t <- timeDate::timeDate("2020-12-31")

#Five year annuity certain period
t1 <- timeDate::timeDate("2025-12-31")

age <- 60

# A constant fee of 2% per year (365 days)
fee <- constant_parameters$new(0.02)

#Barrier for a state-dependent fee. The fee will be applied only if
#the value of the account is below the barrier
barrier <- 200

#Withdrawal penalty applied in case the insured surrenders the contract
#It is a constant penalty in this case
penalty <- penalty_class$new(type = 1, 0.01)

#Sets up a VA contract with GMIB guarantee, whole-life (Ia).
contract <- GMIB$new(rollup, t0 = t0, t = t, age = age,  fee = fee,
barrier = barrier, penalty = penalty, eta = 0.04)

#Sets up a VA contract with GMIB gurantee annuity-certain with
#maturity t1
contract <- GMIB$new(rollup, t0 = t0, t = t, t1 = t1,  age = age,
fee = fee, barrier = barrier, penalty = penalty, eta = 0.04, type = "Ib")

Example output

Loading required package: orthopolynom
Loading required package: polynom

valuer documentation built on May 2, 2019, 3:43 p.m.