For this assignment I’ve elected to predict Johnson and Johnson stock prices with exponential smoothing methods. I’m working with the prior two years of data obtained from Yahoo! using the quantmod package.

library(quantmod)
library(forecast)
library(lubridate)
getSymbols('JNJ', src = 'yahoo', 
           from = Sys.Date() - years(2), to = Sys.Date())
[1] "JNJ"
jnj <- ts(JNJ, frequency = 5)
head(jnj)
Time Series:
Start = c(1, 1) 
End = c(2, 1) 
Frequency = 5 
    JNJ.Open JNJ.High JNJ.Low JNJ.Close JNJ.Volume JNJ.Adjusted
1.0  100.495  101.361 100.115     95.37    8259700     90.28785
1.2  100.421  101.900 100.326     95.99    8957900     90.87481
1.4  100.126  101.647  99.619     95.45   12761900     90.36358
1.6  100.569  101.361  99.418     94.53    8881900     89.49260
1.8  100.347  102.830 100.200     97.15    9561900     91.97298
2.0  103.379  103.844 102.883     98.24    9495300     93.00489

For the first model, I’ll let the ets() function choose for me.

ets.fit <- ets(jnj[,'JNJ.Adjusted'])
summary(ets.fit)
ETS(A,A,N) 

Call:
 ets(y = jnj[, "JNJ.Adjusted"]) 

  Smoothing parameters:
    alpha = 0.9999 
    beta  = 1e-04 

  Initial states:
    l = 89.8974 
    b = 0.0911 

  sigma:  0.8932

     AIC     AICc      BIC 
3025.342 3025.463 3046.445 

Training set error measures:
                       ME      RMSE       MAE          MPE    MAPE      MASE        ACF1
Training set -0.005100116 0.8932068 0.6517066 -0.005795388 0.57903 0.4104817 0.006782822

Now we can see plot the forecast of the next 30 days using the AAN model selected for us.

ets.fore <- forecast(ets.fit, h = 30, bootstrap = T)
aan <- autoplot(ets.fore)+
  theme_yaz()+
  labs(y = 'JNJ Adjusted Close')
Error in autoplot(ets.fore) : could not find function "autoplot"

The projections follow the trend in a linear upward pattern, which I think is a little bit optimistic. I want to build a few other models that are less optimistic. First, I’ll add a dampening step to the AAN model, then I want to try an AA model and an NN model as well.

The forecast from the AAdN model increases slightly, which makes sense, but not indefinitely or at the same rate as the AAN or AAA models. The final view will look at model performance metrics to determine the best model to use. AAN and AAA do better than the rest in terms of mean error and mean percent error.

LS0tDQp0aXRsZTogIlBSRURJQ1QgNDEzIC0gV2VlayAzIERpc2N1c3Npb24iDQphdXRob3I6ICdKb3NoIFlhem1hbicNCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCkZvciB0aGlzIGFzc2lnbm1lbnQgSSd2ZSBlbGVjdGVkIHRvIHByZWRpY3QgSm9obnNvbiBhbmQgSm9obnNvbiBzdG9jayBwcmljZXMgd2l0aCBleHBvbmVudGlhbCBzbW9vdGhpbmcgbWV0aG9kcy4gSSdtIHdvcmtpbmcgd2l0aCB0aGUgcHJpb3IgdHdvIHllYXJzIG9mIGRhdGEgb2J0YWluZWQgZnJvbSBZYWhvbyEgdXNpbmcgdGhlIGBxdWFudG1vZGAgcGFja2FnZS4NCg0KYGBge3IsIGVjaG8gPSBUUlVFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPSBGQUxTRX0NCmxpYnJhcnkocXVhbnRtb2QpDQpsaWJyYXJ5KGZvcmVjYXN0KQ0KbGlicmFyeShsdWJyaWRhdGUpDQpnZXRTeW1ib2xzKCdKTkonLCBzcmMgPSAneWFob28nLCANCiAgICAgICAgICAgZnJvbSA9IFN5cy5EYXRlKCkgLSB5ZWFycygyKSwgdG8gPSBTeXMuRGF0ZSgpKQ0KDQpqbmogPC0gdHMoSk5KLCBmcmVxdWVuY3kgPSA1KQ0KaGVhZChqbmopDQpgYGANCg0KRm9yIHRoZSBmaXJzdCBtb2RlbCwgSSdsbCBsZXQgdGhlIGV0cygpIGZ1bmN0aW9uIGNob29zZSBmb3IgbWUuDQpgYGB7cn0NCmV0cy5maXQgPC0gZXRzKGpualssJ0pOSi5BZGp1c3RlZCddKQ0Kc3VtbWFyeShldHMuZml0KQ0KYGBgDQoNCk5vdyB3ZSBjYW4gc2VlIHBsb3QgdGhlIGZvcmVjYXN0IG9mIHRoZSBuZXh0IDMwIGRheXMgdXNpbmcgdGhlIEFBTiBtb2RlbCBzZWxlY3RlZCBmb3IgdXMuDQpgYGB7cn0NCmV0cy5mb3JlIDwtIGZvcmVjYXN0KGV0cy5maXQsIGggPSAzMCwgYm9vdHN0cmFwID0gVCkNCmFhbiA8LSBhdXRvcGxvdChldHMuZm9yZSkrDQogIHRoZW1lX3lheigpKw0KICBsYWJzKHkgPSAnSk5KIEFkanVzdGVkIENsb3NlJykNCmFhbg0KYGBgDQoNClRoZSBwcm9qZWN0aW9ucyBmb2xsb3cgdGhlIHRyZW5kIGluIGEgbGluZWFyIHVwd2FyZCBwYXR0ZXJuLCB3aGljaCBJIHRoaW5rIGlzIGEgbGl0dGxlIGJpdCBvcHRpbWlzdGljLiBJIHdhbnQgdG8gYnVpbGQgYSBmZXcgb3RoZXIgbW9kZWxzIHRoYXQgYXJlIGxlc3Mgb3B0aW1pc3RpYy4gRmlyc3QsIEknbGwgYWRkIGEgZGFtcGVuaW5nIHN0ZXAgdG8gdGhlIEFBTiBtb2RlbCwgdGhlbiBJIHdhbnQgdG8gdHJ5IGFuIEFBIG1vZGVsIGFuZCBhbiBOTiBtb2RlbCBhcyB3ZWxsLg0KYGBge3IsIGZpZy53aWR0aD05fQ0KbGlicmFyeShncmlkRXh0cmEpDQoNCmRhbXAuYWFuLmZvcmUgPC0gZm9yZWNhc3QoZXRzKGpualssJ0pOSi5BZGp1c3RlZCddLCAnQUFOJywgZGFtcGVkID0gVCksDQogICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAzMCwgYm9vdHN0cmFwID0gVCkNCmRhbXAuYWFuIDwtIGF1dG9wbG90KGRhbXAuYWFuLmZvcmUpKw0KICB0aGVtZV95YXooKSsNCiAgbGFicyh5ID0gJ0pOSiBBZGp1c3RlZCBDbG9zZScpDQoNCmFhLmZvcmUgPC0gZm9yZWNhc3QoZXRzKGpualssJ0pOSi5BZGp1c3RlZCddLCAnQUFBJykNCiAgICAgICAgICAgICAgICAgICAgLCBoID0gMzAsIGJvb3RzdHJhcCA9IFQpDQphYSA8LSBhdXRvcGxvdChhYS5mb3JlKSsNCiAgdGhlbWVfeWF6KCkrDQogIGxhYnMoeSA9ICdKTkogQWRqdXN0ZWQgQ2xvc2UnKQ0KDQpubi5mb3JlIDwtIGZvcmVjYXN0KGV0cyhqbmpbLCdKTkouQWRqdXN0ZWQnXSwgJ0FOTicpDQogICAgICAgICAgICAgICAgICAgICwgaCA9IDMwLCBib290c3RyYXAgPSBUKQ0Kbm4gPC0gYXV0b3Bsb3Qobm4uZm9yZSkrDQogIHRoZW1lX3lheigpKw0KICBsYWJzKHkgPSAnSk5KIEFkanVzdGVkIENsb3NlJykNCg0KZ3JpZC5hcnJhbmdlKGFhbiwgZGFtcC5hYW4sIGFhLCBubiwgbnJvdyA9IDIpDQpgYGANCg0KVGhlIGZvcmVjYXN0IGZyb20gdGhlIEFBZE4gbW9kZWwgaW5jcmVhc2VzIHNsaWdodGx5LCB3aGljaCBtYWtlcyBzZW5zZSwgYnV0IG5vdCBpbmRlZmluaXRlbHkgb3IgYXQgdGhlIHNhbWUgcmF0ZSBhcyB0aGUgQUFOIG9yIEFBQSBtb2RlbHMuIFRoZSBmaW5hbCB2aWV3IHdpbGwgbG9vayBhdCBtb2RlbCBwZXJmb3JtYW5jZSBtZXRyaWNzIHRvIGRldGVybWluZSB0aGUgYmVzdCBtb2RlbCB0byB1c2UuIEFBTiBhbmQgQUFBIGRvIGJldHRlciB0aGFuIHRoZSByZXN0IGluIHRlcm1zIG9mIG1lYW4gZXJyb3IgYW5kIG1lYW4gcGVyY2VudCBlcnJvci4gDQoNCmBgYHtyfQ0KbW9kcyA8LSBsaXN0KGV0cy5maXQsIGV0cyhqbmpbLCdKTkouQWRqdXN0ZWQnXSwgJ0FBTicsIGRhbXBlZCA9IFQpLA0KICAgICAgICAgICAgIGV0cyhqbmpbLCdKTkouQWRqdXN0ZWQnXSwgJ0FBQScpLCBldHMoam5qWywnSk5KLkFkanVzdGVkJ10sICdBTk4nKSkNCm1lYXN1cmVzIDwtIGxpc3QoKQ0KZm9yKGkgaW4gc2VxKDEsbGVuZ3RoKG1vZHMpKSl7DQogIG1lYXN1cmVzW1tpXV0gPC0gYXMudmVjdG9yKGFjY3VyYWN5KG1vZHNbWzFdXSkpDQp9DQoNCm1vZGVscyA8LSBjKHJlcCgnQUFOJyw3KSwgcmVwKCdBQWROJyw3KSwgcmVwKCdBQUEnLDcpLCByZXAoJ0FOTicsNykpDQptZWFzdXJlX25hbWUgPC0gcmVwKGNvbG5hbWVzKGFjY3VyYWN5KG1vZHNbWzFdXSkpLDQpDQptZXQgPC0gYyh1bmxpc3QobWVhc3VyZXMpKQ0KbW9kZWxfaGVhbHRoIDwtIGRhdGEuZnJhbWUobW9kZWxzLG1lYXN1cmVfbmFtZSwgbWV0KQ0KDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHlhenRoZW1lKQ0KDQpnZ3Bsb3QobW9kZWxfaGVhbHRoLCBhZXMoeCA9IGFzLmNoYXJhY3Rlcihtb2RlbHMpLCB5ID0gbWV0KSkrDQogIGdlb21fYmFyKHN0YXQgPSAnaWRlbnRpdHknLCBmaWxsID0geWF6X2NvbHNbMV0pKw0KICBjb29yZF9mbGlwKCkrDQogIGZhY2V0X3dyYXAofm1lYXN1cmVfbmFtZSwgbnJvdz0gMikrDQogIHRoZW1lX3lheigpKw0KICBsYWJzKHRpdGxlID0gJ01vZGVsIEFjY3VyYWN5IE1ldHJpY3MnLCB5ID0gJ01vZGVsJykNCmBgYA0K