Historical Drawdown
ตลาดหุ้นมีแนวโน้มปรับตัวสูงขึ้นในระยะยาว แต่นั่นไม่ได้หมายความว่าจะไม่มีช่วง drawdown เกิดขึ้น
Drawdown วัดได้จากเปอร์เซ็นต์การสูญเสียเทียบกับจุดสูงสุดสะสมในประวัติศาสตร์
ใน Python สามารถใช้ฟังก์ชัน .accumulate() และ .maximum() เพื่อคำนวณค่าสูงสุดสะสม (running maximum) และใช้สูตรด้านล่างเพื่อคำนวณ drawdown:
$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$
- \(r_t\): ผลตอบแทนสะสม ณ เวลา t
- \(RM\): Running maximum
ผลตอบแทนสะสมของ USO ซึ่งเป็น ETF ที่ติดตามราคาน้ำมัน ถูกเก็บไว้ในตัวแปร cum_rets
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน
คำแนะนำการฝึกหัด
- คำนวณ running maximum ของผลตอบแทนสะสมของ USO oil ETF (
cum_rets) โดยใช้np.maximum.accumulate() - ในกรณีที่ running maximum (
running_max) ต่ำกว่า 1 ให้กำหนดค่า running maximum เท่ากับ 1 - คำนวณ
drawdownโดยใช้สูตรด้านบนร่วมกับcum_retsและrunning_max - ตรวจสอบกราฟที่แสดงผล
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Calculate the running maximum
running_max = ____(cum_rets)
# Ensure the value never drops below 1
running_max[____] = 1
# Calculate the percentage drawdown
drawdown = (____)/____ - 1
# Plot the results
drawdown.plot()
plt.show()