Transition matrix model สำหรับกลุ่ม Low default portfolios #2

Master scale, Minimiser, Matrix adjustment and multiplication

Sasiwut Chaiyadecha
4 min readMar 2, 2022

ต่อจากตอนก่อนหน้านี้ Material ที่ได้มาคือ Fitted default rate สำหรับวิธีการทำให้ได้มา สามารถอ่านได้ที่ Link ด้านล่าง Blog ตอนนี้จะเป็นตอนจบของ Transition matrix สำหรับ Low default portfolio แล้ว (เนื้อหาเยอะไม่อยากต่อตอนที่ 3)

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression

เนื้อหาของ Blog ตอนนี้เป็นการพัฒนาแบบจำลอง PD สำหรับกลุ่ม Low default portfolio ต่อ และยังมีอีกหลายขั้นตอนที่ต้องทำ แต่สิ่งที่ต้องรู้เพิ่มเติมคือเรื่องของ Master scale

Master scale

Master scale คือ Model ที่ใช้ในการ Mapping internal data ไปที่ External data ซึ่ง Master scale จะมีความแตกต่างกันไปตามแต่ละที่ ขึ้นอยู่กับว่า Internal model พัฒนามาแบบไหน แต่หลัก ๆ คือการใช้เทียบเคียงค่า PD ใน Blog ตอนนี้ขอสร้าง Master scale ขึ้นมาง่าย ๆ เพื่อให้เห็น Process การทำงานเรื่องการ Mapping external data มาเป็น Internal data

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale
ตัวอย่าง master scale ที่ใช้ mapping ระหว่าง internal และ external rating

จากตัวอย่าง Moody’s rating มีทั้งหมด 21 เกรด และ Internal rating มีทั้งหมด 14 เกรด การ Mapping อาจมีกรณีต่าง ๆ เช่น Rating A1 สามารถ Mapping กับ Moody’s ได้ 4 Rating หรือไม่มี Rating ใดที่สามารถ Mapping กันได้เลย เช่น Ba2 และ Ba3 ทำให้ Rating B4 จาก Internal rating ไม่สามารถ Mapping ได้

ในกรณีเช่นนี้อาจต้องสร้าง Assumption ขึ้นมา เช่นการ Mapping ที่มากกว่า 1 ให้ใช้ Simple average หรือหากไม่สามารถ Mapping ใด ๆ ได้ ให้ใช้ Linear interpolation เป็นต้น เมื่อมี Master scale และสร้าง Assumption แล้ว ก็สามารถนำมาใช้งานต่อกับ Fitted default rate ได้ด้วยการ Mapping internal rating เข้าไปใน DataFrame เดียวกัน

ก่อนทำการ Aggregate ด้วย Internal rating ควรทำ DataFrame ตาม Assumption ที่สร้างไว้ก่อน เนื่องจากการใช้ Linear interpolation ต้องการข้อมูลที่มี Row ว่างเพียงแค่ 1 Row ดังนั้นจึงต้องลบ Row ส่วนเกิน Row ใด Row หนึ่งออกก่อน (จะเป็น Ba2 หรือ Ba3 ก็ได้) แล้วจึงทำการ Interpolation

ให้แทนค่า fittedDefault ด้วย np.nan จาก Row ที่ Mapping rating ไม่ได้ (nan) จากนั้นให้หา First invalid index ด้วยการใช้ .isnull().idxmax() เพื่อ Return ค่าของ Index ตัวแรกที่มีค่า Missing และทำการลบ Index นั้นออก จากนั้นใน .interpolate(method = ‘linear’) เพื่อ Interpolate ค่า PD ระหว่าง 2 จุดที่ Rating B3 และ B5 เข้าไป สุดท้าย Assign rating ให้เท่ากับ B4

เมื่อได้ DataFrame ตามที่ต้องการแล้ว สามารถใช้ .groupby() ด้วย Internal rating เป็น Key และใช้ .mean() สำหรับการทำ Simple average และ Plot แสดงผลลัพธ์

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale

Low default distribution

สำหรับลักษณะข้อมูล Low default portfolio คือจำนวนประชากรในแต่ละ PD Segmentation ที่ค่อนข้างจำกัด ทำให้เมื่อมีหนี้เสียเกิดขึ้นเพียง 1 ราย อาจทำให้ ODR ที่เกิดขึ้นมีค่าสูง และแน่นอนว่า ODR ไม่มีการเรียงแบบ Risk ranking แน่นอน

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale

จากตัวอย่าง Plot อออกมาให้ดูว่า Internal rating ตั้งแต่ A1 ไปจนถึง C5 เห็นได้ว่า Rating model ไม่สามารถทำงานกับกลุ่มประชากรที่จำกัดได้ การเรียงลำดับของ Risk rank ใน Rating model ทำได้ไม่ดีเท่าที่ควร

Calibration

เมื่อข้อมูล Internal ไม่สามารถเป็น Repesentative ที่ดีได้แล้ว การใช้ข้อมูลจาก External data (สิ่งที่ทำมาทั้งหมดก่อนหน้านี้) จึงเป็นทางออกที่เหมาะสมในการสร้างโมเดล แต่การหยิบใช้ข้อมูล External ตรง ๆ ก็อาจไม่ใช่สิ่งที่เหมาะสม ดังนั้นการ Calibrate ข้อมูล Internal data ไปสู่ External data เพื่อใช้ Weight ของ Internal data ให้มีส่วนในโมเดล จึงเป็นสิ่งที่นิยมทำกัน

Scaling factor: 0.5568

แน่นอนว่าการ Calibration มีหลายวิธี วิธีที่นำเสนอใน Blog ตอนนี้ใช้เป็น Scaling factor ที่เกิดจากการหาจุด Minised (Optimisation) ของ Error ระหว่าง Proxy PD และ Low default PD ที่ Weighted ด้วย Internal data ทั้งคู่

เมื่อได้ Scaling factor (0.5568) แล้วให้นำไปคูณกับ Proxy PD ที่สร้างไว้ ผลลัพธ์ที่ออกมาคือ เส้น PD ที่มี Slope เท่าเดิม แต่ Scale เป็นไปตาม Portfolio distribution

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale

Matrix adjustment

เมื่อได้ Scaled PD แล้ว ต่อไปเป็นการนำไปแทนค่า Default rate ใน Transition matrix จาก External source จากนั้นเพื่อไม่ให้ผลรวมของ Row ใน Matrix ค่าเกิน 100% ให้ทำ Adjustment ด้วยสูตร

Adjusted PD = PD * ((1-Scaled PD) / (1-PD))

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale

Plot เปรียบเทียบระหว่าง Matrix เก่าและ Matrix ที่ Adjustment แล้ว

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale

Lifetime model

มาถึงขั้นตอนสุดท้ายคือ การสร้าง Lifetime PD จาก Transition matrix ซึ่งวิธีการและ Code ใช้หลักการเดิมจากที่เคยอธิบายไปใน Blog ตอนก่อนหน้านี้สามารถกดเพื่อย้อนดูเนื้อหาได้

Plot lifetime PD ที่เกิดจาก External matrix สังเกตได้ว่าผลลัพธ์ที่ออกมายังเป็น External rating ของ Moody’s อยู่ ดังนั้นต้องการปรับให้เป็น Internal rating ก่อนการใช้งาน

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale
ผลลัพธ์ยังเป็น external rating ของ moody’s อยู่

สำหรับวิธีการปรับให้เป็น Internal rating ให้ใช้ Logic เดียวกันกับตอนที่ Mapping ด้วย Master scale คือการ Grouping ด้วย Simple average และ Linear interpolation กับ Rating ที่ Mapping ไม่ได้ แต่ใน Lifetime ให้ Apply logic กับข้อมูลในทุก ๆ ปี

the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p low default portfolio smoothing exponential function linear regression master scale

ผลลัพธ์สุดท้ายที่ออกมาคือ Lifetime term structure ในแต่ละ Internal rating

Conclusion

สำหรับวิธีการ Proof ว่าสิ่งที่ทำมาถูกต้องหรือไม่ สามารถใช้ Scaling factor เดิม ที่หาออกมาได้คูณกับ Master scale mapping ผลที่ออกมาต้องมีค่าเท่ากับ PD ของปีที่ 1

0    0.0000 
1 0.0004
2 0.0011
3 0.0017
4 0.0025
5 0.0057
6 0.0089
7 0.0135
8 0.0257
9 0.0591
10 0.1081
11 0.1639

และนี่คือทั้งหมดของการสร้าง PD Model สำหรับกลุ่ม Low default portfolio ที่นิยมใช้ใน IFRS 9 สำหรับ Link Google Colab ของทั้งสองตอนนี้ สามารถติดตามได้ที่ GitHub ด้านบน

--

--

Sasiwut Chaiyadecha
Sasiwut Chaiyadecha

No responses yet