การคำนวณ Exposure at Default ของ Hybrid loan แบบละเอียดยิบ
แชร์วิธีทำ Expected Credit Loss (ECL) ของ Hybrid loan
เนื้อหาของ Blog ตอนนี้เป็นเรื่องเกี่ยวกับการคำนวณยอดหนี้ ซึ่งเป็นส่วนประกอบหนึ่งในการตั้งสำรองของธนาคาร หรือที่เรียกว่า ECL (Expected Credit Loss) โดยวิธีการที่กำลังจะได้เห็นต่อไปนี้เป็นการอ้างอิงจากการใช้งานตามมาตรฐานบัญชี IFRS 9 ซึ่งอาจมีความแตกต่างจากการทำ Capital requirement ของมาตรฐาน Basel
ก่อนเข้าสู่รายละเอียดของการคำนวณ ขอเรียงขั้นตอนตั้งแต่ลักษณะของ Product ที่ใช้คิด ECL การทำ Loan amortization แล้วค่อยเข้าสู่การคำนวณตามมาตรฐานบัญชี IFRS 9 ดูจากเนื้อหาทั้งหมดแล้ว Blog คงเป็นอีก 1 ตอนที่ยาว เพราะมีรายละเอียดที่ค่อนข้างเยอะ
The Bank’s product
ในสมัยก่อน Product ของธนาคารยังไม่เยอะเท่าปัจจุบันนี้ สามารถแบ่งลักษณะ Product ออกได้เป็นภาพใหญ่ ๆ 2 ภาพคือ Term loan และ Revolving product
- Term loan เป็นการให้กู้ยืมเงินก้อน โดยที่สัญญาระบุไว้ว่าต้องการผ่อนชำระหนี้เท่าไหร่ต่อเดือน (หรือไตรมาส หรือปี) มีระยะเวลาที่กำหนดชัดเจน พร้อมทั้งอัตราดอกเบี้ยที่ต้องจ่าย ตัวอย่างของสินเชื่อในกลุ่มนี้ เช่น สินเชื่อบ้าน สินเชื่อรถ สินเชื่อส่วนบุคคล เป็นต้น
- Revolving product เป็นการให้กู้ยืมเงินแบบหมุนเวียน โดยขึ้นอยู่ผู้กู้ว่าต้องการใช้วงเงินในช่วงเวลาใด ไม่มีกำหนดระยะเวลาชัดเจน อัตราดอกเบี้ยคิดก็ต่อเมื่อมีการเบิกใช้วงเงินเท่านั้น ตัวอย่างของสินเชื่อในกลุ่มนี้ เช่น สินเชื่อบัตรเครดิตหรือบัตรกดเงินสด สินเชื่อ Top-up ประเภทต่าง ๆ
ก่อนหน้านี้สินเชื่อทั้งสองประเภทนี้ เคยแยกออกจากกันอย่างชัดเจน จนเมื่อการมาถึงของกลุ่มธุรกิจประเภท Nano-Finance ทำให้เส้นแบ่งของทั้ง 2 Products นี้ค่อย ๆ จางลง
Hybrid loan
เพื่อการเข้าถึงลูกค้าที่ง่ายขึ้น และเพื่อเพิ่มการแข่งขันกับธนาคารรายใหญ่ได้ กลุ่มธุรกิจ Nano-Finance จึงนิยมออก Product ประเภท Hybrid loan เป็นการนำลักษณะของทั้ง Term loan และ Revolving product มารวมไว้เป็นสินเชื่อประเภทเดียวกัน
Hybrid loan นี้มีสิ่งที่เรียกว่า Limit amount (วงเงิน) หรือจำนวนเงินที่สามารถใช้จ่ายได้ทั้งหมด (Share limit) ภายในระยะเวลาที่กำหนด หากเป็น Term loan ลูกหนี้จำเป็นต้องกู้เงินจำนวนนี้ทั้งหมดทีเดียว แต่ Hybrid loan ลูกหนี้สามารถ “ทยอย” เบิกใช้ภายใต้วงเงินที่กำหนด (เหมือน Revolving product) ในการเบิกใช้ลูกหนี้สามารถกำหนดได้เองว่า ต้องการเบิกใช้เป็น Loan ประเภทใดระหว่าง Term loan หรือ Revolving product
ภายหลังจากเบิกใช้เป็น Loan ประเภทนั้น ๆ แล้ว การจ่ายคืนก็ต้องไปตามลักษณะของ Loan เช่น Term loan มีการจ่ายต่องวดชัดเจน (Installment) มีระยะเวลากำหนด หรือถ้าเป็น Revolving product อาจไม่ต้องจ่ายเต็มงวด แต่เปลี่ยนเป็นจ่าย Minimum payment แทน เป็นต้น
นอกจากนี้ลูกหนี้ไม่จำเป็นต้องเบิกใช้วงเงินให้หมดในครั้งเดียว สามารถเบิกใช้เท่าไหร่ก็ได้ตราบใดที่ยังไม่เกินวงเงิน โดยส่วนที่เหลือจากการเบิกของ Product ทั้งหมดแล้ว เรียกว่า Undrawn portion หรือ Available limit ที่เป็นวงเงินส่วนเหลือให้ลูกหนี้สามารถเบิกใช้ได้ต่อ
ในส่วนของ Limit amount สามารถนำเงินที่ลูกหนี้ชำระค่างวดจากทั้ง Term loan หรือ Revolving product นำกลับเข้าไปเติมให้กับ Available limit ในช่วงเวลาถัดไป ทำให้ลูกหนี้มีวงเงินที่สามารถใช้จ่ายได้เพิ่มอีก
ทั้งหมดนี้คือลักษณะของ Product ทางการเงินใหม่ที่เริ่มใช้กับกลุ่มธุรกิจที่เป็น Nano-Finance ทั้งนี้เพื่อเพิ่มความสามารถในการแข่งขันกับธนาคารรายใหญ่ และเป็นอีกทางเลือกให้กับลูกค้าที่ไม่สามารถทำธุรกรรมการกู้ยืมจากธนาคารได้ ฟังดูเหมือน Product ประเภทนี้สามารถเข้าถึงกลุ่มลูกหนี้ชั้นกลาง ที่ไม่ได้ต้องการวงเงินจำนวนมาก แต่มีความจำเป็นต้องใช้เงินด่วน แน่นอนว่าด้วยความยืดหยุ่นนี้ ทำให้เกิดความเสี่ยงทาง Credit มากขึ้นตามเช่นกัน
Amortization
เคยเขียนอธิบาย Amortization ไว้ในตอนก่อนหน้านี้พอสมควรแล้ว ตอนนี้จึงเป็นการ Recap สั้น ๆ เพื่อให้อ่านเนื้อหาภายในตอนแบบไม่งง Loan amortization ภาษาไทยเรียกว่าการตัดจำหน่าย หมายถึงการทยอยชำระคืนเงินกู้ ที่มีทั้งเงินต้นพร้อมดอกเบี้ยเงินกู้ทั้งหมด โดยทางธนาคารต้องทำการรับรู้รายได้ในส่วนของดอกเบี้ยก่อน ส่วนที่เหลือจึงนำไปหักลบกับเงินต้นออก สิ่งนี้เป็นขั้นตอนปกติในการคำนวณ
การทำ Amortization ปกติ สามารถหา Installment ได้จากสูตร PMT Function โดยคิดจากยอดหนี้ อัตราดอกเบี้ย และระยะเวลาที่เหลือในการผ่อนชำระ (อายุ Loan) คำนวณออกมาเป็นยอด Instalment ที่ต้องรับผิดชอบ เมื่อถึงวันสุดท้ายของ Loan ยอดหนี้จะโดนหักลบจนเหลือ 0 พอดี กรณีนี้เป็นตัวอย่าของ Case ปกติ…
Truncate
ในหลายกรณีที่ Loan amortization ไม่เป็นไปตาม Schedule ตามที่กำหนดไว้ในสัญญากู้ยืม ตัวอย่างเช่น Term loan เกิดการผิดนัดชำระหนี้ และไม่มีการจ่ายเงินงวดผิดนัดกลับเข้ามาในงวดถัดไป กรณีนี้ทำให้วันสิ้นสุดอายุสัญญาต้องเลื่อนออกไปอีก 1 งวด หรือมากกว่านั้นในกรณีที่มีค่าปรับ
แต่สำหรับกลุ่มที่ Product ที่เป็น Hybrid loan อาจไม่มีความยืดหยุ่นมากเท่า Term loan เพราะมีเรื่องของ Limit เข้ามาเกี่ยวข้องด้วย สิ่งที่มามีเพิ่มเข้ามาใน Hybrid loan จึงเป็นวันหมดอายุวงเงิน หรือ Maturity date คือวันที่ไม่ว่าจะอย่างไร ต้องเคลียร์หนี้ให้จบ ไม่สามารถผลัดวันออกไปได้มากกว่านี้
เมื่อมีทั้งกรณีการเกิดผิดนัดชำระหนี้ขึ้น และไม่สามารถผลัด Maturity date ออกไปได้ จึงเป็นการ Amortization อีกแบบที่เรียกว่า Truncate (ไม่แน่ใจว่าชื่อภาษาไทยคืออะไร) เป็นการนำยอดหนี้ที่เหลือทั้งหมด มาจ่ายใน Maturity date ภายในวันเดียวถึงสามารถปิดบัญชีกับธนาคารได้ เรื่องนี้เป็นสิ่งที่ธนาคารไม่เคยบอกในตอนกู้ยืมเงิน ดังนั้น Minimum payment ที่เป็นทางเลือกการจ่ายเงินคืนของบัตรเครดิต จึงเป็นสิ่งที่ต้องระวัง เพราะถ้าจ่ายเท่ากับ Minimum payment ไปเรื่อย ๆ อาจเป็นการจ่ายเฉพาะดอกเบี้ยโดยที่เงินต้นไม่ได้ลดลงเลย Link ด้านล่างอธิบายไว้ดีมาก
จบภาคทฤษฎี… พร้อมเข้าสู่ภาคปฏิบัติ
Dataset
Dataset ที่ใช้สำหรับ Blog ตอนนี้เป็นการ Mock-up ขึ้นมา เพื่อให้มีหลาย ๆ เคสสำหรับการอธิบายผลลัพธ์จากการคำนวณได้มากขึ้น
ตัวอย่างขอข้อมูลที่ใช้สำหรับการตั้งสำรองใน IFRS 9 ของ Product ที่เป็น Hybrid loan ข้อมูลเกี่ยวกับ Loan ที่จำเป็นต้องมี (ยังไม่พูดถึง Parameters อื่น) ได้แก่
- As of date อาจเรียกว่าเป็น Reporting date คือเดือนที่ต้องคำนวณการตั้งสำรอง
- Limit ID คือ Limit number ที่เป็น Key หลักที่คุมวงเงินทั้งหมด
- Account ID เป็น Account ทั้งหมดที่เปิดอยู่ภายใต้ Limit วงนั้น ๆ อาจเป็นทั้ง Term loan หรือ Revolving product และมีจำนวนเท่าไหร่ก็ได้ ตราบใดที่ยังสามารถ Share limit กันได้อยู่
- Loan type เพื่อบอกว่า Account นี้เป็น Outstanding ประเภท Term loan หรือ Revolving product เพราะมีการคำนวณที่ต่างกัน
- Limit คือวงเงินทั้งหมดที่ใช้ได้
- Outstanding คือยอดเงินของ Account นั้น ๆ ที่เบิกออกมาจาก Limit amount
- Installment คือจำนวนเงินที่ต้องจ่ายในแต่ละงวด สำหรับกลุ่มที่เป็น Revolving product อาจไม่ได้มี Schedule การจ่ายเงินที่ชัดเจน แต่จะมียอด Minimum payment ที่เป็นยอดจ่ายเงินขั้นต่ำมาแทน โดยปกติอาจตั้งเป็นจำนวน ๆ นึง หรือตั้งเป็น % จากยอด Outstanding
- EIR คืออัตราดอกเบี้ยที่คิดบน Outstanding
- Stage เป็นข้อมูลเฉพาะสำหรับ IFRS 9 เท่านั้น เพราะในแต่ละ Stage มีการคำนวณไม่เหมือนกัน ซึ่งรายละเอียดจะอยู่ใน Section ถัดไป
- Limit maturity คือวันจบอายุสัญญาของ Limit
- Account maturity คือวันจบอายุสัญญาของ Account ซึ่งอาจเกิดขึ้นก่อน Limit maturity ได้ แต่ไม่สามารถเกิดหลังจาก Limit maturity ได้
ในการคำนวณ ECL ด้วย Lifetime concept ตาม IFRS 9 เป็นการคำนวณ Amortization ไปจบอายุสัญญา ดังนั้นจึงต้องคำนวณอายุสัญญาที่เหลืออยู่ (Remaining term ) นับจาก Reporting date โดยเป็นการหาส่วนต่างระหว่าง Reporting date กับ Maturity date
Amortization function
เพื่อการคำนวณที่สะดวกมากขึ้น ขอเขียนเป็น Function การหา Outstanding ในเดือนถัดไป (Next balance) หลักการคำนวณคือการนำ Outstanding บวกด้วยดอกเบี้ยที่เกิดบน Outstanding และลบด้วย Installment ที่จ่ายเข้ามา การคำนวณแบบนี้จึงเป็นการตัดรับรู้ดอกเบี้ยก่อน แล้วถึงลดเงินต้นทีหลัง
เมื่อได้การคำนวณหา Next balance แล้วสามารถใช้ Function นั้น เพื่อเขียนเป็น Amortization function AMT()
ได้ ให้การคำนวณเป็นแบบ Truncate และแบ่งการคำนวณแยกตาม Stage ของแต่ละ Loan โดยการอธิบายการทำงานของ Function AMT()
อาจต้องตัด Code ออกเป็น Chunk เพื่อให้อธิบายได้ชัดเจนมากขึ้น (ระวังเรื่อง Indent ให้ดี)
def AMT(inputData, stage, tenor, amortization = []):
# Get amortization parameters
rate = inputData['EIR'].values[0]
payment = inputData['Installment'].values[0]
amount = inputData['Outstanding'].values[0]
amortization = [amount] #Get outstanding at reporting date
Define function และรับ Parameters ได้แก่
inputData
: DataFrame ที่เป็นตัดเป็น 1 Row จากข้อมูลที่เดือน Reporting datestage
: เป็นตัวแปรใช้สร้างเงื่อนไขtenor
: เป็นตัวแปรใช้สร้างเงื่อนไขamortization = []
: เป็น List ว่างเพื่อเก็บผลลัพธ์จากการคำนวณ
ดึงตัวแปรที่จำเป็นในการคำนวณ Amortization มาจาก inputData
ได้จาก rate, payment
และ amount
จากนั้นเก็บ [amount]
แรกไว้เป็นสมาชิกตัวแรกใน List amortization
เพราะให้ Reporting month เป็นข้อมูลตั้งต้น ดังนั้น Outstanding จึงยังไม่ต้องหักด้วยเงินที่จ่ายเข้ามา (เริ่มหักเดือนถัดไป)
if amount - payment <= 0:
inputData['DiscountTime'] = 1
return inputData
เงื่อนไขแรกที่ต้องตรวจสอบก่อนเริ่ม Amortization คือดูว่า amount
(Outstanding) ที่ Reporting date มีค่า “น้อยกว่า” payment
(Installment) หรือไม่ เพราะถ้าน้อยกว่าหมายความว่าที่ Reporting date นั้นจะเป็นเดือนสุดท้ายที่ปรากฎ Outstanding ยอดนี้ หลังจากหักลบกับเงินจ่ายคืนเข้ามา ทำให้เดือนถัดไปต้องไม่มี Outstanding นี้อยู่แล้ว ดังนั้นข้อมูล Loan นี้จึงไม่ต้องผ่าน Amortization processes
else:
if stage == 1 and tenor > 12:
for _ in range(11):
amount = balances(rate, payment, amount)
if amount <= 0:
continue #Remove negative payment at last outstanding
amortization.append(amount)
# Create new payment array
newPayment = np.repeat(
payment,
len(amortization)
)
ตามมาตรฐานของ IFRS 9 ต้องมีการคำนวณ ECL ที่แตกต่างกันในแต่ละ Stage โดยที่ Stage 1 มีการคำนวณ ECL ที่ 12 เดือน และ Stage 2 มีการคำนวณ ECL ไปจนจบอายุสัญญา (Lifetime concept) ทำให้การ Amortization มีความแตกต่างกัน เมื่อประกอบกับ Truncate concept ยิ่งทำให้เกิดกรณีแยกย่อยลงไปอีก
กรณีแรกคือ Loan ที่อยู่ Stage 1 และมี Remaining term มากกว่า 12 เดือน Loan นี้ต้อง Amortize ทั้งหมด 12 เดือนเท่านั้น และสร้างเป็น Payment array ตามจำนวนเดือนที่ Amortize ไปเท่านั้น โดยที่ในกรณีปกติ payment
คือ Installment เท่ากับที่แสดงอยู่ในข้อมูล
if len(amortization) < 12:
newPayment[-1] = amortization[-1]
แต่ในกรณีที่สองที่เป็น Loan stage 1 สามารถปิดสัญญาจบได้ก่อน 12 เดือน Amortization จะโดนคิดตามจำนวนเดือนจริงที่เกิดขึ้น ไม่จำเป็นต้อง 12 เดือนแม้ว่าเป็น Stage 1 ก็ตาม สิ่งที่ต้องแก้คือ payment
ที่เดือนสุดท้าย ต้องมีค่าเท่ากับ amount
ที่เดือนสุดท้ายเช่นกัน จึงสามารถปิดบัญชีได้
else:
for _ in range(tenor - 1):
amount = balances(rate, payment, amount)
if amount <= 0:
continue #Remove negative payment at last outstanding
amortization.append(amount)
# Create new payment array
newPayment = np.repeat(
payment,
len(amortization)
)
newPayment[-1] = amortization[-1]
เมื่อคิด Loan ที่เป็น Stage 1 ทั้งหมดแล้ว ต่อมาคือการคิด Loan stage 2 ซึ่งเป็น Lifetime concept ให้ Amortize ไปจนตลอดอายุสัญญา (Remaining term) ที่เหลืออยู่ โดยต้องไม่ลืมว่าข้อมูลที่ Reporting data ถึงเป็นข้อมูล Outstanding เดือนแรก ดังนั้นต้อง range(tenor-1)
และในกรณีที่จบสัญญาก่อน Remaining term ที่เหลืออยู่ Payment array สุดท้ายต้องแก้ให้มีค่าเท่ากับ amount จึงสามารถปิดบัญชีได้
# To DataFrame
scheduleTable = pd.DataFrame(
np.repeat(
inputData.values,
len(amortization),
axis = 0
),
columns = inputData.columns
)
scheduleTable['Outstanding'] = amortization
scheduleTable['Installment'] = newPayment
scheduleTable['DiscountTime'] = scheduleTable.index + 1
return scheduleTable
นำผลลัพธ์ Amortization ทั้งหมดที่คำนวณได้เปลี่ยนเป็น DataFrame โดยที่ข้อมูลเก็บเป็น Long table format มี Outstanding ที่ลดลงไปเรื่อย ๆ ตามเดือน (Discount time) ที่เพิ่มขึ้น และมี Installment ใหม่ตาม Payment ที่คำนวณออกมา
ก่อนนำไปคิด ECL จริง ๆ ขอ Plot แต่ละเคสเท่าที่มีจากข้อมูลเป็นตัวอย่างหลาย ๆ กรณี เพื่อให้เห็นภาพการคำนวณมากขึ้น
Term loan: Case 1
Loan account ที่ Stage 1 และมี Remaining term จบที่ 13 เดือน ดังนั้นจึงคำนวณ Amortization ทั้งหมด 12 เดือนเท่านั้น
Term loan: Case 2
Loan account ที่ Stage 1 และมี Remaining term เหลือทั้งหมด 8 เดือน ดังนั้นจึงคำนวณ Amortization ทั้งหมดเพียง 8 เดือนเท่านั้น แม้ว่าจะอยู่ Stage 1 ก็ไม่จำเป็นต้องคำนวณให้ครบ 12 เดือน เพราะอายุสัญญาเหลือสั้นกว่า ให้คำนวณตามจริง โดยที่ ณ เดือนที่ 8 ต้องจ่ายคืนเงินต้นพร้อมดอกเบี้ยทั้งหมด Installment เดือนที่ 8 จึงมียอดสูงขึ้นมา
Term loan: Case 3
Loan account ที่ Stage 1 และมี Remaining term เหลือทั้งหมด 21 เดือน แต่ Loan นี้สามารถปิดสัญญาก่อนได้ ดังนั้นจึงคำนวณ Amortization ทั้งหมดตามจริง ในที่นี้คือ 4 เดือน ไม่จำเป็นต้องคำนวณให้ตาม Remaining term โดยที่ ณ เดือนสุดท้าย Installment ทั้งหมดจะโดนหักออกจากยอดหนี้ทั้งหมดเช่นกัน
Term loan: Case 4
Loan account ที่ Stage 1 และมี Remaining term เหลือทั้งหมด 12 เดือน ดังนั้นจึงคำนวณ Amortization ทั้งหมดเพียง 12 เดือน หากไม่สามารถจบสัญญาได้ภายใน 12 เดือน Installment งวดสุดท้ายต้องจ่ายคืนเงินต้นพร้อมดอกเบี้ยทั้งหมด (คล้ายกับกรณีที่ 2)
Term loan: Case 5
Loan account ที่ Stage 2 และมี Remaining term เหลือทั้งหมด 43 เดือน ดังนั้นจึงคำนวณ Amortization ไปจนถึง Lifetime หากสามารถจบสัญญาได้ก่อน Remaining term ให้คำนวณ Amortization ตาม Term ที่เกิดขึ้นจริง
Term loan: Case 6
Loan account ที่ Stage 2 และมี Remaining term เหลือทั้งหมด 48 เดือน ดังนั้นจึงคำนวณ Amortization ไปจนถึง Lifetime หากสามารถจบสัญญาได้ก่อน Remaining term ให้คำนวณ Amortization ตาม Term ที่เกิดขึ้นจริง
Revolving product : Case 1
ก่อนดูตัวอย่างของ Revolving product ต้องสร้าง Assumption เพิ่มเติมให้สิ่งที่ขาดไปคือ Installment โดยส่วนมากแล้วใน Revolving product อาจไม่ต้องจ่ายค่างวดเต็มจำนวน แต่มี Option ให้จ่ายเป็น Minimum payment ซึ่ง Assume ว่าเป็น 2% ของยอดหนี้
Loan account ที่ Stage 1 และมี Remaining term เหลือทั้งหมด 36 เดือน ดังนั้นจึงคำนวณ Amortization ทั้งหมด 12 เดือนเท่านั้น
Revolving product : Case 2
Loan account ที่ Stage 2 และมี Remaining term เหลือเพียง 3 เดือน ดังนั้นจึงคำนวณ Amortization ตาม Term ที่เกิดขึ้นจริง หากไม่สามารถจบสัญญาได้ภายใน 3 เดือน Installment งวดสุดท้ายต้องจ่ายคืนเงินต้นพร้อมดอกเบี้ยทั้งหมด
Revolving product : Case 3
Loan account ที่ Stage 2 และมี Remaining term เหลือทั้งหมด 39 เดือน ดังนั้นจึงคำนวณ Amortization ไปจนถึง Lifetime หากไม่สามารถจบสัญญาได้ภายใน 39 เดือน Installment งวดสุดท้ายต้องจ่ายคืนเงินต้นพร้อมดอกเบี้ยทั้งหมด
Revolving product : Case 4
เพื่อให้เห็นตัวอย่างของ Revolving product มากขึ้น ขอเปลี่ยน Minimum payment เป็น 5% ของยอดหนี้
Loan account ที่ Stage 2 และมี Remaining term เหลือทั้งหมด 39 เดือน ดังนั้นจึงคำนวณ Amortization ไปจนถึง Lifetime หากสามารถจบสัญญาได้ก่อน Remaining term ให้คำนวณ Amortization ตาม Term ที่เกิดขึ้นจริง
Exposure At Default
จาก Section ก่อนหน้านี้ได้แสดงตัวอย่างการ Amortization ของแต่ละ Loan account ไปแล้ว ต่อมาในการคำนวณ EAD หรือ Exposure At Default ของกลุ่ม Hybrid loan ต้องมีขั้นตอนเพิ่มเติม เนื่องจากวงเงิน (Limit) สามารถแชร์ข้าม Account กันได้ ซึ่งมีผลต่อโอกาสเบิกเพิ่มของทั้ง Limit นั้น
Available limit
จากตัวอย่างเดิมแต่เพิ่มจำนวนเงินที่แทนยอดหนี้และวงเงิน เพื่อการอธิบายที่ชัดเจนมากขึ้น ที่เดือนที่ 1 มี Accounts ภายใต้ Limit เดียวกันทั้งหมด 3 Accounts มีวงเงินทั้งหมด 100 บาท และมียอดหนี้ 25 บาท 25 บาท และ 10 บาท ตามลำดับ ดังนั้นจึงเหลือวงเงินที่สามารถใช้จ่ายได้ 40 บาท
เมื่อ Amortization ผ่านไป 1 เดือน ยอดหนี้ทั้ง 3 ต่างมียอดการจ่ายเงินคืนเข้ามาแตกต่างกันไป แต่จำนวนเงินที่จ่ายเข้ามา สามารถนำกลับไปคิดเป็นวงเงินที่สามารถใช้จ่ายได้อีก เช่นมีเงินจ่ายเข้ามา 3 บาท, 3 บาท และ 6 บาท ตามลำดับ ทำให้ยอดหนี้ลดลงเหลือ 22 บาท 22 บาท และ 4 บาท ตามลำดับ ดังนั้นวงเงินที่สามารถใช้จ่ายได้จึงเพิ่มขึ้นเป็น 52 บาท เป็นต้น แต่ Availiable limit หลักจากที่บวก Installment ต้องไม่เกิน Limit amount ที่ Reporting date
โดย Process การคำนวณอธิบายเป็น Diagram ได้ตามด้านล่าง
Credit Conversion Factor (CCF)
เขียนมาถึงตรงนี้อาจเกิดคำถามขึ้นมาว่า ทำไมต้องบวกเพิ่มวงเงินจากเงินที่ได้รับเข้ามา การที่จะตอบคำถามนี้ได้จำเป็นต้องเอาเนื้อหาของ Credit risk เข้ามาเกี่ยวข้องเล็กน้อย สาเหตุเป็นเพราะเมื่อลูกหนี้ สามารถใช้เงินภายใต้ Limit เพิ่มได้ ความเสี่ยงลูกหนี้ย่อมเกิดขึ้นตาม ใน IFRS 9 ความเสี่ยงนั้นต้องครอบคลุมไปถึงเงินที่ลูกหนี้ยังไม่ได้ใช้ แต่มีโอกาสใช้ด้วยเช่นกัน
ดังนั้นจึงมี Credit Conversion Factor หรือ CCF Model เพื่อเป็นการ Estimate ว่าโอกาสที่ลูกหนี้จะเบิกเงินใช้เพิ่มมีเป็นเท่าไหร่ เงินที่มีโอกาสเบิกใช้เพิ่มนี้ ต้องถูกบริหารความเสี่ยงด้วยเช่นกัน
เพราะฉะนั้นการที่บวกเงินจ่ายเข้ามาเข้าไปในวงเงิน เพื่อเป็นการสะท้อนความเป็นจริงให้มากที่สุด และป้องกันการ Underestimate ในด้านการตั้งสำรอง
EAD Calculation
จากเนื้อหาที่ได้เขียนอธิบายมาจนถึงตอนนี้ Code ด้านบนเป็นผลรวมของเนื้อหาทั้งหมด ซึ่งคงไม่จำเป็นต้องอธิบายอะไรเพิ่มเติมแล้ว หลักการทั้งหมดของ Code ชุดนี้คือการ Amortization ในแต่ละ Account (Account level) แล้ว Aggregate ขึ้นมาเป็นระดับ Limit (Limit level) โดยข้อมูลที่เป็นจำนวนเงิน Amount สามารถหาผลบวกกันได้ตรง ๆ แต่ข้อมูลที่เป็น Discount rate ให้คำนวณด้วยการ Weighted average ด้วย Outstanding เพื่อกระจาย Effect ตาม Portion
สำหรับการแสดงผลลัพธ์จำเป็นต้อง Assume ค่า CCF ขึ้นมา 1 ค่า เพื่อให้เห็นการเคลื่อนไหวของ Available limit และโอกาสที่จะเบิกเพิ่มผ่านค่า CCF ผลรวมสุดท้ายคือ Total EAD ทั้งหมดที่ต้องใช้คำนวณการตั้งสำรอง
Result: Stage 1
Loan limit ที่ Stage 1 ประกอบไปด้วย Term loan และ Revolving product สังเกตที่เดือนที่ 8 มีบาง Account ที่ต้องปิดสัญญาและต้องจ่ายคืนหนี้ทั้งหมด ทำให้เส้น Amortization ลดลงค่อนข้างเร็วในเดือนถัดไป
Result: Stage 2
Loan limit ที่ Stage 2 ที่ไม่มี Available limit เหลือแล้วที่ Reporting date แต่เมื่อมีเงินเข้าจาก Amortization ในเดือนถัด ๆ ไป ทำให้ Available limit และ Drawn portion ค่อย ๆ เพิ่มขึ้น จนไปถึงที่จุด ๆ นึงที่ Available limit ไม่สามารถเพิ่มได้เกินกว่า Limit amount แล้ว เดือนหลังจากนั้นจึงเป็นค่าคงที่
Result: Stage 2
Loan limit ที่ Stage 2 ที่ประกอบด้วย Revolving product เพียงอย่างเดียว โดยที่ไม่มี Term loan สังเกตได้ว่า Amortization จะเป็นขั้นบันได เพราะการจ่ายเงินด้วย Minimum payment ไม่สามารถทำให้ยอดหนี้หมดก่อนอายุสัญญาได้
Result: Stage 3
สุดท้ายเป็น Loan limit ที่ Stage 3 ไม่จำเป็นต้องมีการ Amortization เพราะ Loan ถือว่าเป็น Impair asset ไปแล้ว สามารถใช้ Availiable limit คูณด้วย CCF และบวกกับยอดหนี้ทั้งหมดที่ Reporting date เพื่อใช้เป็น EAD ได้เลยทันที
Conclusion
ทั้งหมดนี้เป็นรายละเอียดของการคิด EAD สำหรับการทำ ECL ในกลุ่มสินเชื่อ Hybrid loan เนื่องจาก Code ที่ค่อนข้างยาว จำเป็นต้องตัดมาเป็น Chunk เพื่อใช้ประกอบการอธิบายใน Blog ตอนนี้ ดังนั้นเพื่อความต่อเนื่อง ขอแนะนำให้ดูรายละเอียดของ Code ทั้งหมดใน Colab notebook ที่ใส่ไว้ใน GitHub ด้านล่างแทน