Calculating a Real Interest RateA method for calculating a real interest rate is described in the Appendix of the paper: Russell Davidson and James G. MacKinnon (1985), "Testing Linear and Log-linear Regressions against Box-Cox Alternatives", Canadian Journal of Economics, Vol. 18, pp. 499-517. Suppose the nominal rate of interest is I and the expected rate of inflation is PE. The real rate of interest (R) is:
R = I An estimate of the expected rate of inflation is required.
Suppose that D is a personal expenditure
deflator (expressed as 1 in the base period). The inflation rate
between periods t and t
Pt = log(Dt) Davidson and MacKinnon propose that a rational predictor of the inflation rate can be obtained as the predicted values from the regression: Pt = 1 + 2 Zt + 3 t + et where et is a random error and
Zt = 0.2 Pt That is, Zt is a weighted moving average of lagged values of the inflation rate. The weights are somewhat arbitrary and they sum to 1. ExampleQuarterly data for Canada on the banks' prime lending rate and the personal
expenditure deflator were collected from the CANSIM Statistics Canada
data base for the period 1961Q1 to 1996Q3.
The data file can be viewed.
The SHAZAM commands
(filename:
The SHAZAM output can be viewed. The calculated real interest rate is written to the data file
The A comparison of the nominal and real interest rates for Canada is shown in the figure below.
[SHAZAM Guide home] SHAZAM output for computing real interest rates|_TIME 1961 4 |_SAMPLE 1961.1 1996.3 |_* Read the CANSIM data |_READ (RATES.txt) DATE PDEFL RATE UNIT 88 IS NOW ASSIGNED TO: RATES.txt 3 VARIABLES AND 143 OBSERVATIONS STARTING AT OBS 1 |_* Compute an inflation rate |_GENR PDEFL=PDEFL/100 |_GENR INFL=LOG(PDEFL) - LOG(LAG(PDEFL)) ..NOTE.LAG VALUE IN UNDEFINED OBSERVATIONS SET TO ZERO ...WARNING...ILLEGAL LOG IN OBS. 1, VALUE REPLACED BY ZERO .00000 |_* Compute a weighted moving average of past inflation rates |_GENR INFL4=0.2*LAG(INFL) + 0.3*LAG(INFL,2) + 0.3*LAG(INFL,3) + 0.2*LAG(INFL,4) ..NOTE.LAG VALUE IN UNDEFINED OBSERVATIONS SET TO ZERO ..NOTE.LAG VALUE IN UNDEFINED OBSERVATIONS SET TO ZERO ..NOTE.LAG VALUE IN UNDEFINED OBSERVATIONS SET TO ZERO ..NOTE.LAG VALUE IN UNDEFINED OBSERVATIONS SET TO ZERO |_* Because of the lags, there are 5 undefined observations at the |_* beginning of the sample. |_* Adjust the sample period to exclude the undefined observations. |_SAMPLE 1962.2 1996.3 |_* Generate a time trend |_GENR TREND=TIME(0) |_* Get an expected inflation rate as the predicted values |_* from an OLS regression. |_OLS INFL INFL4 TREND / PREDICT=EINFL OLS ESTIMATION 138 OBSERVATIONS DEPENDENT VARIABLE = INFL ...NOTE..SAMPLE RANGE SET TO: 6, 143 R-SQUARE = .6650 R-SQUARE ADJUSTED = .6600 VARIANCE OF THE ESTIMATE-SIGMA**2 = .20972E-04 STANDARD ERROR OF THE ESTIMATE-SIGMA = .45795E-02 SUM OF SQUARED ERRORS-SSE= .28312E-02 MEAN OF DEPENDENT VARIABLE = .11885E-01 LOG OF THE LIKELIHOOD FUNCTION = 548.994 VARIABLE ESTIMATED STANDARD T-RATIO PARTIAL STANDARDIZED ELASTICITY NAME COEFFICIENT ERROR 135 DF P-VALUE CORR. COEFFICIENT AT MEANS INFL4 .87754 .5416E-01 16.20 .000 .813 .8083 .8755 TREND -.14247E-04 .9800E-05 -1.454 .148 -.124 -.0725 -.0893 CONSTANT .25416E-02 .1072E-02 2.372 .019 .200 .0000 .2139 |_* Compute a real interest rate. |_* The factor of 400 is needed to convert quarterly rates to |_* annual percentage rates. |_GENR RR = RATE - 400*EINFL |_* Write the results to a data file. |_SAMPLE 1963.1 1996.3 |_FORMAT(F10.1,2F8.2) |_WRITE (RR.txt) DATE RATE RR / FORMAT UNIT 88 IS NOW ASSIGNED TO: RR.txt |_STOP [SHAZAM Guide home] |