Skip to content

Simulating Cashflows

Simulate cash flows using Monte-Carlo methods for a given policy. Function will use generated mortality, health state and economic variables to generate cashflows for n different pathways. This can be used either directly for calculations, or passed into the value_policy function for pricing statistics.

Note

For each policy, the benefit paid at each time period is defined as below:

  • Account Based Pension: If the policyholder is alive, pays the inflation-adjusted expense. If the benefit exceeds the remaining balance, the remaining balance is paid. Otherwise, no benefit is paid.
  • Life Annuity: If the deferment period has elapsed and policyholder is alive, pays benefit after flat-rate increase adjustment. Otherwise, no benefit is paid.
  • Care Annuity: If policyholder is alive or minimum guaranteed period is still active, pays sum of all benefits a policyholder is eligible for under LTC after flat-rate increase adjustment. Otherwise, no benefit is paid.
  • Variable Annuity: If policyholder is alive, pays benefit of the maximum withdrawal amount permissible under the contract. If the benefit exceeds the remaining balance, the remaining balance is paid. Otherwise, no benefit is paid.
  • Pooled Annuity: If the policyholder is alive, pays benefit after factoring mortality experience adjustment \((p_{x+t}/p_{x+t}^*)\) and interest rate adjustment \((1+r_{x+t}^*)/(1+r_{x+t})\). Otherwise, no benefit is paid.
  • Reverse Mortgage: If the policyholder dies during the time period, pays the surplus of the loan value deducted by house value after adjusting for cost-of-sale. If the surplus is negative or policyholder doesn't die during period, no benefit is paid.

simulate_cf(policy, seed = 0, n = 100, state = NULL, econ_var = NULL, cohort_death_probs = NULL)

   Parameters:

     policy : Policy object

       Policy object generated from create_policy function (see Creating Policy Object)

     seed : numeric

       Random seed used for RNG

     n : numeric

       Number of paths to simulate (Monte-Carlo method)

     state : matrix

       Matrix of health states for \(n\) pathways over \(m\) periods (see Health State / Mortality)

     econ_var : list

       List of matrices for each economic variables required by the chosen policy, these include:

       - $sdf: stochastic discount factor -> required by All Policies

       - $infla: inflation index -> required by Account Based Pension

       - $stock: stock price -> required by Account Based Pension, Pooled Annuity, Variable Annuity

       - $zcp3m: zero-coupon bond yield (3-month) -> required by Reverse Mortgage

       - $house: house price -> required by Reverse Mortgage

       (see Economic Scenario Generator for example implementation)

     cohort_death_probs : vector

       a vector of 1-year cohort death probabilities

   Returns:

     SimCashflow object

   Usage:

ap <- create_policy_AP(400000, 60000)
cf <- simulate_cf(policy = ap, age = 65)

Note

state & econ_var use \(n × m\) matrices, where \(n\) is the number of simulated paths and \(m\) is the number of periods. Any periodicity can be used as long as all matrices are consistent, i.e. each time-step can represent a month, year, or other length (simulation defaults to annual period).

Note

Economic variables needed by each policy:

  • Account Based Pension: requires stochastic discount factors ($sdf), inflation rate ($infla) & investment return ($stock).
  • Life Annuity: requires stochastic discount factors ($sdf).
  • Care Annuity: requires stochastic discount factors ($sdf).
  • Variable Annuity: requires stochastic discount factors ($sdf), investment return ($stock).
  • Pooled Annuity: requires stochastic discount factors ($sdf), investment return ($stock).
  • Reverse Mortgage: requires stochastic discount factors ($sdf), 3-month zero-coupon bond yield ($zcp3m) & change in house price ($house).

SimCashflow

   Attributes:

     cf : Matrix

       Simulated cashflows for each pathway at every time step

     sdf : Matrix

       Stochastic discount factors for each pathway at every time step

Note

cf & sdf are \(n × m\) matrices, where \(n\) is the number of simulated paths and \(m\) is the number of periods.