ความผันผวนและค่าสุดขีด

การบริหารความเสี่ยงเชิงปริมาณด้วย Python

Jamsheed Shorish

Computational Economist

ข้อสมมติของ Chow test

  • Chow test: ระบุนัยสำคัญทางสถิติของจุดแตกหักเชิงโครงสร้างที่อาจเกิดขึ้น
  • ต้องระบุ: จุดแตกหักเชิงโครงสร้าง ล่วงหน้า
  • ต้องมี: ความสัมพันธ์แบบ เชิงเส้น (เช่น factor model) $$ \log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t $$

ภาพแสดงการเติบโตของประชากรจีนพร้อมจุดแตกหักเชิงโครงสร้าง

การบริหารความเสี่ยงเชิงปริมาณด้วย Python

สัญญาณของการแตกหักเชิงโครงสร้าง

  • การแสดงผลเทรนด์อาจไม่ชี้ให้เห็นจุดแตกหักชัดเจน
  • ทางเลือก: ตรวจสอบ ความผันผวน แทนเทรนด์
    • การเปลี่ยนแปลงเชิงโครงสร้างมักมาพร้อมความไม่แน่นอนที่สูงขึ้น => ความผันผวน
    • เปิดทางให้ใช้โมเดลที่ซับซ้อนขึ้น (เช่น โมเดล stochastic volatility)

ภาพแสดงความผันผวนรายเดือนพร้อมจุดแตกหักเชิงโครงสร้างที่เป็นไปได้

การบริหารความเสี่ยงเชิงปริมาณด้วย Python

ความผันผวนแบบ Rolling window

  • Rolling window: คำนวณความผันผวนตามช่วงเวลาและตรวจจับการเปลี่ยนแปลง
  • ทบทวน: rolling window 30 วัน

    • สร้าง rolling window ด้วยเมธอด ".rolling()"
    • คำนวณความผันผวนของ rolling window (ลบวันที่ไม่มีข้อมูลออก)
    • คำนวณสถิติสรุปที่ต้องการ เช่น .mean(), .min() เป็นต้น

     

rolling = portfolio_returns.rolling(30)

volatility = rolling.std().dropna()
vol_mean = volatility.resample("M").mean()
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

ความผันผวนแบบ Rolling window

  • แสดงผลความผันผวนที่ได้ (variance หรือ standard deviation)
import matplotlib.pyplot as plt
vol_mean.plot(
  title="Monthly average volatility"
).set_ylabel("Standard deviation")
plt.show()

ภาพแสดงความผันผวนเฉลี่ยรายเดือน

การบริหารความเสี่ยงเชิงปริมาณด้วย Python

ความผันผวนแบบ Rolling window

  • แสดงผลความผันผวนที่ได้ (variance หรือ standard deviation)
  • การเปลี่ยนแปลงขนาดใหญ่ของความผันผวน => จุดแตกหักเชิงโครงสร้างที่อาจเกิดขึ้น
  • นำจุดแตกหักที่พบมาใช้ในโมเดลเชิงเส้นของความผันผวน
    • รูปแบบหนึ่งของ Chow Test
  • ใช้เป็นแนวทางในการประยุกต์ใช้โมเดล ARCH หรือ stochastic volatility
vol_mean.pct_change().plot(
  title="$\Delta$ average volatility"
).set_ylabel("% $\Delta$ stdev")
plt.show()

ภาพแสดงการเปลี่ยนแปลงเป็นเปอร์เซ็นต์ของความผันผวนรายเดือน

การบริหารความเสี่ยงเชิงปริมาณด้วย Python

ค่าสุดขีด

  • VaR, CVaR: ขาดทุนสูงสุดและ expected shortfall ที่ระดับความเชื่อมั่นที่กำหนด
  • แสดงการเปลี่ยนแปลงของขาดทุนสูงสุดโดยพล็อต VaR
    • เหมาะกับชุดข้อมูลขนาดใหญ่
    • ชุดข้อมูลขนาดเล็ก: ข้อมูลไม่เพียงพอ
  • ทางเลือก: หาการขาดทุนที่ เกินกว่า เกณฑ์ที่กำหนด
  • ตัวอย่าง: $\text{VaR}_{95}$ คือขาดทุนสูงสุด 95% ของเวลา
    • ดังนั้นอีก 5% การขาดทุนอาจ เกินกว่า $\text{VaR}_{95}$
  • Backtesting: ใช้ข้อมูลในอดีต ex-post เพื่อประเมินประสิทธิภาพของการประมาณความเสี่ยง
    • ใช้กันแพร่หลายในการบริหารความเสี่ยงระดับองค์กร
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

Backtesting

  • สมมติให้ $\text{VaR}_{95} = 0.03$
  • การขาดทุนที่เกินกว่า 3% จัดเป็น ค่าสุดขีด
  • Backtesting: ประมาณ 5% (100% - 95%) ของการขาดทุนในอดีตควร เกินกว่า 3%
    • มากกว่า 5%: การแจกแจงที่มีหางกว้าง ("fatter") กว่า
    • น้อยกว่า 5%: การแจกแจงที่มีหางแคบกว่า
  • CVaR สำหรับ backtesting: อธิบายหางการแจกแจงได้ดีกว่า VaR

ภาพแสดงการขาดทุนและเกณฑ์ VaR ที่ 95%

การบริหารความเสี่ยงเชิงปริมาณด้วย Python

มาฝึกกันเถอะ!

การบริหารความเสี่ยงเชิงปริมาณด้วย Python

Preparing Video For Download...