#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")