Download Data

end_date   <- Sys.Date()
start_date <- end_date - 730   # roughly 2 years

# Tickers of major Taiwan-listed companies
# TSMC, Foxconn, MediaTek, Delta Electronics, Fubon Financial, Cathay Financial
symbols <- c("2330.TW", "2317.TW", "2454.TW", "2308.TW", "2881.TW", "2882.TW")

get_taiwan_stock <- function(symbol) {
  tryCatch({
    df <- getSymbols(symbol, src = "yahoo", from = start_date, to = end_date,
                     auto.assign = FALSE)
    df_data <- data.frame(Date = index(df), coredata(df))
    colnames(df_data) <- c("Date", "Open", "High", "Low", "Close", "Volume", "Adjusted")
    df_data$Ticker <- symbol
    df_data
  }, error = function(e) {
    message("Failed to download: ", symbol, " - ", conditionMessage(e))
    NULL
  })
}

all_stocks_df <- map_dfr(symbols, get_taiwan_stock)

# Save combined data to CSV (same folder as this .Rmd file)
write.csv(all_stocks_df, "taiwan_stock_prices.csv", row.names = FALSE)

Summary by Ticker

all_stocks_df %>%
  group_by(Ticker) %>%
  summarise(Days      = n(),
            First     = min(Date),
            Last      = max(Date),
            Avg_Close = round(mean(Close, na.rm = TRUE), 2)) %>%
  kable()
Ticker Days First Last Avg_Close
2308.TW 486 2024-10-04 2026-10-02 998.87
2317.TW 486 2024-10-04 2026-10-02 208.14
2330.TW 486 2024-10-04 2026-10-02 1525.86
2454.TW 486 2024-10-04 2026-10-02 2021.56
2881.TW 486 2024-10-04 2026-10-02 96.22
2882.TW 486 2024-10-04 2026-10-02 74.02

Preview of the Data

kable(head(all_stocks_df, 10))
Date Open High Low Close Volume Adjusted Ticker
2024-10-04 986 986 967 977 40934818 949.1689 2330.TW
2024-10-07 993 1010 989 1005 39667071 976.3714 2330.TW
2024-10-08 1000 1010 997 1010 30845902 981.2289 2330.TW
2024-10-09 1030 1035 1020 1020 46975717 990.9440 2330.TW
2024-10-11 1025 1050 1020 1045 43058754 1015.2318 2330.TW
2024-10-14 1045 1055 1035 1045 36858874 1015.2318 2330.TW
2024-10-15 1050 1075 1050 1070 42850176 1039.5198 2330.TW
2024-10-16 1040 1070 1035 1045 52652149 1015.2318 2330.TW
2024-10-17 1050 1055 1030 1035 54173771 1005.5167 2330.TW
2024-10-18 1095 1100 1075 1085 85011961 1054.0924 2330.TW