เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ผลตอบแทนแบบทับซ้อน

เมื่อรวมอนุกรมโดยนำ 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
___(___)
แก้ไขและรันโค้ด