開始使用免費開始

重疊報酬

當你把每日對數報酬加總成較長的區間時,可用的觀測值數量會變少。為了保留資料量,你可以用 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,依序合併 djxdjx21djx63,再指派給 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
___(___)
編輯並執行程式碼