load(file="all_stocks_2006.01.01_to_2018.01.01.RData")
head(DJIA)
##         Date  Open  High   Low Close  Volume Name observations
## 1 2006-01-03 77.76 79.35 77.24 79.11 3117200  MMM            1
## 2 2006-01-04 79.49 79.49 78.25 78.71 2558000  MMM            1
## 3 2006-01-05 78.41 78.65 77.56 77.99 2529500  MMM            1
## 4 2006-01-06 78.64 78.90 77.64 78.63 2479500  MMM            1
## 5 2006-01-09 78.50 79.83 78.46 79.02 1845600  MMM            1
## 6 2006-01-10 79.00 79.01 78.08 78.53 1919900  MMM            1
summary(DJIA)
##       Date                 Open              High        
##  Min.   :2006-01-03   Min.   :   0.00   Min.   :   0.00  
##  1st Qu.:2008-12-31   1st Qu.:  33.93   1st Qu.:  34.28  
##  Median :2011-12-30   Median :  60.01   Median :  60.62  
##  Mean   :2012-01-01   Mean   :  85.60   Mean   :  86.38  
##  3rd Qu.:2015-01-02   3rd Qu.:  93.99   3rd Qu.:  94.74  
##  Max.   :2017-12-29   Max.   :1204.88   Max.   :1213.41  
##                                                          
##       Low              Close             Volume               Name      
##  Min.   :   0.00   Min.   :   6.66   Min.   :        0   AXP    : 3020  
##  1st Qu.:  33.59   1st Qu.:  33.96   1st Qu.:  5040180   BA     : 3020  
##  Median :  59.47   Median :  60.05   Median :  9701142   CAT    : 3020  
##  Mean   :  84.82   Mean   :  85.64   Mean   : 20156670   CVX    : 3020  
##  3rd Qu.:  93.24   3rd Qu.:  94.01   3rd Qu.: 20752222   DIS    : 3020  
##  Max.   :1191.15   Max.   :1195.83   Max.   :843264044   GE     : 3020  
##                                                          (Other):75492  
##   observations
##  Min.   :1    
##  1st Qu.:1    
##  Median :1    
##  Mean   :1    
##  3rd Qu.:1    
##  Max.   :1    
## 
# NA's i.e) missing values observed # esp dates : 93426 / 93612 : need to impute
str(DJIA)
## 'data.frame':    93612 obs. of  8 variables:
##  $ Date        : Date, format: "2006-01-03" "2006-01-04" ...
##  $ Open        : num  77.8 79.5 78.4 78.6 78.5 ...
##  $ High        : num  79.3 79.5 78.7 78.9 79.8 ...
##  $ Low         : num  77.2 78.2 77.6 77.6 78.5 ...
##  $ Close       : num  79.1 78.7 78 78.6 79 ...
##  $ Volume      : int  3117200 2558000 2529500 2479500 1845600 1919900 1911900 2121100 1925300 2073400 ...
##  $ Name        : Factor w/ 31 levels "AABA","AAPL",..: 20 20 20 20 20 20 20 20 20 20 ...
##  $ observations: num  1 1 1 1 1 1 1 1 1 1 ...
#date is listed as a factor, need to convert it to date structure
#clean the data#
DJIA[is.na(DJIA)] <- 0
DJIA$Date <- as.Date(DJIA$Date, format = "%Y-%m-%d")
summary(DJIA) # no more NA's
##       Date                 Open              High        
##  Min.   :2006-01-03   Min.   :   0.00   Min.   :   0.00  
##  1st Qu.:2008-12-31   1st Qu.:  33.93   1st Qu.:  34.28  
##  Median :2011-12-30   Median :  60.01   Median :  60.62  
##  Mean   :2012-01-01   Mean   :  85.60   Mean   :  86.38  
##  3rd Qu.:2015-01-02   3rd Qu.:  93.99   3rd Qu.:  94.74  
##  Max.   :2017-12-29   Max.   :1204.88   Max.   :1213.41  
##                                                          
##       Low              Close             Volume               Name      
##  Min.   :   0.00   Min.   :   6.66   Min.   :        0   AXP    : 3020  
##  1st Qu.:  33.59   1st Qu.:  33.96   1st Qu.:  5040180   BA     : 3020  
##  Median :  59.47   Median :  60.05   Median :  9701142   CAT    : 3020  
##  Mean   :  84.82   Mean   :  85.64   Mean   : 20156670   CVX    : 3020  
##  3rd Qu.:  93.24   3rd Qu.:  94.01   3rd Qu.: 20752222   DIS    : 3020  
##  Max.   :1191.15   Max.   :1195.83   Max.   :843264044   GE     : 3020  
##                                                          (Other):75492  
##   observations
##  Min.   :1    
##  1st Qu.:1    
##  Median :1    
##  Mean   :1    
##  3rd Qu.:1    
##  Max.   :1    
## 
length(DJIA$Date)
## [1] 93612
str(DJIA)
## 'data.frame':    93612 obs. of  8 variables:
##  $ Date        : Date, format: "2006-01-03" "2006-01-04" ...
##  $ Open        : num  77.8 79.5 78.4 78.6 78.5 ...
##  $ High        : num  79.3 79.5 78.7 78.9 79.8 ...
##  $ Low         : num  77.2 78.2 77.6 77.6 78.5 ...
##  $ Close       : num  79.1 78.7 78 78.6 79 ...
##  $ Volume      : int  3117200 2558000 2529500 2479500 1845600 1919900 1911900 2121100 1925300 2073400 ...
##  $ Name        : Factor w/ 31 levels "AABA","AAPL",..: 20 20 20 20 20 20 20 20 20 20 ...
##  $ observations: num  1 1 1 1 1 1 1 1 1 1 ...

Understanding the nature of stocks

library(gridExtra)
## Warning: package 'gridExtra' was built under R version 3.4.4
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.4.4
p1 = ggplot(DJIA, aes(Open)) + geom_histogram(bins = 50, aes(y = ..density..), col = "red", fill = "red", alpha = 0.3) + geom_density()# + xlim(c(0, 1000))

p1

p2 = ggplot(DJIA, aes(High)) + geom_histogram(bins = 50, aes(y = ..density..), col = "red", fill = "red", alpha = 0.3) + geom_density()# + xlim(c(0, 1000))

p2

p3 = ggplot(DJIA, aes(Low)) + geom_histogram(bins = 50, aes(y = ..density..), col = "red", fill = "red", alpha = 0.3) + geom_density()# + xlim(c(0, 1000))

p3

p4 = ggplot(DJIA, aes(Close)) + geom_histogram(bins = 50, aes(y = ..density..), col = "red", fill = "red", alpha = 0.3) + geom_density()# + xlim(c(0, 1000))

p4

library(gridExtra)
grid.arrange(p1,p2,p3,p4, nrow=2,ncol=2)

#filter data where High >100 
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
## 
##     combine
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
tmp <- filter(DJIA,High > 100)
length(unique(tmp$Name))
## [1] 20
tmp$Name[1:5]
## [1] MMM MMM MMM MMM MMM
## 31 Levels: AABA AAPL AMZN AXP BA CAT CSCO CVX DIS GE GOOGL GS HD ... XOM
library(assertthat)
## Warning: package 'assertthat' was built under R version 3.4.4
sample_num = 5
assert_that(sample_num < length(unique(tmp$Name)))
## [1] TRUE
sample_ticker <- as.character(sample(tmp$Name, sample_num))

is.ts(DJIA)
## [1] FALSE
DJIATS <- as.ts(DJIA)

#Identify a sample of company interested in
sample_ticker <- c(sample_ticker, 'GOOGL') 
candidate_ticker <- unique(sample_ticker)
candidate_ticker <- c("IBM", "BA", "AAPL", "GS", "GOOGL")
candidate_num <- length(candidate_ticker)
stock_list <- vector(mode="list", length=candidate_num)
names(stock_list) <- candidate_ticker
i = 1
for (ticker in candidate_ticker){
  stock_list[[i]] <- filter(DJIA, Name == ticker)
  # print(stock_list[[i]])
  i <- i+1
  # print(ticker)
}
str(stock_list)
## List of 5
##  $ IBM  :'data.frame':   3020 obs. of  8 variables:
##   ..$ Date        : Date[1:3020], format: "2006-01-03" ...
##   ..$ Open        : num [1:3020] 82.5 82.2 81.4 84 84.1 ...
##   ..$ High        : num [1:3020] 82.5 82.5 82.9 85 84.2 ...
##   ..$ Low         : num [1:3020] 80.8 81.3 81 83.4 83.4 ...
##   ..$ Close       : num [1:3020] 82.1 82 82.5 85 83.7 ...
##   ..$ Volume      : int [1:3020] 11715200 9840600 7213500 8197400 6858200 5701000 5776500 4926500 6921700 8761700 ...
##   ..$ Name        : Factor w/ 31 levels "AABA","AAPL",..: 14 14 14 14 14 14 14 14 14 14 ...
##   ..$ observations: num [1:3020] 1 1 1 1 1 1 1 1 1 1 ...
##  $ BA   :'data.frame':   3020 obs. of  8 variables:
##   ..$ Date        : Date[1:3020], format: "2006-01-03" ...
##   ..$ Open        : num [1:3020] 70.4 70.1 70.5 70.3 69.3 ...
##   ..$ High        : num [1:3020] 70.6 71.3 70.5 70.5 69.4 ...
##   ..$ Low         : num [1:3020] 69.3 69.9 69.6 69 68.7 ...
##   ..$ Close       : num [1:3020] 70.4 71.2 70.3 69.3 68.8 ...
##   ..$ Volume      : int [1:3020] 4943100 3165000 4598300 4820200 4567700 3869000 5011900 2347000 2963700 2712900 ...
##   ..$ Name        : Factor w/ 31 levels "AABA","AAPL",..: 5 5 5 5 5 5 5 5 5 5 ...
##   ..$ observations: num [1:3020] 1 1 1 1 1 1 1 1 1 1 ...
##  $ AAPL :'data.frame':   3019 obs. of  8 variables:
##   ..$ Date        : Date[1:3019], format: "2006-01-03" ...
##   ..$ Open        : num [1:3019] 10.3 10.7 10.7 10.8 11 ...
##   ..$ High        : num [1:3019] 10.7 10.8 10.7 11 11 ...
##   ..$ Low         : num [1:3019] 10.3 10.6 10.5 10.6 10.8 ...
##   ..$ Close       : num [1:3019] 10.7 10.7 10.6 10.9 10.9 ...
##   ..$ Volume      : int [1:3019] 201853036 155225609 112396081 176139334 168861224 570088246 373548882 320201966 194153393 209215265 ...
##   ..$ Name        : Factor w/ 31 levels "AABA","AAPL",..: 2 2 2 2 2 2 2 2 2 2 ...
##   ..$ observations: num [1:3019] 1 1 1 1 1 1 1 1 1 1 ...
##  $ GS   :'data.frame':   3020 obs. of  8 variables:
##   ..$ Date        : Date[1:3020], format: "2006-01-03" ...
##   ..$ Open        : num [1:3020] 127 127 126 127 128 ...
##   ..$ High        : num [1:3020] 129 129 127 129 131 ...
##   ..$ Low         : num [1:3020] 124 126 126 127 128 ...
##   ..$ Close       : num [1:3020] 129 127 127 129 130 ...
##   ..$ Volume      : int [1:3020] 6188700 4862000 3717600 4319600 4723500 5539800 4671400 3725500 2894900 3624600 ...
##   ..$ Name        : Factor w/ 31 levels "AABA","AAPL",..: 12 12 12 12 12 12 12 12 12 12 ...
##   ..$ observations: num [1:3020] 1 1 1 1 1 1 1 1 1 1 ...
##  $ GOOGL:'data.frame':   3019 obs. of  8 variables:
##   ..$ Date        : Date[1:3019], format: "2006-01-03" ...
##   ..$ Open        : num [1:3019] 211 222 223 229 233 ...
##   ..$ High        : num [1:3019] 218 225 226 235 237 ...
##   ..$ Low         : num [1:3019] 209 220 221 227 231 ...
##   ..$ Close       : num [1:3019] 218 223 226 233 234 ...
##   ..$ Volume      : int [1:3019] 13137450 15292353 10815661 17759521 12795837 9104719 9008664 10125212 7660220 8335300 ...
##   ..$ Name        : Factor w/ 31 levels "AABA","AAPL",..: 11 11 11 11 11 11 11 11 11 11 ...
##   ..$ observations: num [1:3019] 1 1 1 1 1 1 1 1 1 1 ...
xts_list <- vector(mode="list", length=candidate_num)
ts_list <- vector(mode="list", length=candidate_num)

names(xts_list) = candidate_ticker
names(ts_list) = candidate_ticker

use [[]] to access single element of a list in R, versus printing the entire thing , it may alternatively be used

for partial matching as well

library(xts)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
for (ticker in candidate_ticker){
  stock = stock_list[[ticker]]
  xts = xts(stock$Close, order.by=stock$Date)
  attr(xts, 'frequency') <- length(xts)/12
  ts = as.ts(xts, start = c(2006))
  xts_list[[ticker]] <- xts
  ts_list[[ticker]] <- ts
}
#the data.table below contains the values of 'High' for the 5 companies of interest/date#
xts_table= do.call(cbind, xts_list)
library(dygraphs)
dygraph(xts_table, xlab = "Time", ylab = "High value", main = "Time Series") %>%
  # dySeries(labels.default()) %>%
  # dyOptions(colors = c("red")) %>%
  dyRangeSelector()

Time series use case : Google

“Dickey-Fuller test” to determine stationarity

xts = xts_list[['GOOGL']]
ts = ts_list[['GOOGL']]
library(tseries)
adf.test(xts, alternative = "stationary", k = 0)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  xts
## Dickey-Fuller = -1.3188, Lag order = 0, p-value = 0.8667
## alternative hypothesis: stationary
#Decomposing time series to separate trends and irregular components to get rid of biases due to seasonality (irregular)
tscomponents_add <- decompose(ts, type = "additive")
tscomponents_mul <- decompose(ts, type = "multiplicative")
plot(tscomponents_add, col = "red")

plot(tscomponents_mul, col = "blue")

#seasonality variation seems to be constant over time

#Use diffferncing to eliminate the effect of trend#
xtsdiff1 <- diff(xts, differences=1)
tsdiff1 <- diff(ts, differences=1)
plot.xts(xtsdiff1, col = "blue")

# check if differencing helps stationarize it#
adf.test(tsdiff1, alternative = "stationary", k = 0)
## Warning in adf.test(tsdiff1, alternative = "stationary", k = 0): p-value
## smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  tsdiff1
## Dickey-Fuller = -53.448, Lag order = 0, p-value = 0.01
## alternative hypothesis: stationary

Try to fit an ARIMA model ie) find p,q , d=1 (usually differencing over one lag suffices)

Check correlations instead of covariances because they are not skewed for scale

library(TSA)
## Loading required package: leaps
## Loading required package: locfit
## locfit 1.5-9.1    2013-03-22
## Loading required package: mgcv
## Loading required package: nlme
## 
## Attaching package: 'nlme'
## The following object is masked from 'package:dplyr':
## 
##     collapse
## This is mgcv 1.8-22. For overview type 'help("mgcv-package")'.
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar
library(dplyr)
xtsdiff1[is.na(xtsdiff1)] <- 0
acf(xtsdiff1,lag.max = 60) 

pacf(xtsdiff1)

#Model trials3
AR1 <- arima(xtsdiff1,order = c(1,0,0))
plot(residuals(AR1))

AR1fit <- xtsdiff1 - residuals(AR1)
## Warning: Incompatible methods ("Ops.xts", "Ops.ts") for "-"
MA1 <- arima(xtsdiff1, order = c(0,0,1))
plot(residuals(MA1))

MA1fit <- xtsdiff1 - residuals(MA1)
## Warning: Incompatible methods ("Ops.xts", "Ops.ts") for "-"
drift <- arima(xtsdiff1,order=c(0,0,0))


#try autoarima - different combinations
library(forecast)
## 
## Attaching package: 'forecast'
## The following object is masked from 'package:nlme':
## 
##     getResponse
tsarima240 <- auto.arima(head(xts, -240), max.p = 3, max.q = 3, max.d = 3) 
print(tsarima240)
## Series: head(xts, -240) 
## ARIMA(0,1,0) with drift 
## 
## Coefficients:
##        drift
##       0.2200
## s.e.  0.1264
## 
## sigma^2 estimated as 44.43:  log likelihood=-9210.91
## AIC=18425.82   AICc=18425.82   BIC=18437.67
#forecasting using fit model
tsforecasts240 <- forecast(tsarima240, h = 240)
print(tsforecasts240)
##          Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
## 12.04604       829.2400 820.6982  837.7818 816.1764  842.3036
## 12.05002       829.4600 817.3801  841.5400 810.9853  847.9347
## 12.05399       829.6800 814.8852  844.4749 807.0532  852.3068
## 12.05797       829.9000 812.8164  846.9837 803.7729  856.0272
## 12.06194       830.1201 811.0200  849.2202 800.9090  859.3311
## 12.06592       830.3401 809.4170  851.2632 798.3409  862.3392
## 12.06989       830.5601 807.9605  853.1596 795.9971  865.1231
## 12.07387       830.7801 806.6202  854.9400 793.8307  867.7295
## 12.07784       831.0001 805.3746  856.6256 791.8093  870.1909
## 12.08182       831.2201 804.2085  858.2317 789.9094  872.5308
## 12.08579       831.4401 803.1101  859.7701 788.1131  874.7672
## 12.08976       831.6601 802.0704  861.2499 786.4065  876.9137
## 12.09374       831.8801 801.0822  862.6781 784.7787  878.9816
## 12.09771       832.1002 800.1396  864.0607 783.2207  880.9796
## 12.10169       832.3202 799.2378  865.4025 781.7251  882.9152
## 12.10566       832.5402 798.3729  866.7075 780.2858  884.7946
## 12.10964       832.7602 797.5413  867.9790 778.8976  886.6228
## 12.11361       832.9802 796.7403  869.2201 777.5561  888.4043
## 12.11759       833.2002 795.9673  870.4332 776.2573  890.1431
## 12.12156       833.4202 795.2200  871.6204 774.9980  891.8424
## 12.12554       833.6402 794.4967  872.7838 773.7753  893.5051
## 12.12951       833.8602 793.7955  873.9250 772.5865  895.1339
## 12.13349       834.0802 793.1151  875.0454 771.4294  896.7310
## 12.13746       834.3003 792.4540  876.1465 770.3020  898.2985
## 12.14144       834.5203 791.8111  877.2294 769.2023  899.8382
## 12.14541       834.7403 791.1853  878.2952 768.1288  901.3518
## 12.14939       834.9603 790.5757  879.3449 767.0799  902.8407
## 12.15336       835.1803 789.9812  880.3794 766.0543  904.3063
## 12.15734       835.4003 789.4012  881.3995 765.0507  905.7499
## 12.16131       835.6203 788.8348  882.4058 764.0681  907.1726
## 12.16529       835.8403 788.2815  883.3992 763.1053  908.5754
## 12.16926       836.0603 787.7405  884.3802 762.1615  909.9592
## 12.17324       836.2804 787.2113  885.3494 761.2357  911.3250
## 12.17721       836.5004 786.6934  886.3073 760.3272  912.6736
## 12.18119       836.7204 786.1863  887.2545 759.4351  914.0056
## 12.18516       836.9404 785.6894  888.1913 758.5588  915.3220
## 12.18914       837.1604 785.2025  889.1183 757.6977  916.6231
## 12.19311       837.3804 784.7251  890.0358 756.8510  917.9098
## 12.19709       837.6004 784.2567  890.9441 756.0183  919.1825
## 12.20106       837.8204 783.7972  891.8437 755.1990  920.4419
## 12.20503       838.0404 783.3461  892.7348 754.3926  921.6883
## 12.20901       838.2605 782.9031  893.6178 753.5987  922.9222
## 12.21298       838.4805 782.4680  894.4930 752.8167  924.1442
## 12.21696       838.7005 782.0404  895.3605 752.0464  925.3546
## 12.22093       838.9205 781.6202  896.2208 751.2872  926.5537
## 12.22491       839.1405 781.2070  897.0740 750.5389  927.7421
## 12.22888       839.3605 780.8007  897.9203 749.8010  928.9200
## 12.23286       839.5805 780.4010  898.7600 749.0733  930.0878
## 12.23683       839.8005 780.0078  899.5933 748.3554  931.2457
## 12.24081       840.0205 779.6207  900.4204 747.6470  932.3941
## 12.24478       840.2406 779.2397  901.2414 746.9478  933.5333
## 12.24876       840.4606 778.8646  902.0565 746.2576  934.6635
## 12.25273       840.6806 778.4951  902.8660 745.5762  935.7850
## 12.25671       840.9006 778.1312  903.6699 744.9032  936.8980
## 12.26068       841.1206 777.7727  904.4685 744.2384  938.0028
## 12.26466       841.3406 777.4194  905.2618 743.5816  939.0996
## 12.26863       841.5606 777.0712  906.0500 742.9326  940.1886
## 12.27261       841.7806 776.7280  906.8332 742.2913  941.2700
## 12.27658       842.0006 776.3896  907.6116 741.6573  942.3440
## 12.28056       842.2206 776.0560  908.3853 741.0305  943.4108
## 12.28453       842.4407 775.7269  909.1544 740.4107  944.4706
## 12.28851       842.6607 775.4023  909.9191 739.7978  945.5235
## 12.29248       842.8807 775.0820  910.6793 739.1916  946.5697
## 12.29646       843.1007 774.7661  911.4353 738.5919  947.6094
## 12.30043       843.3207 774.4543  912.1871 737.9986  948.6428
## 12.30441       843.5407 774.1466  912.9348 737.4116  949.6699
## 12.30838       843.7607 773.8429  913.6786 736.8306  950.6909
## 12.31236       843.9807 773.5430  914.4184 736.2556  951.7059
## 12.31633       844.2007 773.2470  915.1545 735.6864  952.7151
## 12.32030       844.4208 772.9547  915.8868 735.1229  953.7186
## 12.32428       844.6408 772.6661  916.6155 734.5650  954.7166
## 12.32825       844.8608 772.3810  917.3406 734.0125  955.7091
## 12.33223       845.0808 772.0994  918.0622 733.4654  956.6962
## 12.33620       845.3008 771.8212  918.7804 732.9235  957.6781
## 12.34018       845.5208 771.5464  919.4952 732.3868  958.6549
## 12.34415       845.7408 771.2749  920.2067 731.8550  959.6266
## 12.34813       845.9608 771.0066  920.9150 731.3283  960.5934
## 12.35210       846.1808 770.7415  921.6202 730.8063  961.5554
## 12.35608       846.4009 770.4794  922.3223 730.2891  962.5126
## 12.36005       846.6209 770.2205  923.0213 729.7765  963.4652
## 12.36403       846.8409 769.9644  923.7173 729.2685  964.4132
## 12.36800       847.0609 769.7114  924.4104 728.7650  965.3568
## 12.37198       847.2809 769.4612  925.1006 728.2659  966.2959
## 12.37595       847.5009 769.2138  925.7880 727.7711  967.2307
## 12.37993       847.7209 768.9692  926.4727 727.2805  968.1613
## 12.38390       847.9409 768.7273  927.1546 726.7941  969.0877
## 12.38788       848.1609 768.4881  927.8338 726.3118  970.0100
## 12.39185       848.3810 768.2515  928.5104 725.8336  970.9283
## 12.39583       848.6010 768.0175  929.1844 725.3593  971.8427
## 12.39980       848.8210 767.7861  929.8558 724.8888  972.7531
## 12.40378       849.0410 767.5572  930.5248 724.4222  973.6597
## 12.40775       849.2610 767.3307  931.1913 723.9594  974.5626
## 12.41173       849.4810 767.1066  931.8554 723.5003  975.4617
## 12.41570       849.7010 766.8849  932.5171 723.0448  976.3573
## 12.41968       849.9210 766.6656  933.1764 722.5929  977.2492
## 12.42365       850.1410 766.4486  933.8335 722.1445  978.1376
## 12.42763       850.3610 766.2338  934.4883 721.6996  979.0225
## 12.43160       850.5811 766.0213  935.1408 721.2581  979.9040
## 12.43557       850.8011 765.8110  935.7912 720.8199  980.7822
## 12.43955       851.0211 765.6028  936.4393 720.3851  981.6570
## 12.44352       851.2411 765.3968  937.0854 719.9536  982.5286
## 12.44750       851.4611 765.1929  937.7293 719.5253  983.3969
## 12.45147       851.6811 764.9911  938.3712 719.1001  984.2621
## 12.45545       851.9011 764.7913  939.0110 718.6781  985.1242
## 12.45942       852.1211 764.5935  939.6488 718.2591  985.9831
## 12.46340       852.3411 764.3977  940.2846 717.8432  986.8391
## 12.46737       852.5612 764.2038  940.9185 717.4303  987.6920
## 12.47135       852.7812 764.0119  941.5504 717.0203  988.5420
## 12.47532       853.0012 763.8219  942.1805 716.6132  989.3891
## 12.47930       853.2212 763.6338  942.8086 716.2091  990.2333
## 12.48327       853.4412 763.4475  943.4349 715.8077  991.0747
## 12.48725       853.6612 763.2630  944.0594 715.4091  991.9133
## 12.49122       853.8812 763.0804  944.6821 715.0133  992.7491
## 12.49520       854.1012 762.8995  945.3030 714.6202  993.5823
## 12.49917       854.3212 762.7204  945.9221 714.2298  994.4127
## 12.50315       854.5413 762.5430  946.5395 713.8420  995.2405
## 12.50712       854.7613 762.3673  947.1552 713.4569  996.0656
## 12.51110       854.9813 762.1933  947.7692 713.0743  996.8882
## 12.51507       855.2013 762.0210  948.3816 712.6943  997.7083
## 12.51905       855.4213 761.8503  948.9923 712.3168  998.5258
## 12.52302       855.6413 761.6812  949.6014 711.9418  999.3408
## 12.52700       855.8613 761.5138  950.2089 711.5692 1000.1534
## 12.53097       856.0813 761.3479  950.8148 711.1991 1000.9636
## 12.53495       856.3013 761.1836  951.4191 710.8313 1001.7714
## 12.53892       856.5213 761.0208  952.0219 710.4659 1002.5768
## 12.54289       856.7414 760.8596  952.6231 710.1029 1003.3798
## 12.54687       856.9614 760.6999  953.2229 709.7421 1004.1806
## 12.55084       857.1814 760.5417  953.8211 709.3837 1004.9791
## 12.55482       857.4014 760.3849  954.4179 709.0275 1005.7753
## 12.55879       857.6214 760.2296  955.0132 708.6735 1006.5693
## 12.56277       857.8414 760.0758  955.6071 708.3217 1007.3611
## 12.56674       858.0614 759.9233  956.1995 707.9722 1008.1507
## 12.57072       858.2814 759.7723  956.7906 707.6247 1008.9382
## 12.57469       858.5014 759.6227  957.3802 707.2794 1009.7235
## 12.57867       858.7215 759.4744  957.9685 706.9362 1010.5067
## 12.58264       858.9415 759.3275  958.5554 706.5951 1011.2879
## 12.58662       859.1615 759.1820  959.1410 706.2560 1012.0669
## 12.59059       859.3815 759.0378  959.7252 705.9190 1012.8440
## 12.59457       859.6015 758.8949  960.3081 705.5840 1013.6190
## 12.59854       859.8215 758.7533  960.8898 705.2510 1014.3920
## 12.60252       860.0415 758.6130  961.4701 704.9199 1015.1631
## 12.60649       860.2615 758.4739  962.0491 704.5908 1015.9322
## 12.61047       860.4815 758.3362  962.6269 704.2637 1016.6994
## 12.61444       860.7016 758.1997  963.2035 703.9384 1017.4647
## 12.61842       860.9216 758.0644  963.7788 703.6151 1018.2281
## 12.62239       861.1416 757.9303  964.3528 703.2936 1018.9896
## 12.62637       861.3616 757.7975  964.9257 702.9739 1019.7493
## 12.63034       861.5816 757.6658  965.4974 702.6561 1020.5071
## 12.63432       861.8016 757.5353  966.0679 702.3401 1021.2631
## 12.63829       862.0216 757.4061  966.6372 702.0259 1022.0173
## 12.64227       862.2416 757.2779  967.2053 701.7135 1022.7698
## 12.64624       862.4616 757.1509  967.7723 701.4028 1023.5205
## 12.65022       862.6817 757.0251  968.3382 701.0939 1024.2694
## 12.65419       862.9017 756.9004  968.9029 700.7867 1025.0166
## 12.65816       863.1217 756.7768  969.4665 700.4812 1025.7621
## 12.66214       863.3417 756.6543  970.0290 700.1774 1026.5059
## 12.66611       863.5617 756.5329  970.5905 699.8753 1027.2481
## 12.67009       863.7817 756.4126  971.1508 699.5749 1027.9885
## 12.67406       864.0017 756.2934  971.7100 699.2761 1028.7274
## 12.67804       864.2217 756.1752  972.2682 698.9789 1029.4646
## 12.68201       864.4417 756.0581  972.8254 698.6833 1030.2002
## 12.68599       864.6617 755.9421  973.3814 698.3893 1030.9342
## 12.68996       864.8818 755.8270  973.9365 698.0969 1031.6666
## 12.69394       865.1018 755.7130  974.4905 697.8061 1032.3974
## 12.69791       865.3218 755.6000  975.0435 697.5169 1033.1267
## 12.70189       865.5418 755.4881  975.5955 697.2291 1033.8544
## 12.70586       865.7618 755.3771  976.1465 696.9430 1034.5807
## 12.70984       865.9818 755.2671  976.6965 696.6583 1035.3054
## 12.71381       866.2018 755.1581  977.2456 696.3751 1036.0286
## 12.71779       866.4218 755.0501  977.7936 696.0934 1036.7503
## 12.72176       866.6418 754.9430  978.3407 695.8132 1037.4705
## 12.72574       866.8619 754.8369  978.8868 695.5344 1038.1893
## 12.72971       867.0819 754.7317  979.4320 695.2571 1038.9066
## 12.73369       867.3019 754.6275  979.9763 694.9812 1039.6225
## 12.73766       867.5219 754.5242  980.5196 694.7068 1040.3370
## 12.74164       867.7419 754.4218  981.0620 694.4337 1041.0501
## 12.74561       867.9619 754.3203  981.6035 694.1621 1041.7617
## 12.74959       868.1819 754.2198  982.1441 693.8918 1042.4720
## 12.75356       868.4019 754.1201  982.6838 693.6229 1043.1809
## 12.75754       868.6219 754.0213  983.2226 693.3554 1043.8885
## 12.76151       868.8420 753.9234  983.7605 693.0893 1044.5946
## 12.76549       869.0620 753.8264  984.2975 692.8244 1045.2995
## 12.76946       869.2820 753.7303  984.8336 692.5609 1046.0030
## 12.77343       869.5020 753.6350  985.3689 692.2988 1046.7052
## 12.77741       869.7220 753.5406  985.9034 692.0379 1047.4061
## 12.78138       869.9420 753.4470  986.4370 691.7783 1048.1057
## 12.78536       870.1620 753.3543  986.9697 691.5200 1048.8040
## 12.78933       870.3820 753.2624  987.5016 691.2630 1049.5010
## 12.79331       870.6020 753.1714  988.0327 691.0073 1050.1968
## 12.79728       870.8221 753.0811  988.5630 690.7528 1050.8913
## 12.80126       871.0421 752.9917  989.0924 690.4996 1051.5845
## 12.80523       871.2621 752.9031  989.6211 690.2476 1052.2766
## 12.80921       871.4821 752.8153  990.1489 689.9968 1052.9673
## 12.81318       871.7021 752.7282  990.6760 689.7473 1053.6569
## 12.81716       871.9221 752.6420  991.2022 689.4989 1054.3453
## 12.82113       872.1421 752.5566  991.7277 689.2518 1055.0324
## 12.82511       872.3621 752.4719  992.2524 689.0058 1055.7184
## 12.82908       872.5821 752.3880  992.7763 688.7611 1056.4032
## 12.83306       872.8021 752.3049  993.2994 688.5175 1057.0868
## 12.83703       873.0222 752.2225  993.8218 688.2750 1057.7693
## 12.84101       873.2422 752.1409  994.3434 688.0338 1058.4506
## 12.84498       873.4622 752.0600  994.8643 687.7936 1059.1307
## 12.84896       873.6822 751.9799  995.3845 687.5546 1059.8098
## 12.85293       873.9022 751.9005  995.9039 687.3168 1060.4877
## 12.85691       874.1222 751.8219  996.4225 687.0800 1061.1644
## 12.86088       874.3422 751.7440  996.9405 686.8444 1061.8401
## 12.86486       874.5622 751.6668  997.4577 686.6098 1062.5146
## 12.86883       874.7822 751.5903  997.9742 686.3764 1063.1881
## 12.87281       875.0023 751.5145  998.4900 686.1441 1063.8605
## 12.87678       875.2223 751.4395  999.0051 685.9128 1064.5317
## 12.88076       875.4423 751.3651  999.5195 685.6826 1065.2020
## 12.88473       875.6623 751.2914 1000.0331 685.4535 1065.8711
## 12.88870       875.8823 751.2185 1000.5461 685.2254 1066.5392
## 12.89268       876.1023 751.1462 1001.0584 684.9984 1067.2062
## 12.89665       876.3223 751.0746 1001.5701 684.7724 1067.8722
## 12.90063       876.5423 751.0037 1002.0810 684.5475 1068.5372
## 12.90460       876.7623 750.9334 1002.5913 684.3236 1069.2011
## 12.90858       876.9824 750.8638 1003.1009 684.1007 1069.8640
## 12.91255       877.2024 750.7949 1003.6098 683.8788 1070.5259
## 12.91653       877.4224 750.7266 1004.1181 683.6580 1071.1868
## 12.92050       877.6424 750.6590 1004.6258 683.4381 1071.8467
## 12.92448       877.8624 750.5921 1005.1327 683.2192 1072.5056
## 12.92845       878.0824 750.5258 1005.6391 683.0013 1073.1635
## 12.93243       878.3024 750.4601 1006.1448 682.7844 1073.8204
## 12.93640       878.5224 750.3950 1006.6498 682.5685 1074.4763
## 12.94038       878.7424 750.3306 1007.1542 682.3536 1075.1313
## 12.94435       878.9625 750.2669 1007.6580 682.1396 1075.7854
## 12.94833       879.1825 750.2037 1008.1612 681.9265 1076.4384
## 12.95230       879.4025 750.1412 1008.6637 681.7144 1077.0905
## 12.95628       879.6225 750.0793 1009.1657 681.5033 1077.7417
## 12.96025       879.8425 750.0180 1009.6670 681.2930 1078.3919
## 12.96423       880.0625 749.9573 1010.1677 681.0838 1079.0413
## 12.96820       880.2825 749.8972 1010.6678 680.8754 1079.6896
## 12.97218       880.5025 749.8377 1011.1673 680.6680 1080.3371
## 12.97615       880.7225 749.7788 1011.6662 680.4614 1080.9837
## 12.98013       880.9425 749.7205 1012.1646 680.2558 1081.6293
## 12.98410       881.1626 749.6628 1012.6623 680.0511 1082.2740
## 12.98808       881.3826 749.6057 1013.1594 679.8472 1082.9179
## 12.99205       881.6026 749.5492 1013.6560 679.6443 1083.5609
## 12.99603       881.8226 749.4932 1014.1520 679.4423 1084.2029
xts_test <- tail(xts, 240)
write.csv(xts_test,file = "forecasts_orig")

#save forecasts to a tabl
write.csv(tsforecasts240,file = "forecasts_Google")
library(ggfortify)
autoplot(tsforecasts240)

accuracy(tsforecasts240, head(tail(xts, 240), 240))
##                        ME       RMSE       MAE         MPE     MAPE
## Training set 7.830510e-05   6.662823  4.358564 -0.04023279 1.255910
## Test set     8.958999e+01 107.462582 90.356608  9.04790109 9.141123
##                    MASE       ACF1
## Training set 0.05516544 0.02251657
## Test set     1.14362484         NA
ggplot(data.frame(residuals = tsforecasts240$residuals), aes(residuals)) + geom_histogram(bins = 50, aes(y = ..density..),
      col = "red", fill = "red", alpha = 0.3) + geom_density()# make a histogram
## Don't know how to automatically pick scale for object of type ts. Defaulting to continuous.