Macro-overlay through lifetime model
IFRS 9, TTC PD, Forward-looking information and Optimisation
IFRS 9 Model เฉพาะเรื่องที่เกี่ยวกับ PD Model ก็มีเรื่องให้เขียนเยอะมาก เพิ่งรู้ว่าจริง ๆ แล้วงานที่ทำมีรายละเอียดมากขนาดนี้ แต่ Blog ตอนนี้เป็นเนื้อหาเกี่ยวกับเรื่อง Component สุดท้ายอย่าง Lifetime model แล้ว อาจเคยเห็นหน้าของ Lifetime model มาบ้างผ่าน Survival analysis ที่สร้างเส้น TTC Curves หรือผ่าน Matrix multiplication จาก Transition matrix model
แต่ทั้งหมดนั้นยังเป็น Unbias lifetime model ซึ่งยังไม่สามารถใช้งานได้ เพราะตามมาตรฐาน IFRS 9 ต้องมีการ Incorporate forward-looking information เข้าไปในโมเดลด้วย ซึ่งเป็นเนื้อหาที่จะพูดถึงใน Blog ตอนนี้
Macro-overlay
ต่อจากนี้ขอเรียกการ Incorporate forward-looking model เข้าไปใน Unbias lifetime model ว่าการทำ Macro-overlay ซึ่งเป็นวิธีการใด ๆ ที่เป็นใส่ Effects ที่เกิดจาก Forward-looking model ลงไปในอีกโมเดล เช่นหาก Forward-looking model ทำนายว่าค่า Probability of Default ที่ “อาจ” เกิดขึ้นตามเงื่อนไขจากตัวแปร Macroeconomics ที่มีอยู่เป็นค่า x.xx% เมื่อเป็นเช่นนั้นตัวเลข x.xx% นี้จะมีผลกับ Unbias lifetime model เป็นเท่าใด นี่คือภาพรวมของการ Macro-overlay อย่างง่าย
ต่อมาต้องย้อนกลับมาพิจารณา Unbias lifetime model ว่ามีการพัฒนาขึ้นมาอย่างไร แต่โมเดลโดยส่วนมาก มักมี Segmentation แฝงอยู่ด้วย กล่าวคือมีการแบ่ง Risk grade ในโมเดลอีกชั้น
ใช้เป็นข้อมูลเดิมที่ได้จาก Survival analysis พร้อมทั้งใช้ Gamma distribution ในการ Extrapolate curve ให้ได้ตาม Period ที่ต้องการ โดยหาเป็นค่าของทั้ง Portfolio เป็น Through The Cycle (TTC) PD
อย่างที่ได้อธิบายไว้ตอนแรก Model อาจมีการทำ Segmentation ซ้อนอยู่ด้านใน ซึ่งจากตัวอย่างนี้เห็นได้ว่า TTC PD ของทั้ง Portfolio ประกอบไปด้วย TTC PD ย่อยอีกทั้งหมด 4 เส้นตาม Aging (Risk grade) การหา Weighted average ของทั้ง 4 เส้นนี้ จะได้คำตอบเท่ากับรูปแรก
ก่อนเข้าสู่ Section ถัดไป ขอเขียนเป็น Function ที่ช่วยให้การ Plot กราฟเชิงเปรียบเทียบ สำหรับใช้ในการอธิบายเพิ่มเติม
Probability of default (PD)
ก่อนไปถึงขั้นตอนการทำ Macro-overlay ควรมีความเข้าใจคำว่า Probability of default หรือ PD ก่อนว่า PD มีหลายประเภทและมีการใช้งานที่ต่างกัน
เริ่มที่เส้น TTC PD เส้นในลักษณะนี้เรียกว่า Cumulative PD หรือโอกาสเสียสะสมที่เป็นผลรวมของ Period ก่อนหน้ามาถึง Period ปัจจุบัน โดยค่าสูงสุดที่เป็นไปได้ของ Cumulative PD คือ 100% (ห้ามเกิน 100%)
ต่อมาเมื่อนำ Cumulative PD ที่ต่อเนื่องกันมาลบด้วย Period ก่อนหน้าจะได้เป็นโอกาสเสียส่วนเพิ่ม หรือเรียกว่า Marginal PD โดยค่าต่ำสุดที่เป็นไปได้ของ Marginal PD คือ 0% (ห้ามต่ำกว่า 0%)
ต่อมาเป็น PD อีกประเภทเรียกว่า Conditional PD หรือโอกาสเสีย ณ Period นั้น ๆ หากรอด (ไม่เสีย) มาจาก Period ก่อนหน้านี้ โดยคำว่า Conditional คือเงื่อนไขที่ Given ว่าต้องรอดจาก Period ก่อนหน้านี้เท่านั้น
เมื่อเป็น Probability แล้วต้องมี Given window เช่นโอกาสที่จะเสียใน xx Period จากโมเดล Unbias lifetime ที่สร้างขึ้นเป็นโอกาสที่จะเสียใน 1 เดือนข้างหน้า แต่ PD สามารถเปลี่ยน Basis ให้มากกว่า 1 เดือนเป็น 12 เดือน (ตาม Forward-looking model ที่ใช้ 12 เดือน) โดยใช้ Compounding formula
หรือหากต้องการเปลี่ยน Basis จาก 12 เดือนกลับเป็น 1 เดือน ก็สามารถใช้สูตรเพื่อทอน PD ให้เหลือ 1 เดือนได้
และแน่นอนว่าการเปลี่ยนจาก Conditional PD → Marginal PD → Cumulative PD ก็ย่อมทำได้เช่นกัน
มาถึงตอนนี้เข้าใจรายละเอียดของ PD หลาย ๆ แบบแล้ว สามารถสร้างเป็น Function ย่อยเพื่อความสะดวกในการเรียกใช้งานได้ Section ต่อไปเป็นการใช้สูตรเหล่านี้ใน Macro-overlay process
Macro-overlay process
สำหรับขั้นตอน Macro-overlay อาจมีหลายแบบหลายวิธี แต่ใน Blog ตอนนี้ขอนำเสนอวิธี Linear calibration โดยมี Assumption ที่ว่า Forward-looking model ส่วนมากแล้ว Build ด้วยการที่มีตัวแปร y เป็น Logit หรือ Log ของ Odds ratio ดังนั้นการทำ Overlay ควรเกิดขึ้นบน Logit ที่เป็น Scale เดียวกัน
นอกจากนี้ยังมีอีก Assumption ที่ว่า PiT PD มี Basis เดียวกับ Conditional PD จึงต้องมีการเปลี่ยน Basis ของ PD ตั้งต้นให้เป็น Conditional PD
และ Assumption สุดท้ายคือค่า Prediction ที่เกิดจาก Forward-looking model ควรใช้เป็น 12-Month TTC PD โดยให้ Macroeconomics เป็นตัวกำหนดค่าที่จะกระทบกับเส้น TTC Curves ทั้งหมด เมื่อรวม Assumption ทั้ง 3 ข้อเข้าด้วยกันจึงเกิดสูตร Linear calibration ตามด้านบน
เขียนเป็น Function ขึ้นตามวิธีการและ Assumption ที่อธิบายตามด้านบน ใน Section ต่อไปเป็นวิธีการใช้งาน พร้อมแสดงให้เห็นถึงปัญหาที่เกิดขึ้น
Macro-overlay issue
ใช้งาน Function linearFWL()
โดย Assume ว่า Prediction ที่เกิดจาก Forward-looking model มีค่าเป็น 6.40% Apply function ให้ทั้ง Average TTC และ Risk grade TTC จากนั้น Weighted average risk grade TTC ให้กลายเป็น Portfolio level
ผลลัพธ์ที่ได้แสดงให้เห็นถึงปัญหาอย่างชัดเจน เมื่อ Calibrate บนเส้น Average TTC Curve ผลลัพธ์ที่ได้เป็นไปตามที่คาดหวังไว้คือเดือนที่ 12 ค่า TTC PD = 6.40% แต่เมื่อ Calibrate บนเส้น Risk grade level ก่อน แล้ว Weighted average ผลลัพธ์ได้ที่กลับไม่เท่ากันที่ 6.40% แต่ให้ผลลัพธ์เป็น 6.04% แทน
ปัญหาในลักษณะนี้ส่งผลให้โมเดลใช้งานจริงไม่ได้ เพราะเมื่อ Forward-looking model ทำนายว่ามีโอกาสเกิดหนี้เสียทั้งหมด 6.4% แต่เมื่อ Calibrate ในแต่ละ Risk grade แล้วกลับทำให้โอกาสเกิดหนี้เสียไม่เท่าเดิม (มี Consultant บางเจ้าก็ไม่ได้เห็นปัญหาข้อนี้ ส่งโมเดลที่ใช้งานไม่ได้ให้ลูกค้าก็มี)
Macro-overlay through optimisation
เพื่อแก้ปัญหาที่เกิดขึ้น จึงจำเป็นต้องใช้ Optimisation เข้ามาช่วยในการหา Adjustment factors (Scaling factors) เพื่อทำให้ตัวเลข Weighted average มีค่าเท่ากับ TTC Curve ภายหลังจาก Macro-overlay process
เขียนเป็น Function สำหรับใช้ใน Optimisation process โดย Objective คือต้องการทำให้ส่วนต่างของเส้น Average ทั้ง 2 เส้นมีค่าเป็น 0 (หรือใกล้เคียง 0 ที่สุด)
ใช้ fsolve()
จึงเป็นทางเลือกที่เหมาะสมที่สุดกับปัญหานี้ เพราะ fsolve()
จะ Return ค่าจาก Function ใด ๆ ให้มีค่าเท่ากับ 0
ผลลัพธ์ภายหลังจากที่มีการใช้ Adjustment factors บน Risk grade level ทำให้ Weighted average มีค่าเท่ากับ TTC Curve
ลอง Plot เปรียบเทียบการ Calibration ทั้ง 2 แบบให้ผลลัพธ์ที่แตกต่างกัน โดยผลลัพธ์ที่สามารถนำไปใช้งานได้จริงคือเส้นประ ที่มีค่า PD สูงกว่าเล็กน้อย
Conclusion
เนื้อหาตอนนี้อาจลึกไปบ้าง สำหรับบางคนที่ไม่ได้ผ่าน IFRS 9 Model มาอย่างหนักหน่วง เพราะแม้แต่ Consultant เจ้าดังบางเจ้าก็ยังไม่ได้มองเห็นปัญหาที่เกิดขึ้นนี้ อีกทั้งยังส่งโมเดลที่ใช้งานไม่ได้ให้กับลูกค้า และบอกว่ามาตรฐานไม่ได้กำหนด ซึ่งฟังดูแล้วเป็นคำพูดที่ไม่รับผิดชอบ ทั้ง ๆ ที่วิธีการแก้ไขมันก็มีอยู่ ตามที่ได้นำเสนอให้ดูทั้งหมดใน Blog ตอนนี้
สำหรับ Colab notebook สามารถดูได้ที่ Link ด้านบน