ทฤษฎีพอร์ตโฟลิโอสมัยใหม่

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

Jamsheed Shorish

Computational Economist

การแลกเปลี่ยนระหว่างความเสี่ยงและผลตอบแทน

  • ปัจจัยความเสี่ยง: แหล่งที่มาของความไม่แน่นอนที่ส่งผลต่อผลตอบแทน
  • โดยหลักการ: ความไม่แน่นอนสูง (ความเสี่ยงมาก) ได้รับการชดเชยด้วย ผลตอบแทนที่สูงขึ้น
  • ไม่สามารถ รับประกันผลตอบแทน ได้: จึงต้องมีมาตรวัด ผลตอบแทนที่คาดหวัง
    • ผลตอบแทนเฉลี่ย (mean) ในอดีต: ใช้เป็นตัวแทนผลตอบแทนที่คาดหวังในอนาคต
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

ความเสี่ยงที่นักลงทุนยอมรับได้

  • แบบสำรวจนักลงทุน: ผลตอบแทน ขั้นต่ำ ที่ต้องการสำหรับระดับความเสี่ยงที่กำหนด?
  • คำตอบจากแบบสำรวจสร้าง "จุดข้อมูล" โปรไฟล์ (ความเสี่ยง, ผลตอบแทน)
  • ปรับระดับความเสี่ยง => ชุด จุด (ความเสี่ยง, ผลตอบแทน)
  • ความเสี่ยงที่นักลงทุนยอมรับได้: กำหนดความสัมพันธ์เชิงปริมาณระหว่างความเสี่ยงและผลตอบแทน
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

Choosing portfolio weights

  • Vary portfolio weights of given portfolio => creates set of (risk, return) pairs
  • Changing weights = beginning risk management!
  • Goal: change weights to maximize expected return, given risk level
    • Equivalently: minimize risk, given expected return level
  • Changing weights = adjusting investor's risk exposure
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

ทฤษฎีพอร์ตโฟลิโอสมัยใหม่

  • พอร์ตโฟลิโอที่มีประสิทธิภาพ: พอร์ตโฟลิโอที่มีน้ำหนักซึ่งสร้างผลตอบแทนที่คาดหวังสูงสุดสำหรับระดับความเสี่ยงที่กำหนด
  • ทฤษฎีพอร์ตโฟลิโอสมัยใหม่ (MPT), ปี 1952
    • H. M. Markowitz (ผู้ได้รับรางวัลโนเบล ปี 1990)
  • เวกเตอร์น้ำหนักพอร์ตโฟลิโอที่มีประสิทธิภาพ $w^\star$ แก้ปัญหา:

สมการปัญหาการหาค่าเหมาะที่สุดสำหรับพอร์ตโฟลิโอที่มีประสิทธิภาพ

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

Efficient Frontier

  • คำนวณพอร์ตโฟลิโอที่มีประสิทธิภาพหลายพอร์ตสำหรับระดับความเสี่ยงต่างๆ
  • Efficient frontier: แนวของคู่ (ความเสี่ยง, ผลตอบแทน) ที่สร้างโดยพอร์ตโฟลิโอที่มีประสิทธิภาพ
  • ไลบรารี PyPortfolioOpt: เครื่องมือที่ปรับแต่งแล้วสำหรับ MPT
    • คลาส EfficientFrontier: สร้างพอร์ตโฟลิโอที่เหมาะสมทีละหนึ่งพอร์ต
    • คลาส Constrained Line Algorithm (CLA): สร้าง efficient frontier ทั้งหมด
      • ต้องใช้เมทริกซ์ความแปรปรวนร่วมของผลตอบแทน
      • ต้องใช้ตัวแทนผลตอบแทนในอนาคตที่คาดหวัง: ผลตอบแทนเฉลี่ยในอดีต
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

พอร์ตโฟลิโอธนาคารเพื่อการลงทุน ปี 2005 - 2010

  • ผลตอบแทนที่คาดหวัง: ข้อมูลในอดีต
  • เมทริกซ์ความแปรปรวนร่วม: Covariance Shrinkage ช่วยเพิ่มประสิทธิภาพการประมาณค่า
  • ออบเจ็กต์ Constrained Line Algorithm CLA
  • พอร์ตโฟลิโอความแปรปรวนต่ำสุด: cla.min_volatility()
  • Efficient frontier: cla.efficient_frontier()

 

expected_returns = mean_historical_return(prices)

efficient_cov = CovarianceShrinkage(prices).ledoit_wolf()
cla = CLA(expected_returns, efficient_cov)
minimum_variance = cla.min_volatility()
(ret, vol, weights) = cla.efficient_frontier()
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

การแสดงผล Efficient Frontier

  • Scatter plot ของคู่ (vol, ret)

กราฟ efficient frontier ที่แสดงเป็นชุดคู่ (ความเสี่ยง, ผลตอบแทน)

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

การแสดงผล Efficient Frontier

  • Scatter plot ของคู่ (vol, ret)
  • พอร์ตโฟลิโอความแปรปรวนต่ำสุด: ความผันผวนต่ำที่สุดในบรรดาพอร์ตโฟลิโอที่มีประสิทธิภาพทั้งหมด

พอร์ตโฟลิโอความแปรปรวนต่ำสุดที่ถูกเน้นบนกราฟ efficient frontier

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

การแสดงผล Efficient Frontier

  • Scatter plot ของคู่ (vol, ret)
  • พอร์ตโฟลิโอความแปรปรวนต่ำสุด: ความผันผวนต่ำที่สุดในบรรดาพอร์ตโฟลิโอที่มีประสิทธิภาพทั้งหมด
  • ความเสี่ยงที่ยอมรับได้มากขึ้น: เลื่อน ตาม frontier

การเคลื่อนที่ตาม efficient frontier แสดงด้วยลูกศรชี้ไปในทิศทางของความเสี่ยงและผลตอบแทนที่สูงขึ้น

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

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

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

Preparing Video For Download...