Transition matrix สำหรับ Non-Retail portfolios

Non-Retail portfolio, Transition matrix, Reference matrix, IFRS 9

Sasiwut Chaiyadecha
4 min readMar 9, 2022

ยังคงอยู่ในเรื่องของ Transition matrix ที่ใช้ใน Credit risk หรือ IFRS 9 กันอย่างแพร่หลาย สำหรับใครเพิ่งผ่านมาเจอ Blog ตอนนี้ แล้วยังมีความสงสัยว่า Transition matrix คืออะไร อยากให้ลองย้อนกลับไปอ่าน Blog ตอนก่อนหน้านี้ เพื่อความเข้าใจมากขึ้น เพราะมีรายละเอียดเยอะกว่า ตาม Link ที่ให้ไว้ด้านล่าง

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

Non-Retail portfolios

อาจมีคำถามว่าทำไมต้องเป็นสำหรับกลุ่ม Non-Retail portfolios ก่อนตอบคำถามข้อนี้ ขอพูดเรื่องกว้าง ๆ ของ Product ในธนาคารว่าอะไรบ้างก่อน สำหรับคนทั่วไปที่ไม่ได้ประกอบธุรกิจ หรือเป็นเจ้าของกิจการ อาจคุ้นเคยลักษณะสินเชื่ออยู่ไม่กี่ประเภท เช่น สินเชื่อบ้าน สินเชื่อรถ สินเชื่อส่วนบุคคล แต่ยังมีสินเชื่อที่เป็นกลุ่มของบริษัท ห้างร้าน ที้ประกอบกิจการในรูปแบบของนิติบุคคล สินเชื่อเหล่านี้เรียกเป็นกลุ่มใหญ่ ๆ ว่า Non-Retail

แล้วทำไมต้องใช้วิธีการสร้าง Model สำหรับลูกหนี้ที่เป็นเฉพาะกลุ่มนี้โดยเฉพาะ เรื่องนี้อาจเป็นเพราะลักษณะทั่วไปของ Non-Retail เรื่องแรกคือเรื่องขนาดตัวอย่าง ที่มีจำนวนน้อยเมื่อเทียบกับกลุ่มที่เป็น Retail ทั่วไป เช่น Corporate portfolio เป็นต้น หากต้องการสร้าง Model อย่าง Survival analysis สำหรับกลุ่ม Non-Retail อาจเป็นเรื่องที่ยากและไม่เหมาะสม

หรือแม้แต่กระทั่ง Transition matrix ที่เป็น Memory less model ยังอาจต้องมีวิธีการสร้างที่ต่างออกไปจาก Transition matrix model ทั่วไปที่เคยนำเสนอ ซึ่งเนื้อหาทั้งหมดจะ Cover ใน Blog ตอนนี้

Rating model

Non-Retail portfolios ส่วนมากแล้วมีสิ่งที่เรียกว่า Internal rating model ที่เอาไว้จัดกลุ่มลูกหนี้แยกออกตามความเสี่ยง ใน IFRS 9 ส่วนมากนิยมใช้ Risk tool นี้ เพื่อนำมาต่อยอดเป็น PD Model

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

จากข้อมูลตัวอย่างเป็น Table ที่ประกอบด้วย Rating ณ จุดที่ Observation และ Rating12 คือ Rating เมื่อเวลาผ่านไป 12 เดือนว่ามี Rating เป็นเท่าไหร่ ดีขึ้น แย่ลง หรือปิดบัญชีไปแล้ว ทั้งหมดนี้อยู่ใน Level ของ Segment ที่ประกอบไปด้วย Corporate และ SME ซึ่ง Blog ตอนนี้จะ Build transition matrix รวมของทั้ง 2 Segments นี้เป็น 1 Matrix เท่านั้น

สร้างเป็น Pivot table เพื่อหาจำนวน Observation ทั้งหมดสร้างเป็น Count matrix โดยเรียงลำดับตามความเสี่ยง Rating จากเสี่ยงน้อยไปเสี่ยงมาก [‘AAA’, ‘AA’, …, ‘Default’]

เปลี่ยนจาก Count number of observation เป็น % โดยที่ผลรวมของ Row ใน Matrix ต้องมีค่าเท่ากับ 100% และใช้ฟังก์ชั่น plotMatrix() ที่เขียนไว้ก่อนหน้านี้ Plot ผลลัพธ์

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

Issue with Non-Retail transition matrix

จาก Transition matrix ด้านบน อาจเจอปัญหาอยู่บ้างหากใช้ข้อมูลนี้สร้างเป็น Model ต่อ เช่นที่ Rating AAA ไปถึง A+ มี Transition rate ที่เป็น 0% อยู่มากพอสมควร รวมไปถึงที่ Rating AAA ไปถึง BBB+ มี Default rate ที่ 0%

เมื่อ Based matrix เช่นนี้อาจทำให้การทำ Matrix multiplication ได้ค่าที่ไม่ดี ดังนั้นจึงมีการปรับ Matrix นี้ก่อนการทำขั้นตอนต่อไป

How to fix Non-Retail transition matrix

วิธีการแก้ไข Transition matrix ที่นิยมสำหรับกลุ่ม Non-Retail คือการ “ยืม” Transition rate ของบาง Rating มาใช้งาน จากข้อมูลเห็นได้ว่า Rating ที่มีข้อมูลเยอะที่สุด และความเสี่ยงต่ำที่สุดคือ BB+ ซึ่งจะใช้ BB+ เป็น Row อ้างอิง

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

วิธีคือให้เลื่อนทั้ง Row BB+ทแยงไปตาม Diagonal ดังนั้นหมายความว่าที่ Rating12 ของ Row BBB ต้องเป็น 45.25% แทนที่ 39.49% เป็นต้น แต่สำหรับ Closed และ Default แทนที่การเลื่อนแบบแนวทแยง ให้เลื่อนขึ้นเป็นแนวตั้งแทน ดังนั้น Default rate ของ BBB ต้องเป็น 0.66% แทน 0.32% เป็นต้น

แต่การเลื่อนในลักษณะนี้ต้องไม่ลืมว่าผลรวมของ Row แต่ละ Row ต้องมีค่าเป็น 100% ดังนั้นต้องมีการสร้าง Rate สำหรับ Adjustment ขึ้นในกรณีที่เลื่อน Row ไปทับ Rate เดิมที่ไม่ใช่ 0% หรือ Row ที่หายไปไม่ใช่ 0%

เมื่อเข้าใจ Logic วิธีการปรับ Transition matrix แล้ว สามารถ Implement เป็นฟังก์ชั่นขึ้นมาใช้งานได้ โดยหลักการทำงานของฟังก์ชั่น เริ่มจากหา Index ของ Row ที่ต้องการทำ Reference จากนั้นสร้างเป็น 2 Array โดยแยก Closed และ Default เก็บเป็นอีก Array

ใช้ Iteration เพื่อนับว่าจำนวนข้อมูลใน Array แรกหายเท่าไหร่เมื่อมีการเลื่อนไปทาง Diagonal เมื่อได้จำนวนข้อมูลที่หายไปแล้ว ในเติม “0” แทน Array ว่างนั้น ๆ โดยที่เติมก่อนตำแหน่งของ Closed และ Default เพราะทั้งสองค่านี้ต้องเลื่อนขึ้น ไม่ได้เลื่อนทางทแยง ดังนั้นข้อมูลที่หายไปจึงไม่มีผล

จากนั้นใน Stack ข้อมูลโดยคงมิติเดิมไว้ (1 มิติ) และทำการ Adjustment เผื่อกรณีที่ข้อมูลที่หายไปไม่ใช่ 0% เมื่อได้ Array ที่สมบูรณ์แล้ว ให้วาง Array ใหม่แทนที่ Array เดิม

ผลลัพธ์ที่ได้จากการทำ Reference matrix

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

เห็นได้ว่าข้อมูลที่ Rating AAA ถึง BBB ถูกเติมให้เต็มมากกว่าเดิม รวมทั้ง Default rate ก็มีค่าจากเดิมที่เป็น 0% ขั้นตอนต่อไปเป็นการทำ Rate adjusment

Closed rate adjustment

ขั้นตอนนี้อาจเป็น Optional หมายความว่าอาจทำหรือไม่ก็ได้ขึ้นกับข้อมูล วิธีการทั้งหมดเคยเขียนไว้ใน Blog ตอนก่อนหน้านี้แล้วอย่างละเอียด สามารถย้อนอ่านได้ที่ Link ด้านล้าง

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

จากรูป Closed rate ด้านบนขอทำการ Smoothing ด้วย Log-linear regression model เพื่อให้ Rate เรียงตัวกันมากกว่านี้

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

ใช้เป็น Rate ที่เกิดจาก Model (เส้นเหลือง) แทนที่ใน Closed rate เดิมใน Transition matrix

สูตรคือ

New rate = Old rate * (1 - fitted closed rate) / (1 - actual closed rate)
the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p non-retail portfolio smoothing exponential function linear regression

เมื่อได้ Closed rate ที่ Adjusted แล้ว ขั้นตอนต่อไปคือการ Blend หรือการกระจาย Closed rate เข้าไป Transition matrix ของแต่ละ Rating สูตรคือ

New rate = Old rate / (1 - fitted closed rate)
the matrix transition matrix pd model probability of default ifrs9 แบบจำลองความเสี่ยง credit risk มาตรฐานบัญชีใหม่ tfrs9 matrix multiplication python pandas dataframe moody’s s&p non-retail portfolio smoothing exponential function linear regression

ผลลัพธ์ที่ได้คือ Transition matrix ที่ไม่มี Closed rate แล้ว ขั้นตอนต่อไปเป็นการทำ Default rate adjustment

Default rate adjustment

วิธีการเหมือนกับ Closed rate adjustment ทุกอย่าง ยกเว้นการ Smoothing ที่ไม่ได้นำ Default row เข้าไป Fitting ใน Regression model แต่ขั้นตอนอื่น ๆ สามารถนำมาใช้ได้ทุกอย่าง เริ่มจาก Plot default rate ก่อนการ Smoothing

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

Fitting ด้วย Log-linear regression ที่ไม่มี Default row

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

จากนั้นใช้ผลลัพธ์ในเส้นสีเหลือง เพื่อแทนที่ Default rate เดิม

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

ถึงตรงนี้ถือเป็นการจบขั้นตอนทั้งหมดในการสร้าง Based matrix ขั้นตอนต่อไปเป็นการนำ Based ที่ได้มานี้ทำให้เป็น Lifetime PD ตามมาตรฐาน IFRS 9

Lifetime matrix multiplication

ขั้นตอนการทำ Lifetime PD ด้วย Matrix multiplication สามารถใช้โค้ดจากตอนก่อนหน้านี้ได้ทั้งหมดเลย Blog ตอนนี้ขอสร้าง Lifetime PD 15 ปีเป็นตัวอย่าง เพื่อให้เห็นเส้นที่เกิดจาก Based matrix ที่ผ่านการปรับค่ามาค่อนข้างเยอะพอสมควร

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

Conclusion

อาจดูเหมือนเนื้อหา Blog ตอนนี้เยอะ และซับซ้อน แต่ในความเป็นจริงแล้วไม่ใช่เลย การทำ Model ด้วย Transition matrix ถือว่าเป็นอะไรที่ตรงไปตรงมาที่สุดแล้ว ที่สำคัญสามารถปรับตัวเลขได้ตามความเหมาะสม ถือเป็นอีกหนึ่งในหลาย ๆ วิธีที่อยากแชร์เป็นไอเดียสำหรับ IFRS 9 PD Model

สำหรับ Colab notebook ประกอบ Blog ตอนนี้ สามารถดูได้ที่ Link ด้านบน

--

--

Sasiwut Chaiyadecha
Sasiwut Chaiyadecha

No responses yet