start_date <- "2024-01-01"
end_date <- Sys.Date()
stocks <- c("AAPL", "MSFT", "GOOG", "AMZN", "TSM", "NVDA")
getSymbols(
stocks,
src = "yahoo",
from = start_date,
to = end_date,
auto.assign = TRUE
)
## [1] "AAPL" "MSFT" "GOOG" "AMZN" "TSM" "NVDA"
prices <- merge(
Ad(AAPL),
Ad(MSFT),
Ad(GOOG),
Ad(AMZN),
Ad(TSM),
Ad(NVDA)
)
colnames(prices) <- stocks
head(prices)
## AAPL MSFT GOOG AMZN TSM NVDA
## 2024-01-02 183.4040 363.1180 138.2505 149.93 98.27406 48.08253
## 2024-01-03 182.0307 362.8536 139.0430 148.47 96.95766 47.48460
## 2024-01-04 179.7189 360.2491 136.7448 144.57 95.95101 47.91284
## 2024-01-05 178.9977 360.0631 136.1009 145.24 96.41563 49.00989
## 2024-01-08 183.3250 366.8581 139.2114 149.10 98.96128 52.16029
## 2024-01-09 182.9100 367.9352 141.2224 151.37 98.62251 53.04572
returns <- na.omit(prices / lag(prices) - 1)
returns_df <- data.frame(
Date = index(returns),
coredata(returns)
)
kable(
head(returns_df),
digits = 6,
caption = "First Few Daily Returns of AAPL, MSFT, GOOG, AMZN, TSM and NVDA"
)
First Few Daily Returns of AAPL, MSFT, GOOG, AMZN, TSM and
NVDA
| 2024-01-03 |
-0.007488 |
-0.000728 |
0.005732 |
-0.009738 |
-0.013395 |
-0.012436 |
| 2024-01-04 |
-0.012700 |
-0.007178 |
-0.016529 |
-0.026268 |
-0.010382 |
0.009019 |
| 2024-01-05 |
-0.004013 |
-0.000516 |
-0.004709 |
0.004634 |
0.004842 |
0.022897 |
| 2024-01-08 |
0.024175 |
0.018872 |
0.022855 |
0.026577 |
0.026403 |
0.064281 |
| 2024-01-09 |
-0.002263 |
0.002936 |
0.014445 |
0.015225 |
-0.003423 |
0.016975 |
| 2024-01-10 |
0.005671 |
0.018574 |
0.008698 |
0.015591 |
-0.010698 |
0.022770 |