tests/testthat/test-CF-Annuity-Deferred.R

test_that("Deferred Annuity Cash Flows", {
    library(MortalityTables)
    mortalityTables.load("Austria_Annuities_AVOe2005R")

    Tarif.DefAnnuity = InsuranceTarif$new(
        name = "Example Tariff - Deferred Annuity",
        type = "annuity",
        tarif = "Life1",
        desc = "A deferred annuity (life-long payments start at age 65) with reg. premiums",

        policyPeriod = function(params, values) { 120 - params$ContractData$age},
        deferralPeriod = function(params, values) { 65 - params$ContractData$age},
        premiumPeriod = function(params, values) { 65 - params$ContractData$age},
        premiumRefund = 1,

        mortalityTable = AVOe2005R.unisex,
        i = 0.005
    )
    Contract.DefAnnuity = InsuranceContract$new(
        tarif = Tarif.DefAnnuity,
        age = 40, YOB = 1980,
        sumInsured = 1200,
        contractClosing = as.Date("2020-09-01"),
        calculate = "cashflows"
    )
    expect_equal(Contract.DefAnnuity$Parameters$ContractData$policyPeriod, 80)
    expect_equal(Contract.DefAnnuity$Parameters$ContractData$deferralPeriod, 25)
    expect_equal(Contract.DefAnnuity$Parameters$ContractData$premiumPeriod, 25)


    expect_true(all(Contract.DefAnnuity$Values$cashFlows %>% dplyr::select(-premiums_advance, -survival_advance, -death_GrossPremium, -death_Refund_past) == 0))

    # 25 years premium cash flow
    expect_equal(Contract.DefAnnuity$Values$cashFlows$premiums_advance, c(rep(1, 25), rep(0, 56)))
    # premium payment start after 25 years
    expect_equal(Contract.DefAnnuity$Values$cashFlows$survival_advance, c(rep(0, 25), rep(1, 55),0))
    # premium payment start after 25 years
    expect_equal(Contract.DefAnnuity$Values$cashFlows$death_GrossPremium, c(1:25, rep(0, 56)))
    # death refund flag
    expect_equal(Contract.DefAnnuity$Values$cashFlows$death_Refund_past, c(rep(1, 25), rep(0, 56)))
})

Try the LifeInsureR package in your browser

Any scripts or data that you put into this service are public.

LifeInsureR documentation built on June 15, 2025, 1:08 a.m.