Description Usage Format Value Methods References Examples
Class for a VA with Guaranteed Minimum Accumulation Benefit (GMAB)
and Guaranteed Minimum Accumulation Benefit (GMDB).
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.
1 |
R6Class object.
Object of R6Class
newConstructor method with arguments:
payoffpayoff object of the GMAB guarantee
t0timeDate object with
the issue date of the contract
ttimeDate object with the end date of the
accumulation period
t1timeDate object with the end date of the
life benefit payment
agenumeric positive scalar with the age
of the policyholder
feeconstant_parameters object with
the fee
barriernumeric positive scalar with the
state-dependent fee barrier
penaltypenalty_class object with the
penalty
death_payoffpayoff object with the payoff
of the GMDB guarantee
get_timesget method for the product time-line.
Returns a timeDate object
get_ageget method for the age of the insured
set_ageset method for the age of the insured
get_barrierget method for the state-dependent fee barrier. Returns a positive scalar with the barrier
set_barrierset method for the state-dependent fee barrier. Argument must be a positive scalar.
set_penalty_objectthe argument penalty is a
penalty_class object which is stored in a private field.
get_penalty_objectgets the penalty_class object.
set_penaltyset method for the penalty applied in case of surrender. The argument must be a scalar between 0 and 1.
get_penaltyget 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_feeset method for the contract fee. The argument is
a constant_parameters object with the fee.
set_payoffset method for the payoff_guarantee
object of the GMAB rider
set_death_payoffset method for the
payoff_guarantee object of the GMDB rider
survival_benefit_timesreturns a numeric vector with
the survival benefit time indexes.
surrender_timesreturns 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_yrsreturns the product time-line in fraction of year
cash_flowsreturns 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 and
death_time a time index with the time of death
survival_benefitReturns a numeric scalar corresponding to
the survival benefit.
The arguments are spot_values vector which holds the values of
the underlying fund and t the time index of the survival benefit.
get_premiumReturns 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 | #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)
#Five years time-line
begin <- timeDate::timeDate("2016-01-01")
end <- timeDate::timeDate("2020-12-31")
#Age of the insured
age <- 60
# A constant fee of 2% per year (365 days)
fee <- constant_parameters$new(0.02, 365)
#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 the GMAB + GMDB with the same payoff for survival and death
#benefits
contract <- GMAB_GMDB$new(rollup, t0 = begin, t = end, age = age, fee =fee,
barrier = barrier, penalty = penalty, death_payoff = rollup)
|
Loading required package: orthopolynom
Loading required package: polynom
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.