# load the packages
library(forecast)
library(xts)
library(TTR)
library(tseries)
# load in data
require(quantmod)
G <- new.env()
getSymbols("GOOG", env = G, src = "yahoo",
from = as.Date("2013-04-09"), to = as.Date("2018-04-10"),return.class='ts')
[1] "GOOG"
g<-G$GOOG
head(g)
Time Series:
Start = 1
End = 6
Frequency = 1
GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted
1 386.3020 390.4117 385.1115 387.3730 4330700 387.3730
2 389.9982 394.6956 386.5511 393.6146 3971900 393.6146
3 394.9596 395.0692 390.5661 393.7192 4072500 393.7192
4 394.5163 394.5710 390.0032 393.5499 3285500 393.5499
5 391.5075 397.0119 387.0592 389.5050 4924500 389.5050
6 391.8263 396.5138 390.4963 395.2037 3496900 395.2037
colnames(g)
[1] "GOOG.Open" "GOOG.High" "GOOG.Low" "GOOG.Close" "GOOG.Volume"
[6] "GOOG.Adjusted"
#plot intial series
plot(g)

#decompose
plot(decompose(ts(g[,"GOOG.Adjusted"],frequency = 252)))

#forecast data
library(tseries)
g.adj.train<-g[2:1250,c(5)]
g.adj.test<-g[1251:1260,c(5)]
vol.train<-g[1:1249,6]
vol.test<-g[1251:1260,6]
model1<-auto.arima(g.adj.train)
model2<-auto.arima(g.adj.train,xreg = vol.train)
model3<-garch(g.adj.train)
***** ESTIMATION WITH ANALYTICAL GRADIENT *****
I INITIAL X(I) D(I)
1 2.152237e+12 1.000e+00
2 5.000000e-02 1.000e+00
3 5.000000e-02 1.000e+00
IT NF F RELDF PRELDF RELDX STPPAR D*STEP NPRELDF
0 1 1.935e+04
1 2 1.895e+04 2.06e-02 2.64e-01 2.3e-13 5.1e+03 1.0e+00 6.76e+02
2 4 1.893e+04 1.09e-03 1.05e-03 1.1e-14 5.8e+00 5.0e-02 3.42e+00
3 6 1.889e+04 1.75e-03 1.72e-03 2.1e-14 2.0e+00 1.0e-01 2.52e-02
4 8 1.889e+04 2.84e-04 2.84e-04 4.2e-15 1.4e+01 2.0e-02 9.13e-03
5 10 1.888e+04 5.06e-04 5.06e-04 8.5e-15 2.6e+00 4.0e-02 3.89e-03
6 11 1.888e+04 -5.30e+05 7.64e-04 1.7e-14 3.8e+00 8.0e-02 2.07e-03
***** FALSE CONVERGENCE *****
FUNCTION 1.887894e+04 RELDX 1.688e-14
FUNC. EVALS 11 GRAD. EVALS 6
PRELDF 7.641e-04 NPRELDF 2.074e-03
I FINAL X(I) D(I) G(I)
1 2.152237e+12 1.000e+00 3.838e-11
2 9.533306e-01 1.000e+00 9.177e+01
3 3.107434e-02 1.000e+00 1.994e+02
singular information
library(rugarch)
spec <- ugarchspec(mean.model=list(armaOrder=c(1,1)), distribution="std")
model4 <- ugarchfit(spec=spec, data=g.adj.train)
rugarch-->warning: failed to invert hessian
library(fGarch)
library(betategarch)
model5<-tegarch(g.adj.train)
#summary of models
summary(model1)
Series: g.adj.train
ARIMA(1,1,3)
Coefficients:
ar1 ma1 ma2 ma3
0.7082 -1.1391 -0.0051 0.1636
s.e. 0.0869 0.0943 0.0555 0.0544
sigma^2 estimated as 1.112e+12: log likelihood=-19077.58
AIC=38165.16 AICc=38165.21 BIC=38190.81
Training set error measures:
ME RMSE MAE MPE MAPE MASE ACF1
Training set -32566.24 1052338 591144.3 -78.41694 93.36122 0.9082335 -0.0002833764
summary(model2)
Series: g.adj.train
Regression with ARIMA(1,1,3) errors
Coefficients:
ar1 ma1 ma2 ma3 xreg
0.7083 -1.1381 -0.0046 0.1626 -1519.020
s.e. 0.0884 0.0959 0.0559 0.0549 1718.368
sigma^2 estimated as 1.112e+12: log likelihood=-19077.18
AIC=38166.36 AICc=38166.43 BIC=38197.14
Training set error measures:
ME RMSE MAE MPE MAPE MASE ACF1
Training set -19459.22 1052009 587784.8 -77.86337 93.29667 0.903072 0.0005447871
summary(model3)
Call:
garch(x = g.adj.train)
Model:
GARCH(1,1)
Residuals:
Min 1Q Median 3Q Max
0.002453 0.599683 0.734997 0.916380 3.405541
Coefficient(s):
Estimate Std. Error t value Pr(>|t|)
a0 2.152e+12 NA NA NA
a1 9.533e-01 NA NA NA
b1 3.107e-02 NA NA NA
Diagnostic Tests:
Jarque Bera Test
data: Residuals
X-squared = 4835.6, df = 2, p-value < 2.2e-16
Box-Ljung test
data: Squared.Residuals
X-squared = 15.207, df = 1, p-value = 9.633e-05
summary(model4)
Length Class Mode
1 uGARCHfit S4
summary(model5)
$date
[1] "Tue Apr 14 13:38:31 2020"
$par
omega phi1 kappa1 kappastar df skew
17.1412403 0.8672831 0.5397874 0.4074460 2.0461096 0.4808988
$objective
[1] -19424.9
$convergence
[1] 1
$iterations
[1] 44
$evaluations
function gradient
105 277
$message
[1] "false convergence (8)"
plot(sqrt(252) * model4@fit$sigma, type='l')

#plotting forcasts
f1<-forecast(model1, h=10)
f2<-forecast(model2, h=10, xreg = vol.test)
#f3<-forecast(model3, h=10) error with code
#f4<-forecast(model4, h=10) error with code
f5<-predict.tegarch(model5, n.ahead = 10)
#results
accuracy(f1, g.adj.test)
ME RMSE MAE MPE MAPE MASE
Training set -32566.24 1052338.3 591144.3 -78.41694 93.36122 0.9082335
Test set 534241.32 782428.8 667192.8 16.56620 25.73113 1.0250743
ACF1
Training set -0.0002833764
Test set NA
accuracy(f2, g.adj.test)
ME RMSE MAE MPE MAPE MASE ACF1
Training set -19459.22 1052009.1 587784.8 -77.86337 93.29667 0.9030720 0.0005447871
Test set 427527.44 714692.1 630401.6 11.78301 25.26772 0.9685484 NA
accuracy(ts(f5), g.adj.test)
ME RMSE MAE MPE MAPE
Test set -96150626 107822888 96150626 -4779.993 4779.993
LS0tCnRpdGxlOiAiRGlzc2N1c3Npb24gV2VlayA1IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCmBgYHtyfQojIGxvYWQgdGhlIHBhY2thZ2VzCmxpYnJhcnkoZm9yZWNhc3QpCmxpYnJhcnkoeHRzKQpsaWJyYXJ5KFRUUikKbGlicmFyeSh0c2VyaWVzKQpgYGAKCgpgYGB7cn0KIyBsb2FkIGluIGRhdGEKcmVxdWlyZShxdWFudG1vZCkKRyA8LSBuZXcuZW52KCkKZ2V0U3ltYm9scygiR09PRyIsIGVudiA9IEcsIHNyYyA9ICJ5YWhvbyIsCiAgICAgICAgICAgZnJvbSA9IGFzLkRhdGUoIjIwMTMtMDQtMDkiKSwgdG8gPSBhcy5EYXRlKCIyMDE4LTA0LTEwIikscmV0dXJuLmNsYXNzPSd0cycpCgoKZzwtRyRHT09HCmhlYWQoZykKY29sbmFtZXMoZykKYGBgCgoKYGBge3J9CiNwbG90IGludGlhbCBzZXJpZXMKCnBsb3QoZykKCiNkZWNvbXBvc2UKcGxvdChkZWNvbXBvc2UodHMoZ1ssIkdPT0cuQWRqdXN0ZWQiXSxmcmVxdWVuY3kgPSAyNTIpKSkKYGBgCgoKYGBge3J9CiNmb3JlY2FzdCBkYXRhCgpsaWJyYXJ5KHRzZXJpZXMpCmcuYWRqLnRyYWluPC1nWzI6MTI1MCxjKDUpXQpnLmFkai50ZXN0PC1nWzEyNTE6MTI2MCxjKDUpXQoKdm9sLnRyYWluPC1nWzE6MTI0OSw2XQp2b2wudGVzdDwtZ1sxMjUxOjEyNjAsNl0KCm1vZGVsMTwtYXV0by5hcmltYShnLmFkai50cmFpbikKbW9kZWwyPC1hdXRvLmFyaW1hKGcuYWRqLnRyYWluLHhyZWcgPSB2b2wudHJhaW4pCm1vZGVsMzwtZ2FyY2goZy5hZGoudHJhaW4pCgpsaWJyYXJ5KHJ1Z2FyY2gpCnNwZWMgPC0gdWdhcmNoc3BlYyhtZWFuLm1vZGVsPWxpc3QoYXJtYU9yZGVyPWMoMSwxKSksIGRpc3RyaWJ1dGlvbj0ic3RkIikKbW9kZWw0IDwtIHVnYXJjaGZpdChzcGVjPXNwZWMsIGRhdGE9Zy5hZGoudHJhaW4pCgoKbGlicmFyeShmR2FyY2gpCmxpYnJhcnkoYmV0YXRlZ2FyY2gpCm1vZGVsNTwtdGVnYXJjaChnLmFkai50cmFpbikKYGBgCgoKYGBge3J9CiNzdW1tYXJ5IG9mIG1vZGVscwpzdW1tYXJ5KG1vZGVsMSkKc3VtbWFyeShtb2RlbDIpCnN1bW1hcnkobW9kZWwzKQpzdW1tYXJ5KG1vZGVsNCkKc3VtbWFyeShtb2RlbDUpCgoKcGxvdChzcXJ0KDI1MikgKiBtb2RlbDRAZml0JHNpZ21hLCB0eXBlPSdsJykKYGBgCgoKYGBge3J9CiNwbG90dGluZyBmb3JjYXN0cwpmMTwtZm9yZWNhc3QobW9kZWwxLCBoPTEwKQpmMjwtZm9yZWNhc3QobW9kZWwyLCBoPTEwLCB4cmVnID0gdm9sLnRlc3QpCiNmMzwtZm9yZWNhc3QobW9kZWwzLCBoPTEwKSBlcnJvciB3aXRoIGNvZGUKI2Y0PC1mb3JlY2FzdChtb2RlbDQsIGg9MTApIGVycm9yIHdpdGggY29kZQpmNTwtcHJlZGljdC50ZWdhcmNoKG1vZGVsNSwgbi5haGVhZCA9IDEwKQoKCiNyZXN1bHRzCmFjY3VyYWN5KGYxLCBnLmFkai50ZXN0KQphY2N1cmFjeShmMiwgZy5hZGoudGVzdCkKYWNjdXJhY3kodHMoZjUpLCBnLmFkai50ZXN0KQoKYGBgCgo=