| 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 =
 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] |