網頁

2020年12月29日 星期二

R:各國指數比較

     2020因為新冠疫情的關各國經濟受到不小衝擊,連帶股價也跳水,不過自3月疫情爆發以來到現在12月底幾個重要的指數到底恢復的如何,這篇就用R來統計一下。
    我舉美國道瓊(代碼:DJI),台灣加權(代碼:TWII),新加坡海峽(代碼:STI),越南指數(代碼:VNI),香港恆生(代碼:HSI)來當例子說明。
程式碼如下:

#載入所需套件
library(quantmod)
library(PerformanceAnalytics)

#開始統計的起始日期
d_from <- "2020-01-01"
#自Yahoo資料庫抓取資料
index_symbol <- c("^DJI", "^TWII", "^STI", "^HSI")
getSymbols(index_symbol, src="yahoo", from=d_from)

#將每日收盤調整價放入變數
TW_DR <- dailyReturn(Ad(TWII))
DJ_DR <- dailyReturn(Ad(DJI))
ST_DR <- dailyReturn(Ad(STI))
HS_DR <- dailyReturn(Ad(HSI))

#將各指數的股價資料合併,缺少資料的不列出
m1 <- merge(DJ_DR, TW_DR, ST_DR, HS_DR, all = F)
#設定欄位名稱
colnames(m1) <- c("Dow Jones", "Taiwan", "Singaport", "HangSeng")
#畫出圖表
charts.PerformanceSummary(m1, event.labels = T, main = "Performance Summary")

如下圖:


 顏色依序是:黑色線條是道瓊指數,紅色線條是台灣加權指數,綠色線條是新加坡海峽指數,藍色線條是香港恆生指數。

#計算標準差夏普值
table.AnnualizedReturns(m1, scale = 252, Rf = 0.01/252)
 

可以看出新加坡海峽指數是最差,台灣加權指數表現最好。

#計算年報酬率
DJ <- annualReturn(DJI)
TW <- annualReturn(TWII)
ST <- annualReturn(STI)
HS <- annualReturn(HSI)

df <- data.frame(DJ, TW, ST, HS)
colnames(df) <- c("DJI%", "TWI%", "STI%", "HSI%"); df*100


自2020/01/01開始到12/28日止,各大指數回報率最好是台灣加權20.4%,新加坡海峽指數最差-12.0%。


2 則留言:

  1. 您好,我想請問一下,我照上面程式碼編譯以下,但卻畫不出圖型,一直顯示錯誤,請問是哪邊出了什麼問題嗎?謝謝
    #畫出圖表
    charts.PerformanceSummary(m1, event.labels = T, main = "Performance Summary")

    回覆刪除
  2. 會出現以下這段文字
    Error in .External.graphics(C_plot_window, xlim, ylim, log, asp, ...) :
    invalid graphics state
    有時又會出現以下這段文字
    Error in plot.new() : figure margins too large

    回覆刪除