Class for a VA product with Guaranteed Minimum Withdrawal Benefit (GMWB).
A GMWB rider allows for periodic withdrawals from the policy account.
Types of GMWB supported are withdrawals up to a fixed date independent
of survival (Wa), withdrawals up to fixed date only if the insured is
alive (Wb) or whole life withdrawals (Wc).
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.
Constructor method with arguments:
payoff_GMWB object with the amount of
the periodic withdrawal
timeDate object with
the issue date of the contract
timeDate object with the end date of the contract
numeric positive scalar with the age
of the policyholder
constant_parameters object with
numeric positive scalar with the
state-dependent fee barrier
penalty_class object with the
string with the GMWB contract type:
it can be
'Wa' for withdrawals up to
'Wb' for withdrawals up to
if the insured is alive,
'Wc' for whole life withdrawals.
string with the frequency of withdrawals
expressed in months (e.g.
'12m' stands for yearly withdrawals).
get method for the product time-line.
get method for the age of the insured
set method for the age of the insured
get method for the state-dependent fee barrier. Returns a positive scalar with the barrier
set method for the state-dependent fee barrier. Argument must be a positive scalar.
penalty is a
penalty_class object which is stored in a private field.
set method for the penalty applied in case of surrender. The argument must be a scalar between 0 and 1.
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 method for the contract fee. The argument is
constant_parameters object with the fee.
set method for the
numeric vector with
the survival benefit time indexes.
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.
returns the product time-line in fraction of year
numeric vector with the
cash flows of the product. It takes as argument:
numeric vector which holds the values of the underlying
death_time a time index with the time of death and
numeric vector with the discount factors
at time of death. These latest are used to calculate the death
benefit for the GMWB of type Wa
Returns a numeric scalar corresponding to
the survival benefit.
The arguments are:
spot_values vector which holds the values of
the underlying fund,
death_time time index of the time of death
time the time index of the survival benefit.
The function will return 0 if there's no survival benefit at the
Returns the premium as non negative scalar
[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.
[BHM2014] Bernard C., Hardy M. and Mackay A. "State-dependent fees for variable annuity guarantees." In: Astin Bulletin 44 (2014), pp. 559-585.
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
#Sets up the periodic payment. premium <- 100 beta <- 0.1 GMWB_payment <- payoff_GMWB$new(premium, beta) #Issue date of the contract t0 <- timeDate::timeDate("2016-01-01") #Ten years expiration of the guarantee 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 GMWB guarantee type Wa with yearly #withdrawals for 10 years. contract <- GMWB$new(GMWB_payment, t0 = t0, t1 = t1, age = age, fee = fee, barrier = barrier, penalty = penalty, type = "Wa", freq = "12m")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.