重疊報酬
當你把每日對數報酬加總成較長的區間時,可用的觀測值數量會變少。為了保留資料量,你可以用 rollapplyr() 計算「重疊報酬」(overlapping returns);這也會讓觀測值之間產生強烈的相關性。
一般一週有 5 個交易日。對每日指數資料的對數報酬計算 5 日「移動加總」(moving sums),可以得到每個曆週結束時的近似重疊週報酬。類似地,計算 21 日移動加總可得到近似重疊月報酬,計算 63 日移動加總可得到近似重疊季報酬。
以下用 djx 中的道瓊指數每日報酬做示範。因為每個移動加總要用到 5 個值,結果的前 4 個值會是 NA。在這裡,我們會用索引把它們移除:
> djx5 <- rollapplyr(djx, width = 5, FUN = sum)
> head(djx5)
^DJI
2008-01-03 NA
2008-01-04 NA
2008-01-07 NA
2008-01-08 NA
2008-01-09 -0.02394677
2008-01-10 -0.01571869
> djx5 <- djx5[-(1:4)]
在本練習中,你將從工作環境中已載入的 djx 計算不同區間的移動加總。接著你會求出結果資料的偏態與峰度,並進行 Jarque-Bera 檢定,就像先前的練習一樣。這些重疊報酬看起來更接近常態嗎?
本練習屬於課程
R 的量化風險管理
練習說明
- 計算
djx中對數報酬的 21 日移動加總,移除前 20 個值,並指派給djx21。 - 計算
djx中對數報酬的 63 日移動加總,移除前 62 個值,並指派給djx63。 - 使用
merge()且all = FALSE,依序合併djx、djx21、djx63,再指派給djx2。用plot.zoo()繪圖。 - 使用
apply()與適當的函式,計算djx2中每個序列的偏態與峰度。 - 使用
apply()與適當的函式,對djx2中每個序列進行 Jarque-Bera 檢定。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Calculate a 21-day moving sum of djx
djx21 <- ___(___, ___, ___)[___]
# Calculate a 63-day moving sum of djx
djx63 <- ___(___)[___]
# Merge the three series and plot
djx2 <- ___(___)
___(___)
# Compute the skewness and kurtosis for each series in djx2
___(___)
___(___)
# Conduct the Jarque-Bera test to each series in djx2
___(___)