Monthly Interest Rates

Description:

monthly observations from 1946-12 to 1991-02

number of observations : 531

observation : country

country : United-States

library(data.table)
## Warning: package 'data.table' was built under R version 3.3.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.3.3
library(scales)
## Warning: package 'scales' was built under R version 3.3.3

ri : interest rate for a maturity of i months (% per year).

r1 : interest rate for a maturity of 1 months (% per year).

Irates <- read.csv(file="Irates.csv", header=TRUE, sep=",")
print(head(Irates))
##   X    r1    r2    r3    r5    r6   r11   r12   r36   r60  r120
## 1 1 0.325 0.422 0.477 0.549 0.577 0.698 0.720 1.145 1.415 1.825
## 2 2 0.322 0.427 0.485 0.555 0.583 0.698 0.718 1.119 1.386 1.824
## 3 3 0.326 0.419 0.473 0.543 0.571 0.693 0.715 1.140 1.406 1.817
## 4 4 0.318 0.441 0.508 0.583 0.610 0.718 0.737 1.105 1.364 1.804
## 5 5 0.302 0.445 0.521 0.606 0.637 0.759 0.780 1.172 1.416 1.815
## 6 6 0.288 0.473 0.570 0.666 0.698 0.811 0.830 1.169 1.399 1.805

The following is to find the correlationship amount different periods of the intrest. Obviously, the ri is more correlative to rj next to it, the further distance, the weaker correlatioship.

cor(Irates)
##              X        r1        r2        r3        r5        r6       r11
## X    1.0000000 0.8083058 0.8111824 0.8146423 0.8177383 0.8184827 0.8317327
## r1   0.8083058 1.0000000 0.9981834 0.9963142 0.9936087 0.9923646 0.9865379
## r2   0.8111824 0.9981834 1.0000000 0.9994606 0.9971952 0.9960555 0.9903624
## r3   0.8146423 0.9963142 0.9994606 1.0000000 0.9988174 0.9978974 0.9930528
## r5   0.8177383 0.9936087 0.9971952 0.9988174 1.0000000 0.9998271 0.9969483
## r6   0.8184827 0.9923646 0.9960555 0.9978974 0.9998271 1.0000000 0.9979614
## r11  0.8317327 0.9865379 0.9903624 0.9930528 0.9969483 0.9979614 1.0000000
## r12  0.8350443 0.9852767 0.9890832 0.9919122 0.9960889 0.9971886 0.9999160
## r36  0.8699257 0.9624058 0.9664599 0.9706246 0.9770057 0.9787702 0.9876478
## r60  0.8808549 0.9492244 0.9532650 0.9578381 0.9646118 0.9664539 0.9772081
## r120 0.8942205 0.9329449 0.9369463 0.9417438 0.9485344 0.9503359 0.9624666
##            r12       r36       r60      r120
## X    0.8350443 0.8699257 0.8808549 0.8942205
## r1   0.9852767 0.9624058 0.9492244 0.9329449
## r2   0.9890832 0.9664599 0.9532650 0.9369463
## r3   0.9919122 0.9706246 0.9578381 0.9417438
## r5   0.9960889 0.9770057 0.9646118 0.9485344
## r6   0.9971886 0.9787702 0.9664539 0.9503359
## r11  0.9999160 0.9876478 0.9772081 0.9624666
## r12  1.0000000 0.9893694 0.9794707 0.9652020
## r36  0.9893694 1.0000000 0.9979313 0.9908089
## r60  0.9794707 0.9979313 1.0000000 0.9968634
## r120 0.9652020 0.9908089 0.9968634 1.0000000

Next is to find the changes for r1, r2, r3, r5, r6, r11, r12, r36, and r60.

delr1<-diff(Irates[,'r1'])
delr2<-diff(Irates[,'r2'])
delr3<-diff(Irates[,'r3'])
delr5<-diff(Irates[,'r5'])
delr6<-diff(Irates[,'r6'])
delr11<-diff(Irates[,'r11'])
delr12<-diff(Irates[,'r12'])
delr36<-diff(Irates[,'r36'])
delr60<-diff(Irates[,'r60'])
t<-data.frame(delr1,delr2,delr3,delr5,delr6,delr11,delr12,delr36,delr60)
print(head(t))
##    delr1  delr2  delr3  delr5  delr6 delr11 delr12 delr36 delr60
## 1 -0.003  0.005  0.008  0.006  0.006  0.000 -0.002 -0.026 -0.029
## 2  0.004 -0.008 -0.012 -0.012 -0.012 -0.005 -0.003  0.021  0.020
## 3 -0.008  0.022  0.035  0.040  0.039  0.025  0.022 -0.035 -0.042
## 4 -0.016  0.004  0.013  0.023  0.027  0.041  0.043  0.067  0.052
## 5 -0.014  0.028  0.049  0.060  0.061  0.052  0.050 -0.003 -0.017
## 6  0.040  0.013 -0.004 -0.013 -0.015 -0.011 -0.010  0.021  0.035

Find the correlationship in the change of intrest rate in the different time is much smaller now. However, it still shows the strong correlationship

cor(t)
##            delr1     delr2     delr3     delr5     delr6    delr11
## delr1  1.0000000 0.9216890 0.8456308 0.7906600 0.7745276 0.7090545
## delr2  0.9216890 1.0000000 0.9798791 0.9305395 0.9116647 0.8351715
## delr3  0.8456308 0.9798791 1.0000000 0.9732575 0.9533571 0.8791417
## delr5  0.7906600 0.9305395 0.9732575 1.0000000 0.9951593 0.9436012
## delr6  0.7745276 0.9116647 0.9533571 0.9951593 1.0000000 0.9649487
## delr11 0.7090545 0.8351715 0.8791417 0.9436012 0.9649487 1.0000000
## delr12 0.6989234 0.8222673 0.8667261 0.9337122 0.9559260 0.9990219
## delr36 0.5620834 0.6770647 0.7237442 0.8057747 0.8350178 0.9092121
## delr60 0.4967685 0.5981047 0.6462377 0.7306532 0.7610877 0.8457246
##           delr12    delr36    delr60
## delr1  0.6989234 0.5620834 0.4967685
## delr2  0.8222673 0.6770647 0.5981047
## delr3  0.8667261 0.7237442 0.6462377
## delr5  0.9337122 0.8057747 0.7306532
## delr6  0.9559260 0.8350178 0.7610877
## delr11 0.9990219 0.9092121 0.8457246
## delr12 1.0000000 0.9191947 0.8572593
## delr36 0.9191947 1.0000000 0.9667731
## delr60 0.8572593 0.9667731 1.0000000

The following, to predicte 6month intreste rate change using the other factors.

model= lm(data=t, delr6 ~ .)
summary(model)
## 
## Call:
## lm(formula = delr6 ~ ., data = t)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.094620 -0.003338 -0.000244  0.003311  0.083078 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.849e-05  4.880e-04  -0.079    0.937    
## delr1       -8.938e-02  3.788e-03 -23.594   <2e-16 ***
## delr2        4.146e-01  1.274e-02  32.553   <2e-16 ***
## delr3       -6.301e-01  1.480e-02 -42.582   <2e-16 ***
## delr5        1.121e+00  9.671e-03 115.962   <2e-16 ***
## delr11       9.159e-01  3.450e-02  26.549   <2e-16 ***
## delr12      -7.417e-01  3.374e-02 -21.985   <2e-16 ***
## delr36       9.704e-03  6.875e-03   1.412    0.159    
## delr60       6.076e-03  5.765e-03   1.054    0.292    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01123 on 521 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 1.511e+05 on 8 and 521 DF,  p-value: < 2.2e-16
model2= lm(data=t, delr6 ~ .-delr60 )
summary(model2)
## 
## Call:
## lm(formula = delr6 ~ . - delr60, data = t)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.093656 -0.003251 -0.000204  0.003379  0.084863 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.686e-05  4.880e-04  -0.055    0.956    
## delr1       -8.855e-02  3.706e-03 -23.895  < 2e-16 ***
## delr2        4.116e-01  1.241e-02  33.157  < 2e-16 ***
## delr3       -6.270e-01  1.449e-02 -43.262  < 2e-16 ***
## delr5        1.120e+00  9.514e-03 117.681  < 2e-16 ***
## delr11       9.210e-01  3.417e-02  26.956  < 2e-16 ***
## delr12      -7.469e-01  3.338e-02 -22.379  < 2e-16 ***
## delr36       1.588e-02  3.598e-03   4.413 1.24e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01123 on 522 degrees of freedom
## Multiple R-squared:  0.9996, Adjusted R-squared:  0.9996 
## F-statistic: 1.726e+05 on 7 and 522 DF,  p-value: < 2.2e-16

Based on the F-test, R^2, p-Value in two models, the following regression recommends from machine.

delr6 = -2.686e-05 + -8.855e-02 * delr1 + 4.116e-01 * delr2 -6.270e-01 * delr3 + 1.120e+00 * delr5 + 9.210e-01 * delr11 -7.469e-01 * delr12 + 1.588e-02 * delr36