Load Packages

packages <- c(
  "readxl",
  "dplyr",
  "ggplot2",
  "lubridate",
  "knitr",
  "tidyr"
)

new_packages <- packages[
  !(packages %in% installed.packages()[, "Package"])
]

if (length(new_packages) > 0) {
  install.packages(new_packages)
}

library(readxl)
library(dplyr)
library(ggplot2)
library(lubridate)
library(knitr)
library(tidyr)

data <- read_excel("20261004120300_hw3.xlsx")

head(data)
## # A tibble: 6 × 6
##   CO_ID                    Date                 Open  High   Low Close
##   <chr>                    <dttm>              <dbl> <dbl> <dbl> <dbl>
## 1 0053 PTE                 2024-10-04 00:00:00  95.4  95.4  94.5  94.5
## 2 0050 Yuanta Taiwan Top50 2024-10-04 00:00:00  44.2  44.5  43.9  44.1
## 3 0056 PTD                 2024-10-04 00:00:00  31.1  31.2  30.9  31.0
## 4 0051 TMT                 2024-10-04 00:00:00  76.4  76.4  75.0  75.3
## 5 0057 FB MSCI Taiwan      2024-10-04 00:00:00 136.  137.  136.  136. 
## 6 0052 FB Technology       2024-10-04 00:00:00  24.6  24.7  24.4  24.5
data <- data %>%
  mutate(
    CO_ID = as.character(CO_ID),
    Date = as.Date(Date),
    Open = as.numeric(Open),
    High = as.numeric(High),
    Low = as.numeric(Low),
    Close = as.numeric(Close)
  ) %>%
  arrange(CO_ID, Date)

latest_date <- max(data$Date, na.rm = TRUE)

start_date <- latest_date %m-% years(2)

stock_data <- data %>%
  filter(
    Date >= start_date,
    Date <= latest_date
  )

cat("Data period:", start_date, "to", latest_date)
## Data period: 19742 to 20473