オーバーラップするリターン
日次の対数リターンを合計してより長い間隔に集計すると、観測数は少なくなります。データ量を確保するために、rollapplyr() 関数でオーバーラップするリターンを計算できます。ただし、この方法では観測値同士の相関が強くなる点に注意してください。
平均的な暦週には取引日が5日あります。日次インデックスの対数リターンについて、5日間の移動合計を計算すると、各暦週の終わりに対応するオーバーラップする週次リターンがおおよそ得られます。同様に、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
___(___)