This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

[1] "^VIX"
fitvix <- StructTS(vix, "level")
fitvix

Call:
StructTS(x = vix, type = "level")

Variances:
  level  epsilon  
  2.809    1.564  
StructTS(x = vix, type = "level")

Call:
StructTS(x = vix, type = "level")

Variances:
  level  epsilon  
  2.809    1.564  
plot(vix, col = "blue")
lines(fitted(fitvix), lty ="dashed", lwd =2)

lines(tsSmooth(fitvix),lty = "dotted", lwd =2)

plot(forecast(fitvix))

# rearranged not reason for kalman est unfit ie. forecast command

#lines(kalman_est, lty = "dotted", ,lwd = 2, col = "yellow")
# the kalman est fit did not run, syntax or logic error, for reader to pursue, kalman fit below.
# an ARIMA fit
fit3 <- arima(vix, c(1, 1, 0))
predict(fit3, 12)
$pred
Time Series:
Start = 2021.36828956105 
End = 2021.39840653812 
Frequency = 365.2425 
 [1] 20.15919 19.73782 19.86942 19.82832 19.84115 19.83715 19.83840 19.83801
 [9] 19.83813 19.83809 19.83810 19.83810

$se
Time Series:
Start = 2021.36828956105 
End = 2021.39840653812 
Frequency = 365.2425 
 [1] 2.327088 2.824240 3.363826 3.794770 4.190882 4.549962 4.883490 5.195422
 [9] 5.489725 5.769014 6.035399 6.290512
## reconstruct this
pr <- KalmanForecast(12, fit3$model)
pr$pred + fit3$coef[4]
 [1] NA NA NA NA NA NA NA NA NA NA NA NA
sqrt(pr$var * fit3$sigma2)
 [1] 2.327088 2.824240 3.363826 3.794770 4.190882 4.549962 4.883490 5.195422
 [9] 5.489725 5.769014 6.035399 6.290512
## and now do it year by year
mod <- fit3$model
for(y in 1:3) {
  pr <- KalmanForecast(4, mod, TRUE)
  print(list(pred = pr$pred + fit3$coef["intercept"],
             se = sqrt(pr$var * fit3$sigma2)))
  mod <- attr(pr, "mod")
}
$pred
[1] NA NA NA NA

$se
[1] 2.327088 2.824240 3.363826 3.794770

$pred
[1] NA NA NA NA

$se
[1] 4.190882 4.549962 4.883490 5.195422

$pred
[1] NA NA NA NA

$se
[1] 5.489725 5.769014 6.035399 6.290512
fit_kalman <- KalmanLike(vix, mod, nit = 0L, update = FALSE)
out <- KalmanSmooth(vix, mod, nit = 0L)
kalman_est <- out$smooth[ ,2]
plot.ts(vix)

plot(kalman_est, lty = "dashed", lwd = 2,col = "green")

vix <-  ts_timeSeries(vix)
histPlot(vix)

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLg0KDQpUcnkgZXhlY3V0aW5nIHRoaXMgY2h1bmsgYnkgY2xpY2tpbmcgdGhlICpSdW4qIGJ1dHRvbiB3aXRoaW4gdGhlIGNodW5rIG9yIGJ5IHBsYWNpbmcgeW91ciBjdXJzb3IgaW5zaWRlIGl0IGFuZCBwcmVzc2luZyAqQ3RybCtTaGlmdCtFbnRlciouDQoNCmBgYHtyLCBlY2hvPUZBTFNFLGVycm9yPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHRpZHlxdWFudCkNCmxpYnJhcnkoZkJhc2ljcykNCmxpYnJhcnkoZm9yZWNhc3QpDQpsaWJyYXJ5KHRzYm94KQ0KDQoNCmBgYA0KDQpgYGB7cixlY2hvPUZBTFNFLGVycm9yPUZBTFNFfQ0Kc3RhcnRfZCA8LSBhcy5EYXRlKCIyMDE5LTEtMDEiKQ0KDQpnZXRTeW1ib2xzKCJeVklYIiwgZnJvbSA9IHN0YXJ0X2QpDQoNCiMgdml4X288LSBuYS5vbWl0KFZJWCkNCiMgdml4X3IgPC0gZGFpbHlSZXR1cm4oVklYKQ0KIyB2aXggPC0gIFZJWFsiMjAxNy8yMDE4Il0NCiMgdml4X25hIDwtIG5hLm9taXQoVklYKQ0KIyBUU19ib3ggY29tbWFuZCBuZXh0IEFnbm9zdGljIHRpbWVzZXJpZXMgcGFja2FnZSBjb252ZXJzaW9uIHRvIHRzIHRpbWVzZXJpZXMgUiBkZWZhdWx0IG5lZWRlZCBmb3Igc3RhdHMgbGliLCBTdHJ1Y3RUUywgS2FsbWFuTGlrZSBldGMuDQp2aXggPC0gVklYJFZJWC5BZGp1c3RlZA0KI3ZpeCA8LSB2aXhbIjIwMTcvMjAxOCJdDQp2aXggPC0gdHNfdHModml4KQ0KI3ZpeF9vIDwtIHRzX3RzKHZpeF9yKQ0KIyB0aGUgYWJvdmUgZGlmZmVyZW50IHNhbXBsZXMgd2VyZSB0cmlhbCB0ZXN0cyBkYXRhIHR5cGVzIGxlZnQgZm9yIHJlcHJvZHVjaWJpbGl0eSwgc3ltYm9sIGNoYW5nZWQgZnJvbSB2aXggdG8gMjAxNyB0MCBedml4IDIwMTktMjENCg0KYGBgDQoNCmBgYHtyfQ0KZml0dml4IDwtIFN0cnVjdFRTKHZpeCwgImxldmVsIikNCmZpdHZpeA0KU3RydWN0VFMoeCA9IHZpeCwgdHlwZSA9ICJsZXZlbCIpDQoNCnBsb3Qodml4LCBjb2wgPSAiYmx1ZSIpDQpsaW5lcyhmaXR0ZWQoZml0dml4KSwgbHR5ID0iZGFzaGVkIiwgbHdkID0yKQ0KDQpsaW5lcyh0c1Ntb290aChmaXR2aXgpLGx0eSA9ICJkb3R0ZWQiLCBsd2QgPTIpDQpwbG90KGZvcmVjYXN0KGZpdHZpeCkpDQojIHJlYXJyYW5nZWQgbm90IHJlYXNvbiBmb3Iga2FsbWFuIGVzdCB1bmZpdCBpZS4gZm9yZWNhc3QgY29tbWFuZA0KDQojbGluZXMoa2FsbWFuX2VzdCwgbHR5ID0gImRvdHRlZCIsICxsd2QgPSAyLCBjb2wgPSAieWVsbG93IikNCiMgdGhlIGthbG1hbiBlc3QgZml0IGRpZCBub3QgcnVuLCBzeW50YXggb3IgbG9naWMgZXJyb3IsIGZvciByZWFkZXIgdG8gcHVyc3VlLCBrYWxtYW4gZml0IGJlbG93Lg0KYGBgDQoNCmBgYHtyfQ0KIyBhbiBBUklNQSBmaXQNCmZpdDMgPC0gYXJpbWEodml4LCBjKDEsIDEsIDApKQ0KcHJlZGljdChmaXQzLCAxMikNCiMjIHJlY29uc3RydWN0IHRoaXMNCnByIDwtIEthbG1hbkZvcmVjYXN0KDEyLCBmaXQzJG1vZGVsKQ0KcHIkcHJlZCArIGZpdDMkY29lZls0XQ0Kc3FydChwciR2YXIgKiBmaXQzJHNpZ21hMikNCiMjIGFuZCBub3cgZG8gaXQgeWVhciBieSB5ZWFyDQptb2QgPC0gZml0MyRtb2RlbA0KZm9yKHkgaW4gMTozKSB7DQogIHByIDwtIEthbG1hbkZvcmVjYXN0KDQsIG1vZCwgVFJVRSkNCiAgcHJpbnQobGlzdChwcmVkID0gcHIkcHJlZCArIGZpdDMkY29lZlsiaW50ZXJjZXB0Il0sDQogICAgICAgICAgICAgc2UgPSBzcXJ0KHByJHZhciAqIGZpdDMkc2lnbWEyKSkpDQogIG1vZCA8LSBhdHRyKHByLCAibW9kIikNCn0NCg0KYGBgDQoNCmBgYHtyfQ0KZml0X2thbG1hbiA8LSBLYWxtYW5MaWtlKHZpeCwgbW9kLCBuaXQgPSAwTCwgdXBkYXRlID0gRkFMU0UpDQpvdXQgPC0gS2FsbWFuU21vb3RoKHZpeCwgbW9kLCBuaXQgPSAwTCkNCmthbG1hbl9lc3QgPC0gb3V0JHNtb290aFsgLDJdDQpwbG90LnRzKHZpeCkNCnBsb3Qoa2FsbWFuX2VzdCwgbHR5ID0gImRhc2hlZCIsIGx3ZCA9IDIsY29sID0gImdyZWVuIikNCnZpeCA8LSAgdHNfdGltZVNlcmllcyh2aXgpDQpoaXN0UGxvdCh2aXgpDQoNCmBgYA0K