library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(xts)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(TTR)
library(vars)
## Loading required package: MASS
## Loading required package: strucchange
## Loading required package: sandwich
## Loading required package: urca
## Loading required package: lmtest
library(tseries)
AMD=read.csv("C:/Users/yiq00/Downloads/AMD.csv",header=TRUE)
NVDA=read.csv("C:/Users/yiq00/Downloads/NVDA.csv",header=TRUE)
str(AMD)
## 'data.frame':    60 obs. of  7 variables:
##  $ Date     : chr  "2015-11-01" "2015-12-01" "2016-01-01" "2016-02-01" ...
##  $ Open     : num  2.13 2.36 2.77 2.17 2.16 2.79 3.58 4.6 5.09 6.89 ...
##  $ High     : num  2.4 3.06 2.82 2.19 2.98 3.99 4.71 5.52 7.16 8 ...
##  $ Low      : num  1.94 2.2 1.75 1.81 2.12 2.6 3.45 4.07 4.82 6.15 ...
##  $ Close    : num  2.36 2.87 2.2 2.14 2.85 3.55 4.57 5.14 6.86 7.4 ...
##  $ Adj.Close: num  2.36 2.87 2.2 2.14 2.85 3.55 4.57 5.14 6.86 7.4 ...
##  $ Volume   : num  1.36e+08 2.66e+08 3.55e+08 1.93e+08 3.33e+08 ...
head(AMD)
##         Date Open High  Low Close Adj.Close    Volume
## 1 2015-11-01 2.13 2.40 1.94  2.36      2.36 136451200
## 2 2015-12-01 2.36 3.06 2.20  2.87      2.87 266450600
## 3 2016-01-01 2.77 2.82 1.75  2.20      2.20 355489300
## 4 2016-02-01 2.17 2.19 1.81  2.14      2.14 192749800
## 5 2016-03-01 2.16 2.98 2.12  2.85      2.85 333321700
## 6 2016-04-01 2.79 3.99 2.60  3.55      3.55 472576300
summary(AMD)
##      Date                Open            High            Low        
##  Length:60          Min.   : 2.13   Min.   : 2.19   Min.   : 1.750  
##  Class :character   1st Qu.:10.31   1st Qu.:11.61   1st Qu.: 9.325  
##  Mode  :character   Median :14.29   Median :15.60   Median :12.300  
##                     Mean   :22.65   Mean   :26.32   Mean   :20.414  
##                     3rd Qu.:30.55   3rd Qu.:34.31   3rd Qu.:27.485  
##                     Max.   :91.92   Max.   :94.28   Max.   :76.100  
##      Close         Adj.Close         Volume         
##  Min.   : 2.14   Min.   : 2.14   Min.   :1.365e+08  
##  1st Qu.:10.35   1st Qu.:10.35   1st Qu.:9.883e+08  
##  Median :14.51   Median :14.51   Median :1.206e+09  
##  Mean   :23.68   Mean   :23.68   Mean   :1.273e+09  
##  3rd Qu.:30.56   3rd Qu.:30.56   3rd Qu.:1.592e+09  
##  Max.   :90.82   Max.   :90.82   Max.   :3.063e+09
str(NVDA)
## 'data.frame':    60 obs. of  7 variables:
##  $ Date     : chr  "2015-12-01" "2016-01-01" "2016-02-01" "2016-03-01" ...
##  $ Open     : num  32 32.3 29.3 31.4 35.4 ...
##  $ High     : num  33.9 33.4 32.1 36.2 37.5 ...
##  $ Low      : num  32 26.5 24.8 31 34.6 ...
##  $ Close    : num  33 29.3 31.4 35.6 35.5 ...
##  $ Adj.Close: num  32.3 28.7 30.7 35 34.9 ...
##  $ Volume   : int  140679300 203474500 225001200 164447600 168356300 259195900 204947500 180251300 232628000 216631300 ...
head(NVDA)
##         Date  Open  High   Low Close Adj.Close    Volume
## 1 2015-12-01 32.00 33.94 31.97 32.96  32.25914 140679300
## 2 2016-01-01 32.29 33.44 26.45 29.29  28.66718 203474500
## 3 2016-02-01 29.26 32.12 24.75 31.36  30.69317 225001200
## 4 2016-03-01 31.44 36.25 31.04 35.63  34.99941 164447600
## 5 2016-04-01 35.41 37.46 34.63 35.53  34.90119 168356300
## 6 2016-05-01 35.87 46.82 34.40 46.72  45.89315 259195900
summary(NVDA)
##      Date                Open             High             Low        
##  Length:60          Min.   : 29.26   Min.   : 32.12   Min.   : 24.75  
##  Class :character   1st Qu.:104.66   1st Qu.:117.92   1st Qu.: 95.65  
##  Mode  :character   Median :173.80   Median :189.80   Median :158.85  
##                     Mean   :187.98   Mean   :210.43   Mean   :172.45  
##                     3rd Qu.:238.58   3rd Qu.:259.75   3rd Qu.:218.30  
##                     Max.   :550.32   Max.   :589.07   Max.   :495.80  
##      Close          Adj.Close          Volume         
##  Min.   : 29.29   Min.   : 28.67   Min.   :140679300  
##  1st Qu.:108.38   1st Qu.:107.20   1st Qu.:203201450  
##  Median :176.42   Median :175.46   Median :266070900  
##  Mean   :195.93   Mean   :194.99   Mean   :276868287  
##  3rd Qu.:242.72   3rd Qu.:240.85   3rd Qu.:339431000  
##  Max.   :541.22   Max.   :541.06   Max.   :586138000
AMDts=ts(AMD[,2], start=c(2015,11,01), end=c(2020,10,01), frequency = 12)
plot(AMDts, main="Monthly AMD Volume (2015-2020)",ylab="Volume")

NVDAts=ts(NVDA[,2], start=c(2015,12,01), end=c(2020,11,01), frequency = 12)
plot(NVDAts, main="Monthly NVDA Volume (2015-2020)",ylab="Volume")

Forcasting auto.arima

plot(decompose(AMDts))

Model_1.arima=auto.arima(AMDts, stepwise=FALSE, approximation=FALSE)
Model_1.arima
## Series: AMDts 
## ARIMA(0,1,0) with drift 
## 
## Coefficients:
##        drift
##       1.3717
## s.e.  0.6358
## 
## sigma^2 estimated as 24.26:  log likelihood=-177.28
## AIC=358.56   AICc=358.78   BIC=362.72
summary(Model_1.arima)
## Series: AMDts 
## ARIMA(0,1,0) with drift 
## 
## Coefficients:
##        drift
##       1.3717
## s.e.  0.6358
## 
## sigma^2 estimated as 24.26:  log likelihood=-177.28
## AIC=358.56   AICc=358.78   BIC=362.72
## 
## Training set error measures:
##                        ME     RMSE      MAE       MPE     MAPE      MASE
## Training set 1.263841e-05 4.842464 2.947826 -8.709101 16.96032 0.2192372
##                    ACF1
## Training set 0.02213757
hist(residuals(Model_1.arima))

Model_1.arima.fc=forecast(Model_1.arima,h=6)
plot(Model_1.arima.fc, main="Monthly AMD Volume (2018-2020)",ylab="Volume")

Using ETS

Model_2.ETS <- ets(AMDts, model="ZZZ")
Model_2.ETS
## ETS(M,A,N) 
## 
## Call:
##  ets(y = AMDts, model = "ZZZ") 
## 
##   Smoothing parameters:
##     alpha = 0.9428 
##     beta  = 0.0162 
## 
##   Initial states:
##     l = 1.6417 
##     b = 0.4229 
## 
##   sigma:  0.1733
## 
##      AIC     AICc      BIC 
## 366.4565 367.5676 376.9282
plot(Model_2.ETS)

summary(Model_2.ETS)
## ETS(M,A,N) 
## 
## Call:
##  ets(y = AMDts, model = "ZZZ") 
## 
##   Smoothing parameters:
##     alpha = 0.9428 
##     beta  = 0.0162 
## 
##   Initial states:
##     l = 1.6417 
##     b = 0.4229 
## 
##   sigma:  0.1733
## 
##      AIC     AICc      BIC 
## 366.4565 367.5676 376.9282 
## 
## Training set error measures:
##                     ME     RMSE      MAE       MPE    MAPE     MASE       ACF1
## Training set 0.8864713 4.912317 2.814495 0.3908032 12.7735 0.209321 0.03848114
hist(residuals(Model_2.ETS))

Garch

Model_3.Garch <- garch(AMDts)
## 
##  ***** ESTIMATION WITH ANALYTICAL GRADIENT ***** 
## 
## 
##      I     INITIAL X(I)        D(I)
## 
##      1     3.651313e+02     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  2.308e+02
##      1    2  2.152e+02  6.78e-02  8.31e-01  1.4e-03  1.9e+02  1.0e+00  8.02e+01
##      2    4  2.142e+02  4.67e-03  4.67e-03  6.7e-05  1.2e+01  5.0e-02  8.47e-01
##      3    6  2.124e+02  8.19e-03  8.11e-03  1.3e-04  2.3e+00  1.0e-01  2.35e-02
##      4    9  2.124e+02  1.50e-04  1.50e-04  2.7e-06  2.5e+02  2.0e-03  1.91e-02
##      5   11  2.123e+02  2.99e-04  2.99e-04  5.3e-06  3.5e+01  4.0e-03  2.14e-02
##      6   13  2.122e+02  5.92e-04  5.91e-04  1.1e-05  1.8e+01  8.0e-03  2.13e-02
##      7   16  2.122e+02  1.17e-05  1.17e-05  2.1e-07  3.4e+03  1.6e-04  2.11e-02
##      8   18  2.122e+02  2.35e-06  2.35e-06  4.3e-08  1.7e+04  3.2e-05  2.13e-02
##      9   20  2.122e+02  4.70e-06  4.70e-06  8.5e-08  2.1e+03  6.4e-05  2.13e-02
##     10   22  2.122e+02  9.40e-07  9.40e-07  1.7e-08  4.2e+04  1.3e-05  2.13e-02
##     11   25  2.122e+02  1.88e-08  1.88e-08  3.4e-10  2.1e+06  2.6e-07  2.13e-02
##     12   27  2.122e+02  3.76e-08  3.76e-08  6.8e-10  2.7e+05  5.1e-07  2.13e-02
##     13   29  2.122e+02  7.52e-08  7.52e-08  1.4e-09  1.3e+05  1.0e-06  2.13e-02
##     14   31  2.122e+02  1.50e-08  1.50e-08  2.7e-10  2.7e+06  2.0e-07  2.13e-02
##     15   33  2.122e+02  3.01e-09  3.01e-09  5.5e-11  1.3e+07  4.1e-08  2.13e-02
##     16   35  2.122e+02  6.01e-10  6.01e-10  1.1e-11  6.6e+07  8.2e-09  2.13e-02
##     17   37  2.122e+02  1.20e-09  1.20e-09  2.2e-11  8.3e+06  1.6e-08  2.13e-02
##     18   39  2.122e+02  2.41e-10  2.41e-10  4.4e-12  1.7e+08  3.3e-09  2.13e-02
##     19   42  2.122e+02  4.81e-12  4.81e-12  8.8e-14  8.3e+09  6.6e-11  2.13e-02
##     20   44  2.122e+02  9.62e-12  9.62e-12  1.8e-13  1.0e+09  1.3e-10  2.13e-02
##     21   46  2.122e+02  1.92e-11  1.92e-11  3.5e-13  5.2e+08  2.6e-10  2.13e-02
##     22   49  2.122e+02  3.85e-13  3.85e-13  7.0e-15  1.0e+11  5.2e-12  2.13e-02
##     23   51  2.122e+02  7.70e-13  7.70e-13  1.4e-14  1.3e+10  1.0e-11  2.13e-02
##     24   53  2.122e+02  1.54e-12  1.54e-12  2.8e-14  6.5e+09  2.1e-11  2.13e-02
##     25   55  2.122e+02  3.08e-13  3.08e-13  5.6e-15  1.3e+11  4.2e-12  2.13e-02
##     26   56  2.122e+02 -4.71e+07  6.16e-13  1.1e-14  6.5e+10  8.4e-12  2.13e-02
## 
##  ***** FALSE CONVERGENCE *****
## 
##  FUNCTION     2.122093e+02   RELDX        1.120e-14
##  FUNC. EVALS      56         GRAD. EVALS      26
##  PRELDF       6.158e-13      NPRELDF      2.129e-02
## 
##      I      FINAL X(I)        D(I)          G(I)
## 
##      1    3.651312e+02     1.000e+00     3.081e-02
##      2    1.005863e+00     1.000e+00     3.438e+00
##      3    1.725413e-12     1.000e+00     1.519e+01
## Warning in sqrt(pred$e): ²úÉúÁËNaNs
summary(Model_3.Garch)
## 
## Call:
## garch(x = AMDts)
## 
## Model:
## GARCH(1,1)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## 0.1123 0.4777 0.6094 0.8842 1.3929 
## 
## Coefficient(s):
##     Estimate  Std. Error  t value Pr(>|t|)
## a0 3.651e+02   6.052e+02    0.603    0.546
## a1 1.006e+00   1.776e+00    0.566    0.571
## b1 1.725e-12   1.379e+00    0.000    1.000
## 
## Diagnostic Tests:
##  Jarque Bera Test
## 
## data:  Residuals
## X-squared = 0.86805, df = 2, p-value = 0.6479
## 
## 
##  Box-Ljung test
## 
## data:  Squared.Residuals
## X-squared = 36.748, df = 1, p-value = 1.344e-09

I will be using MNM model Using MNM model

Model_2.ETS.fc=forecast(Model_2.ETS,h=6)
plot(Model_2.ETS.fc, ylab="Volume",main="Model_2 ETS Auto-select: MNM")