Using quantmod
library(quantmod)
This report examines the price of three stocks.
getSymbols(params$symbol1, src="yahoo") # from yahoo finance
## 'getSymbols' currently uses auto.assign=TRUE by default, but will
## use auto.assign=FALSE in 0.5-0. You will still be able to use
## 'loadSymbols' to automatically load data. getOption("getSymbols.env")
## and getOption("getSymbols.auto.assign") will still be checked for
## alternate defaults.
##
## This message is shown once per session and may be disabled by setting
## options("getSymbols.warning4.0"=FALSE). See ?getSymbols for details.
## [1] "GM"
stock01 <- getSymbols(params$symbol1, auto.assign = FALSE, src="yahoo")
barChart(stock01)
stock01 %>% head()
## GM.Open GM.High GM.Low GM.Close GM.Volume GM.Adjusted
## 2010-11-18 35.00 35.99 33.89 34.19 457044300 26.15552
## 2010-11-19 34.15 34.50 33.11 34.26 107842000 26.20907
## 2010-11-22 34.20 34.48 33.81 34.08 36650600 26.07136
## 2010-11-23 33.95 33.99 33.19 33.25 31170200 25.43641
## 2010-11-24 33.73 33.80 33.22 33.48 26138000 25.61237
## 2010-11-26 33.41 33.81 33.21 33.80 12301200 25.85717
We will use the BatchGetSymbols R package to download stock market data.
library(BatchGetSymbols)
# set dates
first.date <- Sys.Date() - 30
last.date <- Sys.Date()
# set tickers
tickers <- params
l.out <- BatchGetSymbols(tickers = tickers,
first.date = first.date,
last.date = last.date,
cache.folder = file.path(tempdir(),
'BGS_Cache') ) # cache in tempdir()
##
## Running BatchGetSymbols for:
## tickers =GM, F, TWTR
## Downloading data for benchmark ticker
## ^GSPC | yahoo (1|1) | Not Cached | Saving cache
## GM | yahoo (1|3) | Not Cached | Saving cache - Got 100% of valid prices | Well done!
## F | yahoo (2|3) | Not Cached | Saving cache - Got 100% of valid prices | You got it!
## TWTR | yahoo (3|3) | Not Cached | Saving cache - Got 100% of valid prices | Good stuff!
print(l.out$df.control)
## # A tibble: 3 x 6
## ticker src download.status total.obs perc.benchmark.dates threshold.decision
## <chr> <chr> <chr> <int> <dbl> <chr>
## 1 GM yahoo OK 21 1 KEEP
## 2 F yahoo OK 21 1 KEEP
## 3 TWTR yahoo OK 21 1 KEEP
Is the data in a tidy format?
print(l.out$df.tickers)
## price.open price.high price.low price.close volume price.adjusted
## 1 28.60 30.78 28.43 30.01 33827800 30.01
## 2 30.55 31.12 29.79 29.84 23102800 29.84
## 3 29.65 30.03 29.08 29.22 14504200 29.22
## 4 28.70 29.17 28.64 28.83 9680200 28.83
## 5 28.74 28.95 28.43 28.56 9841200 28.56
## 6 29.28 30.76 28.99 30.31 20137900 30.31
## 7 30.40 30.73 29.48 29.69 13006700 29.69
## 8 29.78 29.83 29.12 29.48 9740000 29.48
## 9 29.60 30.24 29.52 29.69 8745400 29.69
## 10 29.86 30.23 29.64 30.02 9180200 30.02
## 11 30.02 30.19 29.61 29.63 9585200 29.63
## 12 29.53 29.85 29.34 29.79 9012000 29.79
## 13 29.85 31.09 29.80 30.96 16246200 30.96
## 14 30.93 31.52 29.13 29.48 22358100 29.48
## 15 29.93 30.37 29.36 30.00 13822000 30.00
## 16 31.72 33.33 31.05 32.38 52000000 32.38
## 17 32.11 32.75 31.73 31.95 22375200 31.95
## 18 31.82 31.88 30.14 30.17 24845100 30.17
## 19 30.30 30.57 29.87 30.46 13638700 30.46
## 20 30.72 31.56 30.54 31.18 11972100 31.18
## 21 31.36 33.14 30.83 31.58 21090900 31.58
## 22 7.05 7.06 6.87 6.98 64555200 6.98
## 23 6.98 7.01 6.89 6.89 40444200 6.89
## 24 6.89 7.02 6.86 6.87 44158100 6.87
## 25 6.77 6.89 6.73 6.84 41824500 6.84
## 26 6.78 6.85 6.65 6.66 39158900 6.66
## 27 6.73 7.00 6.69 6.98 64974700 6.98
## 28 7.01 7.10 6.86 6.94 49550000 6.94
## 29 6.94 6.97 6.77 6.82 48600100 6.82
## 30 6.83 6.98 6.83 6.91 45740900 6.91
## 31 6.93 6.95 6.86 6.94 39936900 6.94
## 32 6.90 6.93 6.79 6.82 50089500 6.82
## 33 6.77 6.87 6.72 6.83 48214200 6.83
## 34 6.81 6.97 6.77 6.95 59008900 6.95
## 35 6.92 7.09 6.76 6.82 78130900 6.82
## 36 6.86 6.95 6.75 6.90 70017500 6.90
## 37 6.83 7.17 6.81 7.03 84749300 7.03
## 38 7.07 7.10 6.93 6.97 56501400 6.97
## 39 6.99 7.04 6.87 6.91 69228600 6.91
## 40 6.94 7.00 6.85 7.00 55080600 7.00
## 41 7.01 7.18 6.98 7.12 58704300 7.12
## 42 7.16 7.18 7.00 7.04 65183500 7.04
## 43 37.95 38.09 37.27 37.97 10188500 37.97
## 44 38.28 38.46 37.74 38.01 8572500 38.01
## 45 38.09 39.52 38.06 38.89 17077200 38.89
## 46 38.62 39.00 38.30 38.96 7745400 38.96
## 47 38.99 39.39 38.70 39.26 9758600 39.26
## 48 39.68 40.80 39.64 40.49 20496600 40.49
## 49 40.44 40.70 39.32 40.55 12470500 40.55
## 50 40.55 41.33 40.00 41.08 12532500 41.08
## 51 40.97 41.25 40.07 40.39 13055000 40.39
## 52 40.50 41.17 40.42 41.07 8033800 41.07
## 53 40.99 41.07 40.57 40.58 7468300 40.58
## 54 40.61 41.25 40.14 41.15 10478800 41.15
## 55 41.52 44.09 41.36 43.67 26800000 43.67
## 56 42.74 43.00 40.96 41.63 18760800 41.63
## 57 41.20 41.49 38.43 39.87 17825000 39.87
## 58 38.52 39.18 38.10 38.19 16117300 38.19
## 59 38.85 39.81 38.33 39.56 10744000 39.56
## 60 39.79 40.40 38.82 38.95 10412300 38.95
## 61 39.24 39.49 38.51 38.93 9885500 38.93
## 62 39.41 39.59 38.55 38.77 9418400 38.77
## 63 39.19 39.30 38.23 39.09 14099800 39.09
## ref.date ticker ret.adjusted.prices ret.closing.prices
## 1 2020-08-17 GM NA NA
## 2 2020-08-18 GM -0.0056647784 -0.0056647784
## 3 2020-08-19 GM -0.0207775134 -0.0207775134
## 4 2020-08-20 GM -0.0133469888 -0.0133469888
## 5 2020-08-21 GM -0.0093652792 -0.0093652792
## 6 2020-08-24 GM 0.0612745119 0.0612745119
## 7 2020-08-25 GM -0.0204552300 -0.0204552300
## 8 2020-08-26 GM -0.0070731220 -0.0070731220
## 9 2020-08-27 GM 0.0071235075 0.0071235075
## 10 2020-08-28 GM 0.0111148194 0.0111148194
## 11 2020-08-31 GM -0.0129913724 -0.0129913724
## 12 2020-09-01 GM 0.0054000002 0.0054000002
## 13 2020-09-02 GM 0.0392748560 0.0392748560
## 14 2020-09-03 GM -0.0478035868 -0.0478035868
## 15 2020-09-04 GM 0.0176390773 0.0176390773
## 16 2020-09-08 GM 0.0793333667 0.0793333667
## 17 2020-09-09 GM -0.0132798019 -0.0132798019
## 18 2020-09-10 GM -0.0557120796 -0.0557120796
## 19 2020-09-11 GM 0.0096121644 0.0096121644
## 20 2020-09-14 GM 0.0236375911 0.0236375911
## 21 2020-09-15 GM 0.0128287364 0.0128287364
## 22 2020-08-17 F NA NA
## 23 2020-08-18 F -0.0128939828 -0.0128939828
## 24 2020-08-19 F -0.0029027576 -0.0029027576
## 25 2020-08-20 F -0.0043668122 -0.0043668122
## 26 2020-08-21 F -0.0263157895 -0.0263157895
## 27 2020-08-24 F 0.0480480480 0.0480480480
## 28 2020-08-25 F -0.0057306590 -0.0057306590
## 29 2020-08-26 F -0.0172910663 -0.0172910663
## 30 2020-08-27 F 0.0131964809 0.0131964809
## 31 2020-08-28 F 0.0043415340 0.0043415340
## 32 2020-08-31 F -0.0172910663 -0.0172910663
## 33 2020-09-01 F 0.0014662757 0.0014662757
## 34 2020-09-02 F 0.0175695461 0.0175695461
## 35 2020-09-03 F -0.0187050360 -0.0187050360
## 36 2020-09-04 F 0.0117302053 0.0117302053
## 37 2020-09-08 F 0.0188405797 0.0188405797
## 38 2020-09-09 F -0.0085348506 -0.0085348506
## 39 2020-09-10 F -0.0086083214 -0.0086083214
## 40 2020-09-11 F 0.0130246020 0.0130246020
## 41 2020-09-14 F 0.0171428571 0.0171428571
## 42 2020-09-15 F -0.0112359551 -0.0112359551
## 43 2020-08-17 TWTR NA NA
## 44 2020-08-18 TWTR 0.0010533842 0.0010533842
## 45 2020-08-19 TWTR 0.0231518297 0.0231518297
## 46 2020-08-20 TWTR 0.0017999486 0.0017999486
## 47 2020-08-21 TWTR 0.0077001799 0.0077001799
## 48 2020-08-24 TWTR 0.0313297010 0.0313297010
## 49 2020-08-25 TWTR 0.0014817732 0.0014817732
## 50 2020-08-26 TWTR 0.0130703579 0.0130703579
## 51 2020-08-27 TWTR -0.0167965669 -0.0167965669
## 52 2020-08-28 TWTR 0.0168358756 0.0168358756
## 53 2020-08-31 TWTR -0.0119308011 -0.0119308011
## 54 2020-09-01 TWTR 0.0140463275 0.0140463275
## 55 2020-09-02 TWTR 0.0612392680 0.0612392680
## 56 2020-09-03 TWTR -0.0467139247 -0.0467139247
## 57 2020-09-04 TWTR -0.0422772510 -0.0422772510
## 58 2020-09-08 TWTR -0.0421369461 -0.0421369461
## 59 2020-09-09 TWTR 0.0358733186 0.0358733186
## 60 2020-09-10 TWTR -0.0154196154 -0.0154196154
## 61 2020-09-11 TWTR -0.0005135045 -0.0005135045
## 62 2020-09-14 TWTR -0.0041099409 -0.0041099409
## 63 2020-09-15 TWTR 0.0082538045 0.0082538045
l.out$df.tickers %>% ggplot(aes(x = ref.date, y = price.close)) +
geom_line() +
facet_wrap(~ticker, scales = 'free_y')