if (!requireNamespace("quantmod", quietly = TRUE)) install.packages("quantmod")
library(quantmod)
# Fetch Microsoft stock prices for the given period
getSymbols("MSFT", src = "yahoo", from = "2024-10-01", to = "2025-02-01")
## [1] "MSFT"
Q6
# Preview of the data pulled
head(MSFT)
## MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
## 2024-10-01 428.45 428.48 418.81 420.69 19092900 417.5552
## 2024-10-02 422.58 422.82 416.71 417.13 16582300 414.0217
## 2024-10-03 417.63 419.55 414.29 416.54 13686400 413.4361
## 2024-10-04 418.24 419.75 414.97 416.06 19169700 412.9597
## 2024-10-07 416.00 417.11 409.00 409.54 20919800 406.4883
## 2024-10-08 410.90 415.66 408.17 414.71 19229300 411.6198
Q7
# Q7
# Count how many rows (trading days) of MSFT data were returned
n_days <- NROW(MSFT)
n_days
## [1] 84
Q8
open_series <- Op(MSFT)
max_open <- max(open_series, na.rm = TRUE)
max_date <- index(open_series)[which.max(open_series)]
max_open
## [1] 451.32
max_date
## [1] "2024-12-18"
# Map to quiz options
bucket <- if (max_date >= as.Date("2024-12-09") & max_date <= as.Date("2024-12-18")) {
"A (Dec9–Dec18)"
} else if (max_date >= as.Date("2024-10-21") & max_date <= as.Date("2024-10-29")) {
"B (Oct21–Oct29)"
} else if (max_date >= as.Date("2025-01-11") & max_date <= as.Date("2025-01-21")) {
"C (Jan11–Jan21)"
} else if (max_date > as.Date("2025-01-21")) {
"D (After Jan21)"
} else {
"Outside listed buckets"
}
cat("Max Open on:", as.character(max_date), "→", bucket, "\n")
## Max Open on: 2024-12-18 → A (Dec9–Dec18)
Q10
# Pull U.S. unemployment rate (UNRATE) from FRED
getSymbols("UNRATE", src = "FRED")
## [1] "UNRATE"
# Show the most recent value
tail(UNRATE, 1)
## UNRATE
## 2025-08-01 4.3