การบริหารความเสี่ยงด้วย VaR & CVaR

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

Jamsheed Shorish

Computational Economist

การบริหารความเสี่ยงด้วย Modern Portfolio Theory

  • พอร์ตโฟลิโอที่มีประสิทธิภาพ
    • น้ำหนักพอร์ตโฟลิโอที่เพิ่มผลตอบแทนสูงสุดในระดับความเสี่ยงที่กำหนด
  • Efficient Frontier: กลุ่มจุด (ความเสี่ยง, ผลตอบแทน) จากพอร์ตโฟลิโอที่มีประสิทธิภาพหลากหลาย
    • แต่ละจุด = การหาค่าน้ำหนักพอร์ตโฟลิโอที่เหมาะสมที่สุด
  • การสร้างพอร์ตโฟลิโอ/Efficient Frontier: Modern Portfolio Theory

กราฟ efficient frontier

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

การนำ Value at Risk เข้าสู่ MPT

  • Modern Portfolio Theory (MPT): การหาค่าเหมาะสม "mean-variance"
    • ผลตอบแทนที่คาดหวังสูงสุด
    • ระดับความเสี่ยง (ความผันผวน) เป็นค่าที่กำหนด
    • Objective function: ผลตอบแทนที่คาดหวัง
  • VaR/CVaR: วัดความเสี่ยงจากการกระจายของ ขาดทุน
  • ปรับ MPT ให้หาค่าเหมาะสมจาก การกระจายของขาดทุน แทนผลตอบแทนที่คาดหวัง
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

Objective ใหม่: ลด CVaR ให้ต่ำสุด

  • เปลี่ยน objective ของการหาค่าเหมาะสมพอร์ตโฟลิโอ
    • mean-variance objective: เพิ่มผลตอบแทนเฉลี่ยที่คาดหวังสูงสุด
    • CVaR objective: ลดขาดทุนเงื่อนไขที่คาดหวังในระดับความเชื่อมั่นที่กำหนดให้ต่ำสุด
  • ตัวอย่าง: การกระจายของขาดทุน
    • VaR: ขาดทุนสูงสุดที่ความเชื่อมั่น 95%
    • การหาค่าเหมาะสม: น้ำหนักพอร์ตโฟลิโอที่ ลด CVaR
    • CVaR: ขาดทุนที่คาดหวังเมื่อขาดทุน อย่างน้อย เท่า VaR (5% แย่ที่สุด)
  • หาขาดทุนที่คาดหวังต่ำสุดใน 100% - 95% = 5% ของผลลัพธ์ที่เป็นไปได้
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

โจทย์การบริหารความเสี่ยง

  • เลือกน้ำหนักพอร์ตโฟลิโอที่เหมาะสมที่สุด $w^\star$ เป็นคำตอบของ

cvar_minimization

  • ทบทวน: $f(x)$ = ฟังก์ชันความหนาแน่นของความน่าจะเป็นของ ขาดทุน ของพอร์ตโฟลิโอ

  • PyPortfolioOpt: เลือกการลด CVaR เป็น objective ใหม่

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

การลด CVaR ด้วย PyPortfolioOpt

  • สร้างออบเจกต์ EfficientCVaR ด้วยผลตอบแทนสินทรัพย์ returns
  • คำนวณน้ำหนักพอร์ตโฟลิโอที่เหมาะสมที่สุดด้วยเมธอด .min_cvar()

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

การบริหารความเสี่ยง: mean-variance กับ CVaR

  • พอร์ตโฟลิโอความผันผวนต่ำสุดแบบ mean-variance สินทรัพย์ธนาคารเพื่อการลงทุน ปี 2005-2010
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

การบริหารความเสี่ยง: mean-variance กับ CVaR

  • พอร์ตโฟลิโอที่ลด CVaR สินทรัพย์ธนาคารเพื่อการลงทุน ปี 2005-2010
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

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

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

Preparing Video For Download...