#install.packages("quantmod")
library(quantmod)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: TTR
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
getSymbols("MSFT", src = "yahoo", from = "2025-10-01", to = "2026-02-01")
## [1] "MSFT"
msft_range <- MSFT["2025-10-01/2026-01-31"]
head(msft_range)
## MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
## 2025-10-01 514.80 520.51 511.69 519.71 22632300 518.7391
## 2025-10-02 517.64 521.60 510.68 515.74 21222900 514.7766
## 2025-10-03 517.10 520.49 515.00 517.35 15112300 516.3835
## 2025-10-06 518.61 531.03 518.20 528.57 21388600 527.5826
## 2025-10-07 528.29 529.80 521.44 523.98 14615200 523.0011
## 2025-10-08 523.28 526.95 523.09 524.85 13363400 523.8695
tail(msft_range)
## MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
## 2026-01-23 451.87 471.10 450.53 465.95 38000200 465.95
## 2026-01-26 465.31 474.25 462.00 470.28 29291200 470.28
## 2026-01-27 473.70 482.87 473.16 480.58 29213900 480.58
## 2026-01-28 483.21 483.74 478.00 481.63 36875400 481.63
## 2026-01-29 439.99 442.50 421.02 433.50 128855300 433.50
## 2026-01-30 439.17 439.60 426.45 430.29 58566800 430.29
n_days <- NROW(msft_range)
n_days
## [1] 84
msft_open <- Op(msft_range)
max_open_value <- max(msft_open, na.rm = TRUE)
max_open_date <- index(msft_open)[which.max(msft_open)]
max_open_value
## [1] 550
max_open_date
## [1] "2025-10-28"
plot(msft_open, main = "MSFT Open", xlab = "Date", ylab = "Open")
