ความเสี่ยงและการสูญเสีย

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

Jamsheed Shorish

Computational Economist

อุปมาจากการท่องเที่ยว

  • การจองโรงแรมสำหรับวันหยุดพักร้อน

  • จ่ายล่วงหน้าก่อนเข้าพัก

    • ราคาห้องต่ำ
    • ไม่สามารถขอคืนเงินได้: ค่ายกเลิก = 100% ของราคาห้อง
  • จ่ายหลังเข้าพัก

    • ราคาห้องสูง
    • คืนเงินได้บางส่วน: ค่ายกเลิก 20% ของราคาห้อง

ภาพเรือใกล้ชายหาดแคริบเบียน

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

การตัดสินใจเลือกระหว่างตัวเลือก

  • อะไรเป็นปัจจัยในการตัดสินใจ?
    1. โอกาสเกิดเหตุไม่คาดฝัน: เจ็บป่วย การเดินทางขัดข้อง สภาพอากาศ
      • ความน่าจะเป็นของการสูญเสีย
    2. การสูญเสียที่เกิดจากเหตุนั้น: จำนวนหรือจำนวนแบบมีเงื่อนไข
      • เช่น VaR, CVaR
    3. ความต้องการหลีกเลี่ยงเหตุนั้น: ความรู้สึกส่วนตัว
      • ความทนทานต่อความเสี่ยง

ภาพการ์ตูนเด็กสามคนนอนป่วยอยู่บนเตียง มีเทอร์โมมิเตอร์อยู่ในปาก

 

ภาพตาชั่งความเสี่ยงและเงินสำหรับการบริหารความเสี่ยง

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

ความเสี่ยงที่รับได้และ VaR

  • ความเสี่ยงที่รับได้: ความน่าจะเป็นของการสูญเสีย x ตัววัดการสูญเสีย
    • ตัววัดการสูญเสีย: เช่น VaR
  • โอกาสยกเลิกการเดินทาง 10%: P(เจ็บป่วย) = 0.10
  • ไม่สามารถขอคืนเงินได้:
    • ค่าโรงแรมที่ไม่คืนเงินรวม: € 500
    • VaR ที่ระดับความเชื่อมั่น 90%: € 500
  • คืนเงินได้บางส่วน:
    • ค่าโรงแรมที่คืนเงินได้: € 550
    • VaR ที่ระดับความเชื่อมั่น 90%: ค่ายกเลิก 20% x € 550 = € 110
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

การคำนวณความเสี่ยงที่รับได้

  • ความเสี่ยงแบบไม่คืนเงิน ("$\text{nr}$"):
    • P(เจ็บป่วย) x $\text{VaR}_{0.90}^{\text{nr}}$ = 0.10 x € 500 = € 50.
  • ความเสี่ยงแบบคืนเงินบางส่วน ("$\text{pr}$"):
    • P(เจ็บป่วย) x $\text{VaR}_{0.90}^{\text{pr}}$ = 0.10 x € 110 = € 11.
  • ผลต่างของความเสี่ยง: € 50 - € 11 = € 39.
  • ผลต่างราคารวมระหว่างสองตัวเลือก: € 550 - € 500 = € 50.
  • ความทนทานต่อความเสี่ยง: การจ่าย € 50 เพิ่ม คุ้มค่ากับการหลีกเลี่ยงความเสี่ยง € 39 หรือไม่?
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

ความทนทานต่อความเสี่ยงและความอยากเสี่ยง

  • Risk-neutral: ให้ความสำคัญกับค่าที่คาดหวังเท่านั้น
    • € 39 < € 50 $\Rightarrow$ เลือกตัวเลือกไม่คืนเงิน
  • Risk-averse: ความไม่แน่นอนมีต้นทุนในตัวเอง
    • € 39 < € 50 $\Rightarrow$ เลือกตัวเลือกคืนเงินบางส่วน
  • การบริหารความเสี่ยงระดับองค์กร/สถาบัน: เรียกความชอบนี้ว่า risk appetite
  • นักลงทุนรายบุคคล: เรียกความชอบนี้ว่า risk tolerance
การบริหารความเสี่ยงเชิงปริมาณด้วย Python

การกระจายของการสูญเสีย - แบบไม่ต่อเนื่อง

  • ความเสี่ยงที่รับได้ขึ้นอยู่กับการกระจายของการสูญเสีย (ความน่าจะเป็นของการสูญเสีย)
  • ตัวอย่างการเดินทาง: 2 ผลลัพธ์จากปัจจัยเสี่ยงสุ่ม

แผนภูมิแท่งแสดงการสูญเสียแบบไบนารีจากตัวอย่างการเดินทาง

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

การกระจายของการสูญเสีย - แบบต่อเนื่อง

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

ภาพการแจกแจงปกติแบบต่อเนื่อง

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

การกระจายของการสูญเสีย - แบบต่อเนื่อง

  • ความเสี่ยงที่รับได้ขึ้นอยู่กับการกระจายของการสูญเสีย (ความน่าจะเป็นของการสูญเสีย)
  • ตัวอย่างการเดินทาง: 2 ผลลัพธ์จากปัจจัยเสี่ยงสุ่ม
  • โดยทั่วไป: การกระจายแบบต่อเนื่อง
    • การแจกแจงปกติ: เหมาะกับกลุ่มตัวอย่างขนาดใหญ่
    • การแจกแจง t ของ Student: เหมาะกับกลุ่มตัวอย่างขนาดเล็ก

ภาพการแจกแจง t แบบต่อเนื่องของการสูญเสีย

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

พื้นฐาน: การแจกแจง t ของ Student

  • เรียกอีกชื่อว่าการแจกแจง T
  • มีหางที่ "หนา" กว่าการแจกแจงปกติสำหรับกลุ่มตัวอย่างขนาดเล็ก
    • คล้ายกับผลตอบแทน/การสูญเสียของพอร์ตโฟลิโอ
  • เมื่อขนาดตัวอย่างเพิ่มขึ้น การแจกแจง T จะลู่เข้าหาการแจกแจงปกติ

ภาพการแจกแจงการสูญเสียแบบต่อเนื่อง

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

การแจกแจง T ใน Python

  • ตัวอย่าง: คำนวณ VaR 95% จากการแจกแจง T
    • นำเข้าการแจกแจง t จาก scipy.stats
    • ฟิตข้อมูล portfolio_loss ด้วย t.fit()

 

from scipy.stats import t

params = t.fit(portfolio_losses)

ภาพการแจกแจงการสูญเสียแบบต่อเนื่อง

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

การแจกแจง T ใน Python

  • ตัวอย่าง: คำนวณ VaR 95% จากการแจกแจง T
    • นำเข้าการแจกแจง t จาก scipy.stats
    • ฟิตข้อมูล portfolio_loss ด้วย t.fit()
    • คำนวณฟังก์ชัน percent point ด้วย .ppf() เพื่อหา VaR
from scipy.stats import t

params = t.fit(portfolio_losses)
VaR_95 = t.ppf(0.95, *params)

ภาพการแจกแจง t แบบต่อเนื่องของการสูญเสียพร้อม VaR

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

ดีกรีแห่งอิสรภาพ

  • ดีกรีแห่งอิสรภาพ (df): จำนวนการสังเกตอิสระ
  • df น้อย: การแจกแจง T ที่มี "หางหนา"
  • df มาก: การแจกแจงปกติ
x = np.linspace(-3, 3, 100)

plt.plot(x, t.pdf(x, df = 2))
plt.plot(x, t.pdf(x, df = 5))
plt.plot(x, t.pdf(x, df = 30))

ภาพการแจกแจง T ที่ดีกรีแห่งอิสรภาพ 30

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

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

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

Preparing Video For Download...