Вы находитесь на странице: 1из 14

Assignment_02.

R
Nitesh Kumar
PGP17116
Thu Sep 27 14:02:09 2018

#Remarks are coloured in this colour

rm(list=ls())
setwd("E:/ Term V/FA/Data")
data=read.table("Dataset.csv", header=T, sep=",")
ret1=diff(log(data[,2]))
ret2=diff(log(data[,3]))

#This is Time Series Analysis

#Done by running auto correlation function with its own lag, lag till 10 of
return

acf(ret2,10)

#of volatility

acf(ret2^2,10)

#of Index

aa=acf(ret1,10)

aa
##
## Autocorrelations of series 'ret1', by lag
##
## 0 1 2 3 4 5 6 7 8 9
## 1.000 0.029 -0.012 -0.029 0.030 0.005 -0.056 -0.005 0.023 0.045
## 10
## 0.020
#joint test of autocorrelation

Box.test(ret2,lag=10,type="Box-Pierce")
##
## Box-Pierce test
##
## data: ret2
## X-squared = 55.8, df = 10, p-value = 2.238e-08
#there is no autocorrelation in the series, hence we can make the predictio
n using time series

Box.test(ret2,lag=10,type="Ljung")
##
## Box-Ljung test
##
## data: ret2
## X-squared = 55.93, df = 10, p-value = 2.116e-08

#ljung is more reliable test than box-pierce, here also, it is rejecting th


e possibility of joint correlation, then we can mke prediction

#pacf
pacf(ret2,10)
#pacf(series, lag)
bb=pacf(ret2,10)
bb
##
## Partial autocorrelations of series 'ret2', by lag
##
## 1 2 3 4 5 6 7 8 9 10
## -0.082 -0.055 -0.005 0.010 -0.066 -0.004 -0.038 0.028 -0.049 0.029
#lag 1,2,5 are significant
# Another way for autoselection of AR model
library(forecast)

auto.arima(ret2, max.p=10,max.q=0,d=0,ic="aic")#2 lags


## Series: ret2
## ARIMA(2,0,0) with zero mean
##
## Coefficients:
## ar1 ar2
## -0.0865 -0.0541
## s.e. 0.0189 0.0189
##
## sigma^2 estimated as 0.0001597: log likelihood=8223.03
## AIC=-16440.06 AICc=-16440.05 BIC=-16422.26
auto.arima(ret2, max.p=10,max.q=0,d=0,ic="bic")#1 lag
## Series: ret2
## ARIMA(1,0,0) with zero mean
##
## Coefficients:
## ar1
## -0.0820
## s.e. 0.0189
##
## sigma^2 estimated as 0.0001601: log likelihood=8218.94
## AIC=-16433.88 AICc=-16433.88 BIC=-16422.02
#Result of AIC is saying ARIMA(2,0,0) is the best model

# Fit AR(2) model


out_1=arima(ret2,c(2,0,0),include.mean = F) #c(2,0,0) becuase lag 2 is used
, doesnt include mean
out_1
##
## Call:
## arima(x = ret2, order = c(2, 0, 0), include.mean = F)
##
## Coefficients:
## ar1 ar2
## -0.0865 -0.0541
## s.e. 0.0189 0.0189
##
## sigma^2 estimated as 0.0001596: log likelihood = 8223.03, aic = -16440
.06
#model daignostics
Box.test(out_1$residuals,lag=10,type="Ljung")
##
## Box-Ljung test
##
## data: out_1$residuals
## X-squared = 29.554, df = 10, p-value = 0.001013
#residuals are showing autocorreltion as p=0.001 which is less than 0.05.
Hence ARIMA Model 2,0,0 is not good.

# Fit AR(1) model


out_2=arima(ret2,c(1,0,0),include.mean = F) #c(1,0,0) becuase lag 1 is used
, doesnt include mean
out_2
##
## Call:
## arima(x = ret2, order = c(1, 0, 0), include.mean = F)
##
## Coefficients:
## ar1
## -0.0820
## s.e. 0.0189
##
## sigma^2 estimated as 0.00016: log likelihood = 8218.94, aic = -16433.8
8
#model daignostics
Box.test(out_2$residuals,lag=10,type="Ljung")
##
## Box-Ljung test
##
## data: out_2$residuals
## X-squared = 35.534, df = 10, p-value = 0.0001012
#this model is also not good

# Predict the series


predict(out_1,10)
## $pred
## Time Series:
## Start = 2786
## End = 2795
## Frequency = 1
## [1] 7.096956e-05 1.853627e-05 -5.444452e-06 -5.324901e-07 3.407463e-
07
## [6] -6.453168e-10 -1.838806e-08 1.625135e-09 8.547636e-10 -1.618853e-
10
##
## $se
## Time Series:
## Start = 2786
## End = 2795
## Frequency = 1
## [1] 0.01263159 0.01267873 0.01269242 0.01269289 0.01269291 0.01269292
## [7] 0.01269292 0.01269292 0.01269292 0.01269292
predict(out_2,10)
## $pred
## Time Series:
## Start = 2786
## End = 2795
## Frequency = 1
## [1] 3.739770e-05 -3.068143e-06 2.517134e-07 -2.065081e-08 1.694212e-
09
## [6] -1.389948e-10 1.140327e-11 -9.355350e-13 7.675218e-14 -6.296823e-
15
##
## $se
## Time Series:
## Start = 2786
## End = 2795
## Frequency = 1
## [1] 0.01265015 0.01269265 0.01269294 0.01269294 0.01269294 0.01269294
## [7] 0.01269294 0.01269294 0.01269294 0.01269294
out_3=arima(ret2,order=c(2,0,0),fixed=c(NA,NA,0))
out_3
##
## Call:
## arima(x = ret2, order = c(2, 0, 0), fixed = c(NA, NA, 0))
##
## Coefficients:
## ar1 ar2 intercept
## -0.0865 -0.0541 0
## s.e. 0.0189 0.0189 0
##
## sigma^2 estimated as 0.0001596: log likelihood = 8223.03, aic = -16440
.06
#Model Diagnostics PACF

Box.test(out_3$residuals,lag=10,type="Ljung")
##
## Box-Ljung test
##
## data: out_3$residuals
## X-squared = 29.554, df = 10, p-value = 0.001013
predict(out_3,1)
## $pred
## Time Series:
## Start = 2786
## End = 2786
## Frequency = 1
## [1] 7.096956e-05
##
## $se
## Time Series:
## Start = 2786
## End = 2786
## Frequency = 1
## [1] 0.01263159
l=length(ret2)
l1=1210
pred1=0
pred2=0
for(i in 1:22){
out_11=arima(ret2[i:(l1+i-1)],order=c(5,0,0),fixed=c(NA,NA,0,0,NA,0))
out_31=arima(ret2[i:(l1+i-1)],order=c(2,0,0),fixed=c(NA,NA,0))
pre1=predict(out_11,1)
pred1[i]=pre1$pred[1]

pre2=predict(out_31,1)
pred2[i]=pre2$pred[1]
}
## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,
:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE
## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,
:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE
## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,
:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE

## Warning in arima(ret2[i:(l1 + i - 1)], order = c(5, 0, 0), fixed = c(NA,


:
## some AR parameters were fixed: setting transform.pars = FALSE
# Do analysis AR on HEXAWARE

# Partial Autocorrelation Function


pacf(ret1,10) #pacf(series, lag)

#Hence for HEXAWARE, with PACF appraoch lag 2 will be used

# Another way for autoselection of AR model


library(forecast)
auto.arima(ret1, max.p=10,max.q=0,d=0,ic="aic") # "d" how good long term pr
ediction can be made, if d>0, we can make long term prediction, d<0 then it
s near mean or mean reverting
## Series: ret1
## ARIMA(0,0,0) with non-zero mean
##
## Coefficients:
## mean
## 4e-04
## s.e. 3e-04
##
## sigma^2 estimated as 0.0002299: log likelihood=7715.22
## AIC=-15426.44 AICc=-15426.43 BIC=-15414.57
auto.arima(ret1, max.p=10,max.q=0,d=0,ic="bic")
## Series: ret1
## ARIMA(0,0,0) with zero mean
##
## sigma^2 estimated as 0.00023: log likelihood=7714.1
## AIC=-15426.19 AICc=-15426.19 BIC=-15420.26
#Only intercept should be included, as per this model, since (2,0,0)

out_4=arima(ret1,order=c(2,0,0),include.mean = T)
#Since only intercept need to be included
out_4
##
## Call:
## arima(x = ret1, order = c(2, 0, 0), include.mean = T)
##
## Coefficients:
## ar1 ar2 intercept
## 0.0293 -0.0124 4e-04
## s.e. 0.0189 0.0189 3e-04
##
## sigma^2 estimated as 0.0002295: log likelihood = 7716.6, aic = -15425.
2

# Automatic selection of MA model


auto.arima(ret1, max.p=0,max.q=10,d=0,ic="aic") #Arima(0,0,2)

## Series: ret1
## ARIMA(0,0,2) with non-zero mean
##
## Coefficients:
## ma1 ma2 mean
## -0.0539 -0.0536 0.0011
## s.e. 0.0284 0.0283 0.0006
##
## sigma^2 estimated as 0.0005657: log likelihood=2859.47
## AIC=-5710.94 AICc=-5710.91 BIC=-5690.47

auto.arima(ret1, max.p=0,max.q=10,d=0,ic="bic") #ARIMA(0,0,0)


## Series: ret1
## ARIMA(0,0,0) with zero mean
##
## sigma^2 estimated as 0.0005687: log likelihood=2854.68
## AIC=-5707.35 AICc=-5707.35 BIC=-5702.24

# Fit MA(1) model


out_5=arima(ret1,order=c(0,0,2), include.mean = F)
out_5

##
## Call:
## arima(x = ret1, order = c(0, 0, 2), include.mean = F)
##
## Coefficients:
## ma1 ma2
## -0.0513 -0.0511
## s.e. 0.0284 0.0282
##
## sigma^2 estimated as 0.0005657: log likelihood = 2857.93, aic = -5709.
85

Box.test(out_5$residuals,lag=10,type="Ljung") #P val =0.5153, hence MA(1) i


s a good model

##
## Box-Ljung test
##
## data: out_5$residuals
## X-squared = 1.8984, df = 10, p-value = 0.9971

predict(out_5,10)

## $pred
## Time Series:
## Start = 1233
## End = 1242
## Frequency = 1
## [1] -0.0007484639 -0.0008466105 0.0000000000 0.0000000000 0.00000000
00
## [6] 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.00000000
00
##
## $se
## Time Series:
## Start = 1233
## End = 1242
## Frequency = 1
## [1] 0.02378530 0.02381655 0.02384751 0.02384751 0.02384751 0.02384751
## [7] 0.02384751 0.02384751 0.02384751 0.02384751

l=length(ret1)
l1=1210
pred3=0
for(i in 1:22){
out_51=arima(ret2[i:(l1+i-1)],order=c(0,0,2),fixed=c(NA,NA,0))
pre3=predict(out_51,1)
pred3[i]=pre3$pred[1]

}
pred_HEX=cbind(pred3)
pred_HEX

## pred3
## [1,] -1.577178e-04
## [2,] -4.293572e-04
## [3,] -4.214603e-04
## [4,] 1.082602e-03
## [5,] -9.061039e-04
## [6,] 1.117286e-03
## [7,] 2.114036e-04
## [8,] -1.309785e-04
## [9,] 5.141840e-05
## [10,] -2.860653e-04
## [11,] 1.316109e-03
## [12,] -2.294810e-04
## [13,] -4.946275e-04
## [14,] 7.943946e-05
## [15,] 5.840339e-05
## [16,] -8.706262e-04
## [17,] -7.459375e-05
## [18,] -1.745783e-04
## [19,] 7.105980e-04
## [20,] 1.446148e-04
## [21,] -1.506083e-03
## [22,] -6.277753e-04

write.csv(pred_HEX,"Pred_HEX.csv")

# EACF
library(TSA)

## Warning: package 'TSA' was built under R version 3.5.1

##
## Attaching package: 'TSA'

## The following objects are masked from 'package:stats':


##
## acf, arima

## The following object is masked from 'package:utils':


##
## tar

eacf_out=eacf(ret1,10,10)

## AR/MA
## 0 1 2 3 4 5 6 7 8 9 10
## 0 o o o o o o o o o o o
## 1 x o o o o o o o o o o
## 2 x o o o o o o o o o o
## 3 x o o o o o o o o o o
## 4 x o o x o o o o o o o
## 5 x x x o o o o o o o o
## 6 x x x o o o o o o o o
## 7 x x x x x o o o o o o
## 8 x x x x x o o o o o o
## 9 x x x x x o x o o o o
## 10 x x x x x x o x o o o
# Automatic selection of ARMA model
auto.arima(ret1, max.p=10,max.q=10,d=0,ic="aic")

## Series: ret1
## ARIMA(0,0,2) with non-zero mean
##
## Coefficients:
## ma1 ma2 mean
## -0.0539 -0.0536 0.0011
## s.e. 0.0284 0.0283 0.0006
##
## sigma^2 estimated as 0.0005657: log likelihood=2859.47
## AIC=-5710.94 AICc=-5710.91 BIC=-5690.47

auto.arima(ret1, max.p=10,max.q=10,d=0,ic="bic")

## Series: ret1
## ARIMA(0,0,0) with zero mean
##
## sigma^2 estimated as 0.0005687: log likelihood=2854.68
## AIC=-5707.35 AICc=-5707.35 BIC=-5702.24

# Fit ARMA(1,1) model


out_6=arima(ret2,order=c(1,0,1),include.mean = F)
out_6

##
## Call:
## arima(x = ret2, order = c(1, 0, 1), include.mean = F)
##
## Coefficients:
## ar1 ma1
## -0.6556 0.7510
## s.e. 0.1186 0.1035
##
## sigma^2 estimated as 7.071e-05: log likelihood = 4138.89, aic = -8273.
79

Box.test(out_6$residuals,lag=10,type="Ljung")

##
## Box-Ljung test
##
## data: out_6$residuals
## X-squared = 5.6758, df = 10, p-value = 0.8417

predict(out_6,10)

## $pred
## Time Series:
## Start = 1233
## End = 1242
## Frequency = 1
## [1] 1.026401e-03 -6.729070e-04 4.411569e-04 -2.892218e-04 1.896134e-
04
## [6] -1.243103e-04 8.149766e-05 -5.342976e-05 3.502847e-05 -2.296462e-
05
##
## $se
## Time Series:
## Start = 1233
## End = 1242
## Frequency = 1
## [1] 0.008409064 0.008447271 0.008463640 0.008470666 0.008473684
## [6] 0.008474980 0.008475538 0.008475777 0.008475880 0.008475925

Вам также может понравиться