Inflating away your pension — 2021 update

This is an update to my earlier estimate of the effects of an inflation cap on USS pensions.

I have added the two most recent years of CPI data and extended the time series of inflation by added earlier years from 1971, the year of the Nixon shock and the de-facto end of the Bretton Woods system. The latter change makes the analysis more economically coherent, as it uses data only from within the same macroscopic monetary regime (i.e. floating exchange rates).

The figure below shows the new extended inflation time series.

In the latest USS consultation, a 2.5% inflation cap is being considered again. Such a cap you mean that accrued pensions would be increased by CPI inflation, but only up to a maximum of 2.5% per year. If inflation is great than 2.5%, pensions would increase by 2.5%, resulting in a loss in real terms. Bootstrapping inflation from the time series above for an assumed investment horizon of 20 years produces the following distribution of pension values for a pound accrued today in 20 years’ time, relative to the base case of pension adjustments according to the policy change in 2011 (the “5%/15% rule”). If history repeats in the sense that future inflation will be drawn from past inflation since 1971, pensions invested today for 20 years would be worth about 30% less compared to the current policy of adjusting pensions by up to 5% p.a. if inflation is beween 0% and 5%, and by 5% plus half the difference between actual inflation and 5% up to a maximum inflation rate of 15%. If the planning horizon is longer than 20 years, which is the case for early-career USS members, average real values of their accrued pension will be lower and vice versa.

For completeness, I also calculate the bootstrapped distribution of pension values comparing the suggested 2.5% inflation cap to a policy without any inflation cap. Results are shown below. The relative pension loss as a result of the inflation cap is about 41%.

Defined contribution by the back door

Looking at average effects of inflation on pensions ignores the dispersion caused by fluctuations in the inflation rate and their asymmetric effects on pension values. As can be seen in the graphs above, realised pension values vary from about 0.5 to 0.9 compared to the 5%/15% rule for a 20-year horizon. The dispersion is even greater when compared against a base case without any inflation cap. This means the inflation cap creates large uncertainty about the real value of one’s pension. In other words, USS members do not receive a guaranteed pension but a highly uncertain one. While their pension contributions are well defined, pension benefits are not, as they depend on the path of future inflation.

Sources

The above figures were created in R using the code below, which includes direct links to the ONS data.

## get RPI for years before 1989
rpi<-read.csv('https://www.ons.gov.uk/generator?format=csv&uri=/economy/inflationandpriceindices/timeseries/czbh/mm23')
rpi<-rpi[8:79,]
rpi$year<-as.integer(substr(rpi[,1],1,4))
rpi<-rpi[,c(2,3)]
names(rpi)<-c("rpi","year")
rpi$rpi<-as.numeric(as.character(rpi$rpi))/100

## get CPI for years from 1989
cpi<-read.csv('https://www.ons.gov.uk/generator?format=csv&uri=/economy/inflationandpriceindices/timeseries/d7g7/mm23')
cpi<-cpi[8:39,]
cpi$year<-as.integer(substr(cpi[,1],1,4))
cpi<-cpi[,c(2,3)]
names(cpi)<-c("cpi","year")
cpi$cpi<-as.numeric(as.character(cpi$cpi))/100

## build inflation frame
infl<-data.frame(year=1971:2020)
infl<-merge(infl,cpi,all.x=T)
infl<-merge(infl,rpi,all.x=T)
infl$diff<-infl$rpi-infl$cpi
infl$rpiadj<-infl$rpi-mean(infl$diff,na.rm=T) #remove the average difference between RPI and CPI from RPI to make it roughly comparable to CPI
infl$i<-ifelse(is.na(infl$cpi),infl$rpiadj,infl$cpi)

## extract data for simulation
dat<-infl[,c("year","i")]

## History of inflation
plot(dat[,c("year","i")],ylab="Inflation rate",xlab="Year",type="l")
abline(h=0.025,col="red")

## How far away is your pension (in years)?
futureyears<-20

## Simulate the future relative to full inflation adjustment
res<-as.numeric() ## empty vector for results
for(t in 1:10000){
	draw<-sample(dat$i,size=futureyears,replace=T)
	drawcap<-ifelse(draw>0.025,0.025,draw)
	res<-c(res,prod(drawcap+1)/prod(draw+1))
}

## Show results
plot(density(res),xlim=c(0.3,1),main="",xlab="Value of pension relative to fully inflated baseline")
abline(v=mean(res),col="red")
abline(v=c(mean(res)+sd(res),mean(res)-sd(res)),col="grey",lty=2)

## Simulate the future relative to October 2011 inflation adjustment
## https://www.uss.co.uk/~/media/document-libraries/uss/changes/member/uss-revaluation-factsheet.pdf
res<-as.numeric() ## empty vector for results
for(t in 1:10000){
	draw<-sample(dat$i,size=futureyears,replace=T)
	drawoldcap<-ifelse(draw>0.05,ifelse(draw<0.15,0.05+0.5*(draw-0.05),0.1),draw)
	drawnewcap<-ifelse(draw>0.025,0.025,draw)
	res<-c(res,prod(drawnewcap+1)/prod(drawoldcap+1))
}

## Show results
plot(density(res),xlim=c(0.3,1),main="",xlab="Value of pension relative to October 2011 baseline")
abline(v=mean(res),col="red")
abline(v=c(mean(res)+sd(res),mean(res)-sd(res)),col="grey",lty=2)

Leave a Reply

Your e-mail address will not be published.