การประมาณค่าพารามิเตอร์: Skewed Normal
ในแบบฝึกหัดก่อนหน้า พบว่าการ fit การแจกแจงแบบ Normal กับข้อมูลพอร์ตโฟลิโอของธนาคารเพื่อการลงทุนในช่วงปี 2005 - 2010 ให้ผลที่ไม่ดีนักตามการทดสอบ Anderson-Darling
คราวนี้จะทดสอบข้อมูลโดยใช้ฟังก์ชัน skewtest() จาก scipy.stats หากผลการทดสอบแตกต่างจากศูนย์อย่างมีนัยสำคัญทางสถิติ แสดงว่าข้อมูลมีความเบ้ (skewness) และควรใช้การแจกแจงแบบเบ้
ต่อไปจะประมาณค่า VaR ที่ระดับ 95% แบบ parametric โดย fit การแจกแจงความสูญเสียด้วย skewnorm ซึ่งเป็นการแจกแจง Skewed Normal จาก scipy.stats การแจกแจงนี้มีความยืดหยุ่นกว่าการแจกแจงแบบ Normal เนื่องจากยอมให้ความสูญเสียกระจายตัวแบบไม่สมมาตรได้ ซึ่งสอดคล้องกับช่วงวิกฤตที่ความสูญเสียในพอร์ตโฟลิโอมีแนวโน้มมากกว่ากำไร
ข้อมูล losses ของพอร์ตโฟลิโอในช่วงปี 2007 - 2009 ถูกเตรียมไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การบริหารความเสี่ยงเชิงปริมาณด้วย Python
คำแนะนำการฝึกหัด
- Import
skewnormและskewtestจากscipy.stats - ทดสอบความเบ้ในข้อมูล
lossesของพอร์ตโฟลิโอโดยใช้skewtestโดยผลทดสอบจะบ่งชี้ว่ามีความเบ้หากค่าที่ได้แตกต่างจากศูนย์อย่างมีนัยสำคัญทางสถิติ - Fit ข้อมูล
lossesกับการแจกแจง Skewed Normal โดยใช้เมธอด.fit() - คำนวณและแสดงค่าประมาณ VaR ที่ระดับ 95% จากการแจกแจงที่ fit แล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the skew-normal distribution and skewness test from scipy.stats
from scipy.stats import skewnorm, skewtest
# Test the data for skewness
print("Skewtest result: ", ____(____))
# Fit the portfolio loss data to the skew-normal distribution
params = ____.____(losses)
# Compute the 95% VaR from the fitted distribution, using parameter estimates
VaR_95 = ____.____(0.95, *params)
print("VaR_95 from skew-normal: ", VaR_95)