應用統計子主題D
動機
- 台積電和台灣加權股價指數的關係
程式說明
- 載入必要套件和抓取股票資料
rm(list=ls(all=TRUE))
library(quantmod)
# 設定起始日期和結束日期
start_date <- "2010-01-01"
end_date <- Sys.Date()
ticker = "2330.TW"
# 從 quantmod 庫中獲取台積電的收盤價,並將名稱改為 "TSMC"
data1=getSymbols(ticker,
from = start_date,
to = end_date,
src="yahoo",
auto.assign=F )
colnames(data1) = c("Open", "High", "Low", "Close", "Volume1", "Adjusted")
# 獲取台灣加權股價指數的收盤價
data2=getSymbols("^TWII",
from = start_date,
to = end_date,
src="yahoo",
auto.assign=F)
colnames(data2) = c("Open", "High", "Low", "Close", "Volume2", "Adjusted")- 將台積電和加權股價指數的收盤價合併成一個資料框
-計算移動相關係數
# 計算移動相關係數的視窗大小
window_size <- 120
# 創建一個空的資料框來存儲移動相關係數
corr_values <- data.frame(Date = index(TaiwanStock), Correlation = rep(NA, nrow(TaiwanStock)))
# 計算移動相關係數
for (i in window_size:nrow(TaiwanStock)) {
corr_values$Correlation[i] <- cor(TaiwanStock[(i - window_size + 1):i, 1],
TaiwanStock[(i - window_size + 1):i, 2])
}
corr_values = na.omit(corr_values)- 將 data.frame 轉換為 xts
library(xts)
# 提取第一行作為時間索引
index <- as.POSIXct(as.character(corr_values[,1 ]))
# 刪除第一行
corr_values <- corr_values[, -1]
# 將 data.frame 轉換為 xts
data_xts <- xts(corr_values, order.by = index)-走勢圖
# 繪製走勢圖
library(dygraphs)
# 將 xts 物件轉換為 data.frame
data_df <- as.data.frame(data_xts)
# 使用 dygraph 函數並指定 data 參數
# 繪製台積電和台灣加權股價指數的蠟燭圖和滾動相關係數圖
fig1 <- dygraph(OHLC(data1), main = "TSMC Candlestick Chart") %>%
dyCandlestick() %>%
dyOptions(colors = c("black", "red", "blue"))
fig2 <- dygraph(OHLC(data2), main = "TWII Candlestick Chart") %>%
dyCandlestick() %>%
dyOptions(colors = c("black", "red", "blue"))
fig3 <- dygraph(data_df, xlab = "Date", ylab = "Rolling Correlation") %>%
dySeries("V1", label = "Rolling Correlation",axis="y") %>%
dyOptions(colors = c("#008")) %>%
dyRangeSelector()結果
結論
- 移動相關係數可以幫助投資者理解資產組合中不同資產之間的動態相關性,從而更好地管理和對沖風險。例如,當相關性增強時,資產價格可能會同步波動,風險增加;而當相關性降低時,資產價格可能會獨立波動,分散風險。
- 此圖可以知道台積電對於台灣加權股價指數有相當的影響力