Summary

In this project, we evaluate different models for forecasting one-month-ahead inflation in order to build a time series of real interest rates on a monthly basis. In particular, we compare the predictive accuracy between two models: AR(1) and Simple Exponential Smoothing (SES). We evaluate the predictive accuracy of one-year-ahead forecasts using roll-forward partioning, where the training window is expanded by one observation for each one-year-ahead forecast. Throughout this process, we attempt to find the optimal learning rate, alpha, for SES.

Our results reveal that AR(1) performs significantly better than SES for one-step ahead forecasts, while SES is more accurate for long-term forecasts.

Finally, we plot a time series of real interest rates, in which the values from the roll-forward AR(1) and SES forecasts are used as proxies for expected inflation. In other words, the real rate at time \(t\) is computed by subtracting forecasted inflation at time \(t+1\) from the nominal rate at time \(t\)

Data Used

Variables

Initially, the data frame \(rates\) is used to store 18 variables:

Methodology

In order to build a time series of real interest rates, we attempt to find the best model for predicting inflation based on litterature and statistical testing. Autocorrelation plots as well as the Dickey-Fuller test suggest that inflation follows an AR(1) process with time trend. We wanted to test this against a Simple Exponential Smoothing (SES) model knowing that stationary models of inflation tend to perform worse than models which account for a time varying mean (“Forecasting Inflation”" by Faust and Wright). In our case, the learning rate of SES, alpha, is set to a default value of 0.2.

We first estimate an AR(1) and a SES model on inflation. The Diebold-Mariano test reveals that AR(1) performs significantly better than SES.

Then, we measure long-term forecasting accuracy of AR(1) and SES using fixed partioning (i.e. the training set is fixed throughout the forecast horizon). The forecast horizon spans from December 1993 up to November 2018 (300-month-ahead forecast). SES was found to perform significantly better than AR(1).

Roll-forward partioning was used next to forecast one-month-ahead inflation from May 1953 to November 2018. With roll-forward partioning, the size of the training set increases by one for each one-year-ahead forecast as we add the next observed (realized) datapoint to the set. Roll-forward partitioning enables us to generate multiple one-year-ahead forecasts and thus gain a more accurate understanding of how the forecast peforms on average In this case, AR(1) was significantly more accurate then SES.

Finally, we plot four graphs for every type of interest rates (10Y, 5Y, 3Y, & 1Y), each of which contains the following curves from April 1953 to October 2018:

Plotting Real vs Nominal Interest Rates

In the graph above, the real rate at month \(m\) is computed by subtracting the realized inflation at \(m+1\) from the nominal rate at month \(m\).

Model Estimation for Inflation

1. Plotting Realized Inflation

Geometric decay of the Acf suggests an AR process

Large Significant autocorrelation at lag 1 suggests an AR(1) as well

## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.0998 -0.1936  0.0100  0.2020  2.3811 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.630e-02  3.309e-02   1.701 0.089269 .  
## z.lag.1     -1.794e-02  4.913e-03  -3.652 0.000276 ***
## tt           4.069e-12  5.541e-05   0.000 1.000000    
## z.diff.lag   3.939e-01  3.150e-02  12.506  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3938 on 845 degrees of freedom
## Multiple R-squared:  0.1636, Adjusted R-squared:  0.1606 
## F-statistic: 55.08 on 3 and 845 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -3.6522 4.529 6.7291 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.96 -3.41 -3.12
## phi2  6.09  4.68  4.03
## phi3  8.27  6.25  5.34

Dickey-Fuller Test Number 3 (null = Random walk + drift, alternative = stationary AR(1) + time trend ) reveals no unit root which is significant at a 1% level, therefore, the inflation series follows a stationary AR(1) with time trend.

## Series: pi.ts 
## ARIMA(4,0,0) with non-zero mean 
## 
## Coefficients:
##          ar1      ar2     ar3      ar4    mean
##       1.3677  -0.3621  0.0056  -0.0276  3.5744
## s.e.  0.0343   0.0590  0.0610   0.0358  0.7922
## 
## sigma^2 estimated as 0.156:  log likelihood=-416.43
## AIC=844.86   AICc=844.95   BIC=873.33
## 
## Training set error measures:
##                        ME      RMSE       MAE  MPE MAPE      MASE         ACF1
## Training set -0.006893601 0.3937475 0.2722055 -Inf  Inf 0.1684159 -0.008301311

Model selection using BIC suggests an AR(4)

2. Comparing Ar(1) with Simple Exponential Smoothing (SES)

## [1] "RMSE for AR(1):"
## [1] 0.4290825
## [1] "RMSE for SES:"
## [1] 1.027951
## [1] "RMSE for AR(4):"
## [1] 0.3937475
## 
##  Diebold-Mariano Test
## 
## data:  ar1.mod$residualsses.mod$residuals
## DM = -10.163, Forecast horizon = 1, Loss function power = 2, p-value <
## 2.2e-16
## alternative hypothesis: two.sided

RMSE of AR(1) is 0.492 which is much lower than that of SES (RMSE= 1.028). The Diebold-Mariano test shows a significant difference in accuracy between both models at a 5% lvl (p-value for two-sided test < 2.2e-16). No rate of alpha could change this significance.

#perform Diebold-Mariano test on ar(1) vs ar(4)
dm.test(ar1.mod$residuals, ar4.mod$residuals)
## 
##  Diebold-Mariano Test
## 
## data:  ar1.mod$residualsar4.mod$residuals
## DM = 3.2659, Forecast horizon = 1, Loss function power = 2, p-value =
## 0.001135
## alternative hypothesis: two.sided

RMSE of AR(4) (0.394) is lower than that of AR(1) (0.492). This difference is significant at a 5% level

Forecasting Inflation

1. 300-month-ahead Forecast with fixed partitioning (forecast horizon: Dec 1993 to Nov 2018)

## [1] "RMSE of AR(1) forecast:"
## [1] 2.181206
## [1] "RMSE of SES forecast:"
## [1] 1.284839
## 
##  Diebold-Mariano Test
## 
## data:  ar1.fixed$residualsses.fixed$residuals
## DM = -8.9884, Forecast horizon = 1, Loss function power = 2, p-value <
## 2.2e-16
## alternative hypothesis: two.sided

RMSE for SES is lower than for AR(1). D-M test reveals a significant difference in accuracy at a 5% lvl.

2. One-month-ahead Forecasting with Roll-Forward partitioning (horizon: May 1953 to Nov 2018)

## [1] "RMSE for recursive AR(1)"
## [1] 0.3564117
## [1] "RMSE for recursive SES"
## [1] 0.7984016
## 
##  Diebold-Mariano Test
## 
## data:  valid.roll - ar1.rollvalid.roll - ses.roll
## DM = -13.252, Forecast horizon = 1, Loss function power = 2, p-value <
## 2.2e-16
## alternative hypothesis: two.sided

In this case, RMSE for AR(1) is lower than for SES, and this difference significant at a 5% lvl.

Conclusion: one-month-ahead forecasts using AR(1) significantly outperform the SES model,while SES performs significantly better for long-term forecasts (300-month-ahead).

Plotting Real Interest Rates using Roll-Forward Forecasts of Inflation

In the graph above we can see the nominal rate plotted against the realized real rate as well as the forecasted real rates. For each forecasted real rate (AR(1) & SES), the value of \(r\) at month \(m\) is computed by subtracting forecasted inflation at month \(m+1\) from the nominal rate at month \(m\).