ความผันผวนและ structural break
การแสดงภาพการเปลี่ยนแปลงของความผันผวนช่วยเผยให้เห็นจุด structural break ที่อาจเกิดขึ้นใน time series เมื่อระบุได้ว่าความผันผวนเปลี่ยนแปลงเมื่อใด ก็สามารถเลือกจุด break ได้อย่างมีเหตุผล ซึ่งนำไปใช้ในการวิเคราะห์ทางสถิติเพิ่มเติมได้ เช่น Chow test
ในแบบฝึกหัดนี้ คุณจะตรวจสอบการแสดงภาพความผันผวน 2 แบบสำหรับพอร์ตโฟลิโอธนาคารเพื่อการลงทุนในช่วงปี 2008 - 2009 โดยใช้น้ำหนักพอร์ตโฟลิโอ 2 ชุด ได้แก่ weights_with_citi และ weights_without_citi ซึ่งสอดคล้องกับพอร์ตโฟลิโอแบบถ่วงน้ำหนักเท่ากัน โดยมีและไม่มี Citibank ตามลำดับ — Citibank มีความผันผวนสูงที่สุดในบรรดาสินทรัพย์ทั้งสี่ตัวในช่วงเวลาดังกล่าว ดังที่เห็นในบทที่ 1
ข้อมูลราคาพอร์ตโฟลิโอในปี 2008 - 2009 ที่รวม Citibank มีอยู่ในตัวแปร prices_with_citi และข้อมูลที่ไม่รวม Citibank มีอยู่ในตัวแปร prices_without_citi
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การบริหารความเสี่ยงเชิงปริมาณด้วย Python
คำแนะนำการฝึกหัด
- หาชุดข้อมูลผลตอบแทนของพอร์ตโฟลิโอทั้งสองโดยใช้
weights_with_citiและweights_without_citi - คำนวณค่าเบี่ยงเบนมาตรฐานแบบ rolling window 30 วันสำหรับพอร์ตโฟลิโอทั้งสอง
- รวมออบเจกต์
Seriesของ Pandas ทั้งสองเข้าเป็น DataFrame ชื่อ "vol" ตัวเดียว - พล็อตข้อมูลใน
volเพื่อเปรียบเทียบความผันผวนของพอร์ตโฟลิโอทั้งสองตามช่วงเวลา
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Find the time series of returns with and without Citibank
ret_with_citi = prices_with_citi.____.dot(weights_with_citi)
ret_without_citi = prices_without_citi.pct_change().____(____)
# Find the average 30-day rolling window volatility as the standard deviation
vol_with_citi = ret_with_citi.____.std().dropna().rename("With Citi")
vol_without_citi = ret_without_citi.rolling(30).____.dropna().rename("Without Citi")
# Combine two volatilities into one Pandas DataFrame
vol = pd.concat([____, ____], axis=1)
# Plot volatilities over time
vol.____().set_ylabel("Losses")
plt.show()