Tuesday, March 13, 2018

PenCalc: A tool for simulating pension outcomes

Policy decisions on pensions should be shaped by an evaluation of the link between various parameters of the pension scheme and potential outcomes. For example, the setting of fees, investment guidelines, annuity policies, should be designed after a careful study of how these will affect the pension received. This is especially important in defined-contribution pension systems where there is considerable uncertainty about returns that may be obtained. Pension outcomes must, therefore, be understood through the lens of the risk-return trade-off.
This article presents penCalc, a new open source software system developed for conducting simulations on pension outcomes. It allows the key variables that may affect the pension to be changed, and presents the user with a range of possible pension amounts. This can help policy makers evaluate the impact of a policy change on pension outcomes. This can also be used by individuals for retirement planning.

penCalc

penCalc simulates pension scenarios based on assumptions on age of entry, exit, wage growth, contribution rate, portfolio allocation, asset returns, annuity prices, and inflation. It is developed using R, an open source programming language and software environment for statistical computing, supported by the R Foundation for Statistical Computing. The package may be installed as follows:
devtools::install_github("renukasane/penCalc")

Assumptions

The default assumptions made in penCalc are shown in Table 1. They have been chosen to be as close as possible to the National Pension System (NPS) in India. For example, the age at exit is the current retirement age. The returns assumptions are derived from a study of the Indian financial environment. The life-cycle allocation is sourced from the Deepak Parekh Committee Report set up by the PFRDA in 2009 on investment allocations. In a life-cycle portfolio allocation, the exposure to equity is very high at younger ages, and gradually reduces as one approaches retirement. The fees and expenses also reflect the current AUM charges in the NPS, as well as the flat fee charged by the Centralised Record-keeping Agency (even though this may not be exactly INR 100). The annuity price is taken from the current offerings of the Jeevan Akshay policy of the Life Insurance Corporation of India.
Table 1: Assumptions
Age
Age of entry 25
Age of exit 60
Wages and contributions
Starting wage INR 25,000 per month.
Wage growth (nominal) 8% per annum
Contribution rate 20% of wage
Initial amount (already in the account) 0
Inflation (mean, sd) (4%, 0)
Investment portfolio Life-cycle
Returns (nominal)
GOI bonds (mean, sd) (7%, 0)
Corporate bonds (mean, sd) (10%, 0)
Equities (mean, sd) (16%, 25%)
Fees
AUM 0.01%
Flat fee INR 100 p.a.
Annuity parameters
Percent to be annuitised 40%
Price for an INR 1 a day nominal
annuity
INR 4,087

These default numbers can be changed to reflect different views on NPS rules as well as the Indian macroeconomic environment. The tool can also be used for pension income simulation with assumptions that reflect the environment in different countries.

Using penCalc

The structure of the code is given below. The function consists of various parameters, and the default values set against the parameters. For example, age.entry is set to 25, while age.exit is set to 60. All of these parameters can be changed.
  x <- pencalc(age=list(age.entry=25,     
                        age.exit=60),         
       wage=list(25000,            
                 0.08,                  
                 0.2,                   
                 initial.amount=0),    
       inflation=list(c(0.04,0), real=TRUE),        
       inv.weights=list("lc"),    
       returns=list(data.frame(mean=c(0.07, 0.10, 0.16), 
                                      sd=c(0, 0, 0.25)),
                    c(monthly.fees.expenses=0.01, 100)),
         annuity=list(perc.annuitised=0.4, value=4087))

How the model works

The starting wage and the yearly growth rate in wages are used to generate a vector of wages for the years the subscriber is expected to be in the system. The number of years is calculated as the difference between the age of entry and exit. In this particular instance, the number of years is 60-25+1, that is 36 years.
The contribution rate is then used on this vector of wages to arrive at the rupee value of contributions made each year in the NPS. The wages are expected to stay the same in each month of the year. For example, in this case, the contributions will be 20% of the wage of INR 25,000 in the first year.

The returns on each instrument are simulated from a normal distribution with the mean and standard deviation of that particular instrument. The investment weights and returns are used to arrive at a portfolio return. The monthly fees and expenses are deducted from the portfolio returns. The contributions and returns are accumulated over each year in the system and give us the total accumulation in the pension account.

If the user has entered the "real=TRUE" option, then the rate of inflation is subtracted from all inputs. The results of the model in such a case will be in terms of today's rupee value, and not nominal values. The default inflation rate is 4%, but as discussed earlier, this can be easily changed.

The simulation is done 1,000 times and generates a distribution of accumulated amounts in the NPS account. The amount to be annuitised (for example 40%) is subtracted from this accumulation. The annuity price is used to arrive at the monthly pension that can be purchased with this amount. The remainder (for example 60%) is available as a lump sum withdrawal. The model has the following outputs:
  1. In hand accumulation: This is the average amount of lump sum withdrawal available at retirement. In the case of 40% annuitisation, the in hand accumulation is the remainder 60% of the total accumulated balances. In the case of full annuitisation, this amount will be zero, as the entire accumulation is turned into an annuity.
  2. Monthly pension: This is the rupee value of the average monthly pension the retiree can expect to get after the purchase of the annuity.
  3. Replacement rate: This is the ratio of the pension to the last drawn wage. The replacement rate only makes sense for government employees. For those with varied contributions over their lifetime, it is not sensible to divide the pension with the last wage. The replacement rate should be ignored for subscribers other than regular salaried employees.

Example 1: Portfolio dominated by GOI bonds

This example demonstrates the use of the calculator for an investment allocation between government bonds and equity of 85%and 15% respectively. We have chosen the real=TRUE option. Hence all the results are in 2018 rupees.
Since the example is using all the default values and only changing the investment weights (as the default weights are the life cycle model), we change that parameter in the model. We first create a weightmatrix where we specify the portfolio allocation into government debt and equity. We then supply the weightmatrix to inv.weights. The code is as follows:
 
library(penCalc)
weightmatrix <- data.frame(goi_bonds=rep(0.85, 36), 
                              corp_bonds=rep(0,36),
                              equity=rep(0.15,36))
set.seed(111)
# 40% annuity
x <- pencalc(inflation=list(c(0.04,0),real=TRUE),
     inv.weights=list(weightmatrix))

# 100% annuity
y <- pencalc(inflation=list(c(0.04,0), real=TRUE),
             inv.weights=list(weightmatrix),
             annuity=list(perc.annuitised=1, value=4087))

Table 2 describes the results. The first three columns show the results for 40% annuitisation, while the next three show the results for 100% annuitisation. The results are in "real" terms. The numbers in the bracket represent the standard deviation - this reflects the uncertainty around the average lump sum and pension amounts.
Table 2: Portfolio dominated by GOI bonds
40%
annuitisation
100% annuitisation

Average 10th percentile 90th percentile Average 10th percentile 90th percentile
Monthly Pension (in Rs.) 23,297 (828) 22,196 24,361 58,242 (2072) 55,491 60,902
In hand accumulation (in Rs. million) 4.7 (0.17) 4.4 4.9 0.0 (0.0) 0.0 0.0
Replacement rate 23.6 (0.80) 22.5 24.7 59.0 (2.1) 56.2 61.7

With 40% annuitisation, the average pension at the age of 60 is INR 23,297. This provides an average replacement rate of 24%and also provides a lump sum withdrawal of INR 4.7 million. Pension at the 90th percentile of the distribution is INR 24,361, while at the 10th percentile is INR 22,196. The replacement rates are 25% and 22% respectively.

With 100% annuitisation, the average monthly pension increases to INR 58,242 and the replacement rate to 59%. The 90th percentile of this distribution is INR 60,902, with a replacement rate of 62% while the 10th percentile is 55,491 with a replacement rate of 56%.

Example 2: Life-cycle portfolio investment

The previous example is heavily skewed towards government bonds. Given the huge equity premium in India, it is useful for the NPS to invest more heavily in equities. One way of increasing equity exposure is through a life-cycle portfolio allocation. The current example uses the default life-cycle portfolio weights indicated by the "lc" option. However, these weights can also be changed. The code is as follows:
 
library(penCalc)
set.seed(111)
# 40% annuity
x <- pencalc(inflation=list(c(0.04,0), real=TRUE),
             inv.weights=list("lc"))
     
# 100% annuity
y <- pencalc(inflation=list(c(0.04,0),real=TRUE),
             inv.weights=list("lc"),
             annuity=list(perc.annuitised=1, value=4087))

Table 3 describes the results. The average pension at the age of 60 is INR 36,744 with 40% annuitisation. This provides a replacement rate of 37% and also leaves a lump sum amount of INR 7.4 million. The average here is higher than that obtained using a portfolio dominated by government bonds. However, the standard deviation is also higher, suggesting that the risk is higher. This is not surprising because the exposure to equity is higher in the life-cycle investment portfolio.
Table 3: Life-cycle portfolio investment
40% annuitisation 100% annuitsation

Average 10th percentile 90th percentile Average 10th percentile 90th percentile
Monthly Pension (in Rs.) 36,744.3 (3702.4) 32,017.9 41,462.0 91,860.8 (9256.1) 80,044.7 103,654.9
In hand accumulation (in
Rs. million)
7.41 (0.75) 6.45 8.35 0.0 0.0 0.0
Replacement rate 37.2 (3.80) 32.4 42.0 93.1 (9.4) 81.1 105.1

Pension at the 90th percentile of the distribution is INR 41,462, with a replacement rate of 42%, but at the 10th percentile is INR 32,018 with a replacement rates of 32%. Full annuitisation provides an average monthly pension of INR 92,000 and a replacement rate of 93%. At the 10th percentile, the replacement rate drops to 81%, but at the 90th percentile it jumps up to 105%.

Example 3: Varying contribution rates

The assumption of a constant contribution rate is not realistic in the case of informal sector workers. The model handles this by using a vector of wages, and a contribution rate of 100% in the model. This effectively makes the values entered in the wage the actual contribution. In the example described below, we simulate 36 values for wages from a normal distribution with a mean of INR 3,000 and a standard deviation of INR 100. We then use a contribution rate of 100%. The code is as follows:
library(penCalc)
wage = round(rnorm(36, 3000, 100),0)
# 40% 
set.seed(111)
x <- pencalc(wage=list(wage,
                       0,
                       1,
                       initial.amount=0),
              inflation=list(c(0.04,0),real=TRUE))
      
#100 %
set.seed(111)
     y <- pencalc(wage=list(wage,
                     0,
                            1,
                            initial.amount=0),
                  inflation=list(c(0.04,0), real=TRUE),
           nnuity=list(perc.annuitised=1, value=4087))
 
Table 4 presents the results. As the replacement rate is meaningless in this context, it is not shown in the table. An informal sector worker with average monthly contribution of INR 3,000 every year for 36 years, can expect an average monthly pension of INR 13,454 with 40% annuitisation, or an average monthly pension of INR 33,635 with 100% annuitisation.
Table 4: Varying contribution rates
40%
annuitisation
100% annuitsation

Average 10th percentile 90th percentile Average 10th percentile 90th percentile
Monthly Pension (in Rs.) 13,454 (1698.3) 11,305.8 15,623.4 33,635.2 (4,245.9) 28,264.5 39,058.5
In hand accumulation (in
Rs. million)
2.7 (0.34) 2.3 3.1 0.0 (0.0) 0.0 0.0

Conclusion

penCalc is a new open source software system developed to model pension outcomes. It allows the key variables of interest to be changed - and sets out a range of plausible outcomes using data on returns, equity premium and income from annuities purchased at retirement. The results are averages from the simulation. It is, therefore, useful to also look at the standard deviation to get a complete picture of the possible outcomes. As has been demonstrated in the examples, the outcomes can vary considerably, and retirees must factor in this uncertainty as they do their financial planning.

A recent working paper, Simulating Pension Income Scenarios with penCalc: An Illustration for India's National Pension System, demonstrates many examples of the use of this tool for different assumptions of equity returns, and annuity prices. We hope this software becomes a useful tool for policy makers and regulators as they develop pensions policy.

I thank Arjun Gupta for collaboration on the software development, William Price for collaboration on the working paper. The work was supported through the FIRST Initiative in funding the engagement with India's Pension Fund Regulatory and Development Authority. This article first appeared on Ajay Shah's blog, 25 January, 2018.

No comments:

Post a Comment

Why Rajasthan government’s decision to return to old pension scheme is a fiscal disaster

 by Rajiv Mehrishi and Renuka Sane We wrote in the Indian Express about the Rajasthan government decision to revert back to the Old Pension...