Using the LifeInsuranceContracts Package

Reinhold Kainhofer

Open Tools
reinhold@kainhofer.com

2020-08-12

The LifeInsuranceContracts package provides a full-featured framework to model classical life insurance contracts (non-unit linked). Mathematically, a general life insurance contracts can be defined using death and survival (and disability) benefit vectors to define the cash flows and calculate all premiums and reserves recursively. This powerful approach is taken by the LifeInsuranceContracts package to provide the most flexible contract modelling framework in R.

Contract/Tariff parameter structure an default values

str(InsuranceContract.ParameterDefaults)
#> List of 8
#>  $ ContractData       :List of 23
#>   ..$ id                    : chr "Hauptvertrag"
#>   ..$ sumInsured            : num 1e+05
#>   ..$ YOB                   : NULL
#>   ..$ age                   : NULL
#>   ..$ technicalAge          : NULL
#>   ..$ ageDifferences        : NULL
#>   ..$ sex                   : chr "unisex"
#>   ..$ policyPeriod          : num 25
#>   ..$ premiumPeriod         : NULL
#>   ..$ deferralPeriod        : num 0
#>   ..$ guaranteedPeriod      : num 0
#>   ..$ contractClosing       : NULL
#>   ..$ blockStart            : num 0
#>   ..$ premiumPayments       : chr "in advance"
#>   ..$ benefitPayments       : chr "in advance"
#>   ..$ premiumFrequency      : num 1
#>   ..$ benefitFrequency      : num 1
#>   ..$ widowProportion       : num 0
#>   ..$ deathBenefitProportion: num 1
#>   ..$ premiumRefund         : num 0
#>   ..$ premiumIncrease       : num 1
#>   ..$ annuityIncrease       : num 1
#>   ..$ deathBenefit          : num 1
#>  $ ContractState      :List of 3
#>   ..$ premiumWaiver   : logi FALSE
#>   ..$ surrenderPenalty: logi TRUE
#>   ..$ alphaRefunded   : logi FALSE
#>  $ ActuarialBases     :List of 9
#>   ..$ mortalityTable           : NULL
#>   ..$ invalidityTable          : NULL
#>   ..$ invalidityEndsContract   : logi TRUE
#>   ..$ i                        : num 0
#>   ..$ balanceSheetDate         : Date[1:1], format: "1900-12-31"
#>   ..$ balanceSheetMethod       : chr "30/360"
#>   ..$ surrenderValueCalculation: NULL
#>   ..$ premiumFrequencyOrder    : num 0
#>   ..$ benefitFrequencyOrder    : num 0
#>  $ Costs              : num [1:6, 1:6, 1:4] 0 0 0 0 0 0 0 0 0 0 ...
#>   ..- attr(*, "dimnames")=List of 3
#>   .. ..$ type     : chr [1:6] "alpha" "Zillmer" "beta" "gamma" ...
#>   .. ..$ basis    : chr [1:6] "SumInsured" "SumPremiums" "GrossPremium" "NetPremium" ...
#>   .. ..$ frequency: chr [1:4] "once" "PremiumPeriod" "PremiumFree" "PolicyPeriod"
#>  $ Loadings           :List of 13
#>   ..$ ongoingAlphaGrossPremium: num 0
#>   ..$ tax                     : num 0.04
#>   ..$ unitcosts               : num 0
#>   ..$ security                : num 0
#>   ..$ noMedicalExam           : num 0
#>   ..$ noMedicalExamRelative   : num 0
#>   ..$ sumRebate               : num 0
#>   ..$ extraRebate             : num 0
#>   ..$ premiumRebate           : num 0
#>   ..$ partnerRebate           : num 0
#>   ..$ extraChargeGrossPremium : num 0
#>   ..$ benefitFrequencyLoading :List of 4
#>   .. ..$ 1 : num 0
#>   .. ..$ 2 : num 0
#>   .. ..$ 4 : num 0
#>   .. ..$ 12: num 0
#>   ..$ premiumFrequencyLoading :List of 4
#>   .. ..$ 1 : num 0
#>   .. ..$ 2 : num 0
#>   .. ..$ 4 : num 0
#>   .. ..$ 12: num 0
#>  $ Features           :List of 2
#>   ..$ betaGammaInZillmer: logi FALSE
#>   ..$ alphaRefundLinear : logi TRUE
#>  $ ProfitParticipation:List of 16
#>   ..$ advanceProfitParticipation            : num 0
#>   ..$ advanceProfitParticipationInclUnitCost: num 0
#>   ..$ waitingPeriod                         : NULL
#>   ..$ guaranteedInterest                    : NULL
#>   ..$ interestProfitRate                    : NULL
#>   ..$ totalInterest                         : NULL
#>   ..$ mortalityProfitRate                   : NULL
#>   ..$ expenseProfitRate                     : NULL
#>   ..$ sumProfitRate                         : NULL
#>   ..$ terminalBonusRate                     : NULL
#>   ..$ terminalBonusFundRate                 : NULL
#>   ..$ profitParticipationScheme             : NULL
#>   ..$ profitComponents                      : chr [1:5] "interest" "risk" "expense" "sum" ...
#>   ..$ profitClass                           : NULL
#>   ..$ profitRates                           : NULL
#>   ..$ scenarios                             : list()
#>  $ Hooks              :List of 2
#>   ..$ adjustCashFlows     : NULL
#>   ..$ adjustCashFlowsCosts: NULL

#pandoc.listRK(InsuranceContract.ParameterDefaults)