ผลตอบแทนแบบทับซ้อน
เมื่อรวมอนุกรมโดยนำ log-return รายวันมาบวกกันเป็นช่วงเวลาที่ยาวขึ้น จำนวนการสังเกตจะลดลง เพื่อรักษาปริมาณข้อมูลไว้ สามารถคำนวณ ผลตอบแทนแบบทับซ้อน (overlapping returns) ได้ด้วยฟังก์ชัน rollapplyr() แม้ว่าวิธีนี้จะทำให้เกิดความสัมพันธ์ที่สูงระหว่างการสังเกตก็ตาม
โดยเฉลี่ยแล้วมี 5 วันทำการในหนึ่งสัปดาห์ตามปฏิทิน การคำนวณ ผลรวมเคลื่อนที่ (moving sums) 5 วันของ log-return จากข้อมูลดัชนีรายวัน จะได้ผลตอบแทนรายสัปดาห์แบบทับซ้อนโดยประมาณ ในทำนองเดียวกัน การคำนวณผลรวมเคลื่อนที่ 21 วันจะได้ผลตอบแทนรายเดือนโดยประมาณ และ 63 วันจะได้ผลตอบแทนรายไตรมาสโดยประมาณ
มาดูตัวอย่างโดยใช้ข้อมูลผลตอบแทนรายวันของ Dow Jones ใน djx เนื่องจากการคำนวณผลรวมเคลื่อนที่แต่ละค่าต้องใช้ข้อมูล 5 ค่า ค่า 4 ตัวแรกในผลลัพธ์จึงเป็น NA ในกรณีนี้จะใช้การ indexing เพื่อลบค่าเหล่านั้นออก:
> 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 ซึ่งโหลดไว้ใน workspace แล้ว จากนั้นจะหาค่า skewness และ kurtosis ของข้อมูลที่ได้ และทำการทดสอบ Jarque-Bera เช่นเดียวกับที่ทำในแบบฝึกหัดก่อนหน้า ผลตอบแทนแบบทับซ้อนเหล่านี้มีการกระจายที่ใกล้เคียงการแจกแจงปกติมากขึ้นหรือไม่?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Quantitative Risk Management in R
คำแนะนำการฝึกหัด
- คำนวณผลรวมเคลื่อนที่ 21 วันของ log-return ใน
djxแล้วลบค่า 20 ตัวแรกออก และกำหนดให้กับdjx21 - คำนวณผลรวมเคลื่อนที่ 63 วันของ log-return ใน
djxแล้วลบค่า 62 ตัวแรกออก และกำหนดให้กับdjx63 - ใช้
merge()และall = FALSEเพื่อรวมdjx,djx21และdjx63ตามลำดับ แล้วกำหนดให้กับdjx2จากนั้นพล็อตด้วยplot.zoo() - ใช้
apply()และฟังก์ชันที่เหมาะสมเพื่อคำนวณค่า skewness และ kurtosis ของแต่ละอนุกรมในdjx2 - ใช้
apply()และฟังก์ชันที่เหมาะสมเพื่อทดสอบ Jarque-Bera กับแต่ละอนุกรมในdjx2
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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
___(___)