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