MinAI - Về trang chủ
Hướng dẫn
4/132 giờ
Đang tải...

Credit Risk Analysis

Phân tích rủi ro tín dụng: Credit Scoring, Default Rate, và các mô hình đánh giá

0

🎯 Mục tiêu bài học

TB5 min
Sau bài học này, bạn sẽ:
  • Phân tích default rate theo các segment khác nhau (credit score, income, product)
  • Hiểu approval rate và các yếu tố ảnh hưởng đến quyết định cho vay
  • Tính và diễn giải WOE (Weight of Evidence)IV (Information Value)
  • Xây dựng credit risk report cơ bản bằng SQL
📋 Thông tin bài học
Thông tinChi tiết
⏱️ Thời lượng2 giờ
📖 Chủ đề chínhDefault Rate, Credit Score Analysis, WOE/IV, Risk Segmentation
💡 Kiến thức cần cóBài 03 — Banking KPIs, SQL cơ bản
🎯 OutputCredit Risk Analysis Report
1

📖 Thuật ngữ quan trọng

TB5 min
Thuật ngữTiếng ViệtMô tả
DefaultVỡ nợKhách hàng không trả được nợ (thường DPD > 90 ngày)
Default RateTỷ lệ vỡ nợ% khoản vay bị vỡ nợ trên tổng số khoản vay
PD (Probability of Default)Xác suất vỡ nợXác suất KH vỡ nợ trong 12 tháng
LGD (Loss Given Default)Tổn thất khi vỡ nợ% tổn thất trên số tiền vay khi KH vỡ nợ
EAD (Exposure at Default)Dư nợ khi vỡ nợSố tiền ngân hàng đang cho KH vay khi vỡ nợ
Expected LossTổn thất dự kiếnEL = PD × LGD × EAD
WOEWeight of EvidenceĐo sức mạnh phân biệt good/bad của biến
IVInformation ValueĐo tổng sức mạnh dự đoán của biến
ScorecardThẻ điểm tín dụngMô hình chấm điểm dựa trên nhiều biến
Cut-off ScoreĐiểm cắtNgưỡng credit score để approve/reject

Checkpoint

Expected Loss = PD × LGD × EAD — công thức cốt lõi của credit risk. PD dự đoán bằng credit score. WOE đo sức phân biệt good/bad của từng biến. IV đánh giá biến nào tốt nhất để đưa vào mô hình: IV > 0.3 = Strong, 0.1-0.3 = Medium, < 0.02 = Useless.

2

📊 Phân tích Default Rate — SQL

TB5 min

Default Rate tổng thể

SQL
1-- 1. Default Rate tổng thể
2SELECT
3 COUNT(*) AS total_loans,
4 SUM(default_flag) AS total_defaults,
5 ROUND(AVG(default_flag) * 100, 2) AS default_rate_pct
6FROM fact_loan_application
7WHERE status = 'Approved';

Default Rate theo Credit Score Band

SQL
1-- 2. Default Rate theo credit score band
2SELECT
3 CASE
4 WHEN credit_score >= 750 THEN '750+ (Excellent)'
5 WHEN credit_score >= 700 THEN '700-749 (Good)'
6 WHEN credit_score >= 650 THEN '650-699 (Fair)'
7 WHEN credit_score >= 600 THEN '600-649 (Below Avg)'
8 WHEN credit_score >= 550 THEN '550-599 (Poor)'
9 ELSE '<550 (Very Poor)'
10 END AS score_band,
11 COUNT(*) AS total_loans,
12 SUM(default_flag) AS defaults,
13 ROUND(AVG(default_flag) * 100, 2) AS default_rate_pct,
14 ROUND(AVG(loan_amount), 0) AS avg_loan_amount
15FROM fact_loan_application
16WHERE status = 'Approved'
17GROUP BY
18 CASE
19 WHEN credit_score >= 750 THEN '750+ (Excellent)'
20 WHEN credit_score >= 700 THEN '700-749 (Good)'
21 WHEN credit_score >= 650 THEN '650-699 (Fair)'
22 WHEN credit_score >= 600 THEN '600-649 (Below Avg)'
23 WHEN credit_score >= 550 THEN '550-599 (Poor)'
24 ELSE '<550 (Very Poor)'
25 END
26ORDER BY default_rate_pct;

Default Rate theo DTI Ratio

SQL
1-- 3. Default Rate theo DTI bands
2SELECT
3 CASE
4 WHEN dti_ratio < 20 THEN '<20% (Low)'
5 WHEN dti_ratio < 35 THEN '20-35% (Moderate)'
6 WHEN dti_ratio < 43 THEN '35-43% (High)'
7 WHEN dti_ratio < 50 THEN '43-50% (Very High)'
8 ELSE '>50% (Extreme)'
9 END AS dti_band,
10 COUNT(*) AS total_loans,
11 SUM(default_flag) AS defaults,
12 ROUND(AVG(default_flag) * 100, 2) AS default_rate_pct,
13 ROUND(AVG(credit_score), 0) AS avg_credit_score
14FROM fact_loan_application
15WHERE status = 'Approved'
16GROUP BY
17 CASE
18 WHEN dti_ratio < 20 THEN '<20% (Low)'
19 WHEN dti_ratio < 35 THEN '20-35% (Moderate)'
20 WHEN dti_ratio < 43 THEN '35-43% (High)'
21 WHEN dti_ratio < 50 THEN '43-50% (Very High)'
22 ELSE '>50% (Extreme)'
23 END
24ORDER BY default_rate_pct;
Insight kỳ vọng

Bạn sẽ thấy mối quan hệ nghịch đảo rõ rệt giữa credit score và default rate, và mối quan hệ thuận giữa DTI ratio và default rate. Đây là nền tảng của mọi mô hình credit scoring.

3

🔍 Phân tích theo Product & Customer Profile

TB5 min

Default Rate theo sản phẩm

SQL
1-- 4. Default Rate theo product type
2SELECT
3 p.product_type,
4 p.product_name,
5 COUNT(*) AS total_loans,
6 SUM(l.default_flag) AS defaults,
7 ROUND(AVG(l.default_flag) * 100, 2) AS default_rate_pct,
8 ROUND(AVG(l.loan_amount), 0) AS avg_loan_amount,
9 ROUND(AVG(l.interest_rate), 2) AS avg_interest_rate
10FROM fact_loan_application l
11JOIN dim_product p ON l.product_id = p.product_id
12WHERE l.status = 'Approved'
13GROUP BY p.product_type, p.product_name
14ORDER BY default_rate_pct DESC;

Default Rate theo Customer Profile

SQL
1-- 5. Default Rate theo thu nhập và loại hình công việc
2SELECT
3 c.employment_type,
4 CASE
5 WHEN c.monthly_income < 10000000 THEN '<10M'
6 WHEN c.monthly_income < 20000000 THEN '10-20M'
7 WHEN c.monthly_income < 35000000 THEN '20-35M'
8 WHEN c.monthly_income < 50000000 THEN '35-50M'
9 ELSE '>50M'
10 END AS income_band,
11 COUNT(*) AS total_loans,
12 SUM(l.default_flag) AS defaults,
13 ROUND(AVG(l.default_flag) * 100, 2) AS default_rate_pct
14FROM fact_loan_application l
15JOIN dim_customer c ON l.customer_id = c.customer_id
16WHERE l.status = 'Approved'
17GROUP BY c.employment_type,
18 CASE
19 WHEN c.monthly_income < 10000000 THEN '<10M'
20 WHEN c.monthly_income < 20000000 THEN '10-20M'
21 WHEN c.monthly_income < 35000000 THEN '20-35M'
22 WHEN c.monthly_income < 50000000 THEN '35-50M'
23 ELSE '>50M'
24 END
25ORDER BY default_rate_pct DESC;

Approval Rate Analysis

SQL
1-- 6. Approval Rate theo credit score
2SELECT
3 CASE
4 WHEN credit_score >= 700 THEN '700+ (Good-Excellent)'
5 WHEN credit_score >= 600 THEN '600-699 (Fair-Below)'
6 ELSE '<600 (Poor)'
7 END AS score_group,
8 COUNT(*) AS total_applications,
9 SUM(CASE WHEN status = 'Approved' THEN 1 ELSE 0 END) AS approved,
10 SUM(CASE WHEN status = 'Rejected' THEN 1 ELSE 0 END) AS rejected,
11 ROUND(AVG(CASE WHEN status = 'Approved' THEN 1.0 ELSE 0 END) * 100, 1) AS approval_rate_pct
12FROM fact_loan_application
13GROUP BY
14 CASE
15 WHEN credit_score >= 700 THEN '700+ (Good-Excellent)'
16 WHEN credit_score >= 600 THEN '600-699 (Fair-Below)'
17 ELSE '<600 (Poor)'
18 END
19ORDER BY approval_rate_pct DESC;
4

⚖️ WOE & IV — Sức mạnh dự đoán của biến

TB5 min

WOE (Weight of Evidence)

WOEi=ln(Distribution of GoodiDistribution of Badi)WOE_i = \ln\left(\frac{\text{Distribution of Good}_i}{\text{Distribution of Bad}_i}\right)

Trong đó:

  • Goodi\text{Good}_i = % khách hàng không default trong bin ii
  • Badi\text{Bad}_i = % khách hàng default trong bin ii

IV (Information Value)

IV=i=1n(GoodiBadi)×WOEiIV = \sum_{i=1}^{n} (\text{Good}_i - \text{Bad}_i) \times WOE_i

Bảng đánh giá IV

IV RangeSức mạnh dự đoánQuyết định
< 0.02UselessLoại bỏ
0.02 - 0.1WeakCần kết hợp
0.1 - 0.3MediumSử dụng được
0.3 - 0.5StrongBiến tốt
> 0.5SuspiciousKiểm tra overfitting

Tính WOE/IV bằng SQL

SQL
1-- 7. WOE/IV cho Credit Score bands
2WITH score_bands AS (
3 SELECT
4 CASE
5 WHEN credit_score >= 750 THEN '1_750+'
6 WHEN credit_score >= 700 THEN '2_700-749'
7 WHEN credit_score >= 650 THEN '3_650-699'
8 WHEN credit_score >= 600 THEN '4_600-649'
9 WHEN credit_score >= 550 THEN '5_550-599'
10 ELSE '6_<550'
11 END AS score_band,
12 default_flag
13 FROM fact_loan_application
14 WHERE status = 'Approved'
15),
16totals AS (
17 SELECT
18 SUM(CASE WHEN default_flag = 0 THEN 1 ELSE 0 END) AS total_good,
19 SUM(CASE WHEN default_flag = 1 THEN 1 ELSE 0 END) AS total_bad
20 FROM score_bands
21),
22woe_calc AS (
23 SELECT
24 s.score_band,
25 COUNT(*) AS total,
26 SUM(CASE WHEN default_flag = 0 THEN 1 ELSE 0 END) AS good,
27 SUM(CASE WHEN default_flag = 1 THEN 1 ELSE 0 END) AS bad,
28 ROUND(SUM(CASE WHEN default_flag = 0 THEN 1.0 ELSE 0 END) / t.total_good, 4) AS dist_good,
29 ROUND(SUM(CASE WHEN default_flag = 1 THEN 1.0 ELSE 0 END) / t.total_bad, 4) AS dist_bad
30 FROM score_bands s
31 CROSS JOIN totals t
32 GROUP BY s.score_band, t.total_good, t.total_bad
33)
34SELECT
35 score_band,
36 total,
37 good,
38 bad,
39 dist_good,
40 dist_bad,
41 ROUND(LOG(dist_good / NULLIF(dist_bad, 0)), 4) AS woe,
42 ROUND((dist_good - dist_bad) * LOG(dist_good / NULLIF(dist_bad, 0)), 4) AS iv_component
43FROM woe_calc
44ORDER BY score_band;
Ứng dụng WOE/IV

WOE/IV là công cụ chuẩn trong ngành ngân hàng để:

  1. Feature selection: Chọn biến có IV > 0.1 cho mô hình
  2. Binning: Gộp các bin có WOE tương tự
  3. Scorecard: Convert WOE thành điểm trên thẻ chấm điểm
  4. Monitoring: Theo dõi Population Stability Index (PSI) qua thời gian

Checkpoint

Default Rate phân tích theo nhiều chiều: Credit Score (nghịch đảo), DTI (thuận), Product Type (unsecured > secured), Income (nghịch đảo). WOE cho biết sức phân biệt good/bad của từng bin. IV tổng hợp sức dự đoán: > 0.3 là biến strong. Trong banking, credit_score và dti_ratio thường có IV cao nhất.

5

📋 Tổng kết

TB5 min

Kiến thức đã học

Chủ đềNội dung chính
Default Rate AnalysisPhân tích tỷ lệ vỡ nợ theo nhiều chiều
Credit Score BandsExcellent/Good/Fair/Poor/Very Poor
DTI AnalysisTỷ lệ nợ/thu nhập và ngưỡng rủi ro
Product RiskSo sánh rủi ro giữa các loại sản phẩm
WOE/IVWeight of Evidence, Information Value
Feature SelectionChọn biến dự đoán cho credit scoring model

Key Takeaways

  1. Default Rate là metric trung tâm — phân tích đa chiều để tìm root cause
  2. WOE dương = rủi ro thấp hơn trung bình, WOE âm = rủi ro cao hơn
  3. IV > 0.3 là biến có predictive power mạnh cho credit scoring
  4. Unsecured loans luôn có default rate cao hơn secured loans

Câu hỏi tự kiểm tra

  1. Credit Score band nào có default rate cao nhất trong dataset?
  2. WOE dương cho một bin nghĩa là gì?
  3. IV > 0.3 cho biết điều gì về biến phân tích?
  4. Tại sao unsecured loans có rủi ro cao hơn secured loans?

Bài tiếp theo: Loan Portfolio Analysis →

🎉 Tuyệt vời! Bạn đã thành thạo Credit Risk Analysis!

Nhớ: Default Rate + WOE/IV = bộ công cụ cốt lõi cho credit risk. Mọi ngân hàng đều cần DA biết phân tích rủi ro tín dụng!