top of page

Conditional Value-at Risk

บทความนี้เราจะมาคุยกันเรื่องการใช้ Conditional Value-At Risk กัน


ก่อนอื่นถอยออกมามองภาพกว้างทบทวนกันก่อน ว่าเวลาเราลงทุน สิ่งที่เราอยากได้คือผลตอบแทน แต่คือเราก็ต้องสนใจเรื่องความเสี่ยงด้วยนะ


ซึ่งถ้าโฟกัสไปที่ความเสี่ยง ปกติเราก็มักจะวัดกันด้วย Standard Deviation กัน

แต่ตัววัดความเสี่ยงนั้นจริง ๆ ก็ไม่ได้มีแต่ Standard Deviation หนึ่งในนั้นคือ Conditional Value-At Risk ที่เราจะพูดถึงกันในโพสต์นี้


แต่ก่อนหน้านั้นเราจะมาพูดถึง Value-At Risk (VaR) กันก่อน ความหมายของมันคือความสูญเสียที่มากที่สุดที่เกิดขึ้นได้ใน 95% (หรือจริง ๆ จะเป็นค่าอื่นก็ได้) ที่ดีที่สุดที่จะเกิดในอนาคต (จากการจำลองด้วย Monte Carlo Simulation)


แต่ประเด็นคืออีก 5% ที่เหลือนี่แหละ ว่าบางทีแค่ 5% ที่เหลือนี่เองที่กลายเป็นตัวพลิกเกมทำให้เราน็อกกระจุยไปเลย ก็เลยมีการเสนอ CVaR ขึ้นมา ที่ก็กลายเป็นไปโฟกัสกับ 5% ที่เหลือแทน (ไม่เหมือน 95% แบบ VaR)


ทีนี้ปัญหาอย่างนึงในการใช้ CVaR ก็จะอยู่ที่ความยากในการใช้งาน เพราะโมเดลมันซับซ้อน ก็เลยมีความพยายามในการ simplify ให้ CVaR นั้นใช้ได้ง่ายขึ้นเกิดขึ้น (สามารถเข้าไปศึกษาด้วยตนเองได้ที่ https://www.ise.ufl.edu/uryasev/files/2011/11/CVaR1_JOR.pdf โดยตั้งแต่บรรทัดถัดไป แนวคิดต่าง ๆ ก็จะตามในเปเปอร์นี้ ที่อาจารย์เอ็มยกมาเล่าในคลาสทั้งหมดเลย)


โดยอธิบายคร่าว ๆ รายละเอียดการ simplify คือการแก้ CVaR นั้นจะติดปัญหาอยู่ที่ตัว VaR ในโมเดล สิ่งที่เค้าพยายามแก้ไขก็เลยเป็นการพยายามเอา VaR ออก แล้วเขียนเป็น function ใหม่ จากนั้นก็ simulate ออกมา


แล้วในปํญหา Optimization เราก็เก็บไว้แค่ค่า F ที่มากกว่า alpha ขึ้นไป ส่วนอะไรที่ไม่สอดคล้องกับเงื่อนไขนี้ ก็ปรับให้เป็น 0 ทั้งหมด ทีนี้ก็ integrate F ไป เราก็จะได้คำตอบของการ min CVaR แล้ว

แต่คือจริง ๆ ถ้าคิด analytical แบบนี้เราจะ integrate ไม่ออก (เพราะที่เราปรับจากบวกเป็น 0 มันจะทำให้เกิดกราฟแหลม ๆ ซึ่งกราฟแหลม ๆ มันจะดิ๊ฟ 0 เพื่อ min ไม่ได้) ก็เลยต้องเปลี่ยนไปคิดแบบ numerical แทน ก็สมมติ U เป็น dummy variable ขึ้นมาไว้แก้ปัญหาเรื่องกราฟแหลม


แล้วสุดท้ายโมเดลที่เราใช้ ก็จะออกมาอยู่ในรูปง่าย ๆ ไม่ซับซ้อน คือจากที่ยาก ๆ ก็กลายเป็นแก้ด้วย linear programming ได้ไปเลย - ลองดูหน้าตาของโมเดลได้ใน colab เหมือนเดิมนะ ลิงค์อันนี้คือสำหรับโพสต์นี้ https://colab.research.google.com/drive/1GH-gK2Y0NG4YadRYnNUGIYvWWJsyEKyj?usp=sharing


colab ทั้งหมด รวบรวม/จัดทำโดย อาจารย์อุดมศักดิ์ รักวงษ์วาน และคุณกฤติพัฒน์ กฤตาคม

โดยถ้าลืม ๆ ความเข้าใจก่อน ๆ ไปแล้ว สามารถกลับไปศึกษา part ก่อน ๆ ได้ที่ด้านล่าง


1.) Introduction to Portfolio Optimization - ต่อให้ Optimize แล้ว Port จะดีไม่ดีก็ขึ้นอยู่กับ View ของเราเอง

2.) วิธีแก้ปัญหา Optimization บน Python ด้วย CVXPY

3.) โจทย์ปัญหา การแก้ปัญหา Optimization ด้วย CVXPY

4.) Mean Variance Criteria



จริง ๆ ระหว่างโพสต์นี้กับโพสต์ที่แล้ว มีเรื่องนึงที่เราข้ามไป คือเรื่องการทำ backtest ซึ่งไอเดียมันคือ ๆ กันกับโพสต์ที่แล้ว แต่เป็นการโหลด data ในอดีตเข้ามาทดสอบ โดยสามารถเข้าไปศึกษาได้ที่ https://colab.research.google.com/drive/1PRF0Ec5_EEU_VnODmDBaKCK9SLdGw4An

0 ความคิดเห็น

Bình luận


bottom of page