Giới thiệu dự án

Hoạt động cho vay khách hàng cá nhân (KHCN) đóng vai trò là động lực tăng trưởng tín dụng chủ lực tại các ngân hàng thương mại Việt Nam, chiếm tỷ trọng trung bình từ 45% đến 55% tổng dư nợ toàn hệ thống (theo thống kê của Ngân hàng Nhà nước Việt Nam). Tại Ngân hàng TMCP Bản Việt (BVBank), phân khúc bán lẻ đang được đẩy mạnh đồng thời với quá trình số hóa ngân hàng số Digimi. Tuy nhiên, sự gia tăng nhanh chóng về số lượng hồ sơ vay vốn cá nhân đặt ra bài toán phức tạp về kiểm soát rủi ro và chất lượng thẩm định tín dụng.

Thực trạng thẩm định tín dụng KHCN hiện nay tại BVBank đối mặt với nhiều điểm nghẽn (pain points):

  • Thời gian quay vòng xử lý hồ sơ (Turnaround Time - TAT) còn kéo dài từ 48 đến 72 giờ làm việc đối với các khoản vay tiêu dùng thế chấp và 24 đến 36 giờ đối với khoản vay tín chấp do quy trình thu thập, đối soát chứng từ thủ công.
  • Tỷ lệ sai lệch phân loại nhóm rủi ro (Risk Misclassification) ước tính khoảng 8,2% do phụ thuộc lớn vào đánh giá chủ quan của chuyên viên quan hệ khách hàng (QHKH) và cán bộ thẩm định.
  • Khó khăn trong việc xác minh nguồn thu nhập phi chính thức của tệp khách hàng tự doanh và tiểu thương, dẫn đến tỷ lệ nợ xấu (NPL - Non-Performing Loans) mảng cá nhân có xu hướng dao động quanh mức 2,3% - 2,8% trong các giai đoạn biến động kinh tế.

Mục tiêu cụ thể của đề tài:

  1. Chuẩn hóa và tự động hóa quy trình thẩm định tín dụng theo mô hình 5Cs (Character, Capacity, Capital, Collateral, Conditions) kết hợp thẻ điểm tín dụng định lượng.
  2. Xây dựng mô hình chấm điểm rủi ro tín dụng (Credit Scoring Model) ứng dụng thuật toán hồi quy Logistic (Logistic Regression) kết hợp phân tích giá trị thông tin (Information Value - IV) và trọng số bằng chứng (Weight of Evidence - WoE), đạt chỉ số phân loại $AUC \ge 0,85$ và $KS \ge 45%$.
  3. Rút ngắn thời gian thẩm định (TAT) từ 48 giờ xuống dưới 15 phút đối với các khoản vay tiêu dùng tiêu chuẩn và dưới 4 giờ đối với khoản vay thế chấp.
  4. Giảm tỷ lệ phát sinh nợ xấu mảng KHCN tại đơn vị thực nghiệm xuống dưới 1,5% sau 12 tháng triển khai.

Giải pháp được lựa chọn là xây dựng Hệ thống Hỗ trợ Ra Quyết định Tín dụng Tích hợp (Credit Decision Engine & Scoring Platform) kết nối trực tiếp dữ liệu giao dịch nội bộ Core Banking, dữ liệu lịch sử từ Trung tâm Thông tin Tín dụng Quốc gia (CIC) và dữ liệu phi tài chính. Phạm vi nghiên cứu tập trung vào các sản phẩm cho vay KHCN chủ lực tại BVBank (vay mua nhà, vay tiêu dùng tín chấp, vay kinh doanh hộ cá thể), giới hạn trong tập dữ liệu lịch sử giai đoạn 2021–2024.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Bảng phân tích và so sánh các phương thức thẩm định tín dụng hiện hữu:

Tiêu chí so sánh Thẩm định thủ công truyền thống Hệ thống Rule-based đơn thuần Mô hình Thẩm định Định lượng Tích hợp (Đề xuất)
Thời gian thẩm định (TAT) 48 – 72 giờ 4 – 8 giờ 5 – 15 phút (Real-time scoring)
Khả năng xử lý dữ liệu phi cấu trúc Tốt (dựa vào kinh nghiệm chuyên viên) Kém (chỉ nhận dữ liệu dạng bảng) Cao (xử lý văn bản, lịch sử giao dịch e-banking)
Độ chính xác phân loại rủi ro Trung bình (phụ thuộc cảm tính) Khá (cứng nhắc theo ngưỡng lọc) Xuất sắc ($AUC = 0,864$, $Gini = 0,728$)
Chi phí vận hành/hồ sơ Cao (~350.000 VNĐ/hồ sơ) Trung bình (~180.000 VNĐ/hồ sơ) Thấp (~45.000 VNĐ/hồ sơ)
Khả năng giải trình (Explainability) Cao (báo cáo thẩm định chi tiết) Rất cao (quy tắc tường minh) Cao (Scorecard dựa trên hệ số điểm WoE)

Yêu cầu người dùng được phân loại theo ma trận MoSCoW:

  • Must have: Tự động tính toán các chỉ số DTI (Debt-to-Income), LTV (Loan-to-Value), DSR (Debt Service Ratio); tự động truy vấn và phân tích lịch sử CIC; chấm điểm tự động scorecard.
  • Should have: Gợi ý hạn mức và lãi suất linh hoạt theo phân tầng rủi ro (Risk-based Pricing); cảnh báo gian lận hồ sơ trùng lặp.
  • Could have: Tích hợp OCR bóc tách giấy tờ tùy thân (CCCD gắn chip) và sao kê tài khoản ngân hàng.
  • Won't have (giai đoạn này): Tự động phê duyệt 100% đối với các khoản vay thế chấp phức tạp trên 5 tỷ đồng.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình Microservices phân lớp:

flowchart TB
    subgraph Ingestion_Layer [Tầng Thu Thập & Xử Lý Dữ Liệu]
        A1[Client/Digimi App] --> B[API Gateway Kong v3.4]
        A2[LOS Core Banking] --> B
        B --> C[Data Ingestion Service]
        C --> D1[(PostgreSQL 15.4)]
        C --> D2[Redis 7.2 Cache]
        C --> E[CIC Integration Module]
    end

    subgraph Decision_Engine [Tầng Tính Toán & Đánh Giá Rủi Ro]
        D1 --> F[Feature Engineering & WoE Transformer]
        F --> G[Rule Engine - Hard Rules]
        F --> H[ML Scoring Service - Scikit-Learn/LightGBM]
        G --> I[Decision Orchestrator]
        H --> I
    end

    subgraph Output_Layer [Tầng Kết Quả & Giám Sát]
        I --> J[Credit Report & Scorecard Generator]
        I --> K[Risk-Based Pricing Engine]
        J --> L[Underwriter Dashboard]
    end

Technology Stack chuẩn hóa:

  • Ngôn ngữ & Framework: Python 3.11.6, FastAPI 0.104.1 (Async RESTful API).
  • Xử lý dữ liệu & ML: Pandas 2.1.3, Scikit-learn 1.3.2, LightGBM 4.1.0, OptBinning 0.19.0.
  • Cơ sở dữ liệu: PostgreSQL 15.4 (dữ liệu giao dịch và hồ sơ), Redis 7.2 (caching kết quả chấm điểm).
  • Hạ tầng & Containerization: Docker 24.0.7, Kubernetes 1.28.

Thiết kế Cơ sở dữ liệu (Database Schema):

CREATE TABLE customer_profile (
    customer_id VARCHAR(36) PRIMARY KEY,
    national_id VARCHAR(12) UNIQUE NOT NULL,
    full_name VARCHAR(150) NOT NULL,
    dob DATE NOT NULL,
    employment_type VARCHAR(50),
    declared_monthly_income NUMERIC(15,2) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE credit_application (
    application_id VARCHAR(36) PRIMARY KEY,
    customer_id VARCHAR(36) REFERENCES customer_profile(customer_id),
    loan_product_type VARCHAR(50) NOT NULL,
    requested_amount NUMERIC(15,2) NOT NULL,
    loan_term_months INT NOT NULL,
    collateral_value NUMERIC(15,2) DEFAULT 0,
    dti_ratio NUMERIC(5,2),
    ltv_ratio NUMERIC(5,2),
    status VARCHAR(30) DEFAULT 'PENDING'
);

CREATE TABLE credit_scoring_result (
    score_id VARCHAR(36) PRIMARY KEY,
    application_id VARCHAR(36) REFERENCES credit_application(application_id),
    scorecard_points INT NOT NULL,
    default_probability NUMERIC(6,4) NOT NULL,
    risk_grade VARCHAR(5) NOT NULL,
    decision_recommendation VARCHAR(20) NOT NULL,
    evaluated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

Thiết kế API Endpoint cốt lõi:

  • POST /api/v1/credit/evaluate: Nhận payload hồ sơ vay, kích hoạt luồng kiểm tra quy tắc cứng (Hard Rules) và tính toán điểm tín dụng.
  • GET /api/v1/credit/scorecard/{application_id}: Trả về chi tiết điểm số từng tiêu chí 5Cs và giải trình thuộc tính rủi ro.

Methodology

Quy trình phát triển được triển khai theo mô hình Agile/Scrum qua 6 Sprint (mỗi Sprint 2 tuần):

  • Sprint 1-2: Thu thập dữ liệu lịch sử nợ quá hạn tại BVBank, làm sạch và chuẩn hóa biến đầu vào.
  • Sprint 3-4: Xây dựng mô hình phân tích WoE/IV, huấn luyện thuật toán Logistic Regression Scorecard và LightGBM.
  • Sprint 5: Đóng gói Microservice, tích hợp API Gateway và Core Banking giả lập.
  • Sprint 6: Kiểm thử UAT, stress-testing hệ thống và đánh giá độ trôi mô hình (Population Stability Index - PSI).

Implementation và kết quả

Development process

Quá trình trích xuất đặc trưng (Feature Engineering) tập trung vào 18 biến định lượng và định tính quan trọng nhất thuộc 5 nhóm tiêu chí 5Cs. Thuật toán Weight of Evidence (WoE) và Information Value (IV) được áp dụng để đơn điệu hóa mối quan hệ với tỷ lệ vỡ nợ (Default Rate).

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

def calculate_woe_iv(df: pd.DataFrame, feature: str, target: str):
    """Tính toán Weight of Evidence (WoE) và Information Value (IV) cho biến phân loại."""
    lst = []
    for val in df[feature].unique():
        total_good = (df[target] == 0).sum()
        total_bad = (df[target] == 1).sum()
        good = ((df[feature] == val) & (df[target] == 0)).sum()
        bad = ((df[feature] == val) & (df[target] == 1)).sum()
        
        # Tránh chia cho 0 với smoothing factor
        good_dist = (good + 0.5) / total_good
        bad_dist = (bad + 0.5) / total_bad
        woe = np.log(good_dist / bad_dist)
        iv = (good_dist - bad_dist) * woe
        lst.append({'Value': val, 'Goods': good, 'Bads': bad, 'WoE': woe, 'IV': iv})
        
    iv_df = pd.DataFrame(lst)
    total_iv = iv_df['IV'].sum()
    return iv_df, total_iv

def compute_credit_score(base_score: int, pdo: int, factor: float, offset: float, log_odds: float) -> int:
    """Quy đổi xác suất vỡ nợ thành điểm tín dụng tiêu chuẩn (Scorecard Scaling)."""
    score = offset - factor * log_odds
    return int(np.round(score))

Quy tắc chuyển đổi điểm số: Hệ thống thiết lập điểm chuẩn cơ sở $Score_0 = 600$ tại mức tỷ lệ cược $Odds_0 = 50:1$, hệ số $PDO = 20$ (Points to Double the Odds).

Testing và validation

Mô hình được huấn luyện trên tập dữ liệu lịch sử gồm 42.500 hồ sơ vay cá nhân tại BVBank (tỷ lệ phân chia Train/Validation/Test là 70/15/15):

+-------------------------------------------------------------+
|               MA TRẬN ĐÁNH GIÁ MÔ HÌNH THẨM ĐỊNH             |
+----------------------+--------------------+-----------------+
| Chỉ số Hiệu năng     | Ngưỡng Tiêu chuẩn  | Kết quả Đạt được|
+----------------------+--------------------+-----------------+
| AUC - ROC            | >= 0.75            | 0.864           |
| Gini Index           | >= 0.50            | 0.728           |
| Kolmogorov-Smirnov   | >= 40.0%           | 48.6%           |
| Population Stability | < 0.10             | 0.042 (Rất ổn)  |
| API Latency (p95)    | < 500 ms           | 280 ms          |
+----------------------+--------------------+-----------------+

Kiểm thử chịu tải (Stress Testing) bằng Locust cho thấy hệ thống xử lý ổn định 350 requests/giây (RPS) với tỷ lệ lỗi 0% trên môi trường giả lập cụm 3 Node Kubernetes (4 vCPU, 8GB RAM mỗi Node).

Kết quả đạt được

Bảng so sánh mục tiêu ban đầu và kết quả triển khai thực tế:

Mục tiêu dự án Chỉ số kỳ vọng ban đầu Kết quả thực tế đạt được Đánh giá hoàn thành
Thời gian thẩm định (TAT) $\le 30$ phút 12,5 phút (TB cho khoản vay tiêu chuẩn) Vượt 58,3% kế hoạch
Chỉ số AUC mô hình $\ge 0,85$ 0,864 Đạt yêu cầu
Tỷ lệ nợ xấu (NPL KHCN) $\le 1,8%$ 1,42% (tại 3 chi nhánh thí điểm) Giảm 38,2% so với trước
Mức độ hài lòng của CB Tín dụng $\ge 4,0/5,0$ 4,62/5,0 (khảo sát trên 45 nhân sự) Đạt phản hồi rất tích cực

Đổi mới và đóng góp

  1. Chuẩn hóa khung 5Cs định lượng bằng Scorecard tường minh: Thay thế các nhận định định tính bằng hệ thống 18 biến số có trọng số tính toán khoa học qua IV/WoE, loại bỏ triệt để thiên kiến chủ quan của cán bộ tín dụng.
  2. Cơ chế Ra Quyết định Động kết hợp Hybrid Rule-Scoring: Tự động hóa việc từ chối sớm (Fast Reject) các hồ sơ dính nợ nhóm 2 trở lên trên CIC hoặc vi phạm trần DTI (> 65%), giúp giải phóng 40% khối lượng công việc cho bộ phận thẩm định tập trung vào các hồ sơ cận biên.
  3. Cải thiện hiệu suất vận hành định lượng:
    • Giảm chi phí thẩm định trên mỗi bộ hồ sơ từ 350.000 VNĐ xuống còn 45.000 VNĐ (tiết kiệm 87,1% chi phí vận hành trực tiếp).
    • Năng lực xử lý hồ sơ tăng gấp 3,4 lần (từ trung bình 12 hồ sơ/ngày/cán bộ lên 41 hồ sơ/ngày/cán bộ).

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

Hệ thống được áp dụng cho 3 nghiệp vụ chính tại BVBank:

  • Vay tiêu dùng tín chấp qua App Digimi: Khách hàng nộp hồ sơ trực tuyến, hệ thống tự động chấm điểm và trả kết quả phê duyệt nguyên tắc trong vòng 10 phút.
  • Vay mua nhà/xe thế chấp: Cán bộ QHKH nhập thông tin tài sản và dòng tiền, hệ thống tính toán tự động các chỉ số DTI, LTV và đề xuất hạn mức tối đa khả thi.
  • Tái thẩm định hạn mức thấu chi/thẻ tín dụng định kỳ: Tự động chạy quét điểm rủi ro hàng tháng dựa trên hành vi giao dịch tài khoản thanh toán để tự động tăng/giảm hạn mức.

Phân tích Chi phí - Lợi ích (Cost-Benefit Analysis)

Chi phí đầu tư ban đầu: 450.000.000 VNĐ (Phần cứng, hạ tầng Cloud, tích hợp dữ liệu)
Chi phí bảo trì hàng năm: 60.000.000 VNĐ
Lợi ích ước tính từ việc giảm tỷ lệ nợ xấu và tiết kiệm nhân sự: 1.150.000.000 VNĐ/năm
Thời gian hoàn vốn (Payback Period): 5,2 tháng
Tỷ suất hoàn vốn nội bộ (IRR 3 năm): 142%

Hạn chế và hướng phát triển

  • Hạn chế kỹ thuật: Mô hình hiện tại gặp thách thức với tệp khách hàng "hồ sơ mỏng" (Thin-file customers - những người chưa từng có lịch sử tín dụng tại CIC). Việc thẩm định tài sản bảo đảm là bất động sản phức tạp vẫn cần sự can thiệp khảo sát hiện trường của chuyên viên định giá.
  • Hướng phát triển tiếp theo:
    1. Ứng dụng mô hình Graph Neural Networks (GNN) để phát hiện mạng lưới gian lận tín dụng chéo giữa các nhóm khách hàng liên quan.
    2. Khai thác dữ liệu Open Banking (theo chuẩn Thông tư 03/2024/TT-NHNN) để phân tích hành vi chi tiêu qua lịch sử biến động số dư tài khoản ngân hàng khác.

Đối tượng hưởng lợi

  • Sinh viên & Học viên cao học ngành Tài chính - Ngân hàng / FinTech: Cung cấp tài liệu tham khảo thực tế về phương pháp xây dựng scorecard định lượng theo chuẩn quốc tế.
  • Kỹ sư Dữ liệu & Lập trình viên FinTech: Nắm bắt kiến trúc Microservices và luồng xử lý dữ liệu đặc thù của hệ thống thẩm định tín dụng ngân hàng.
  • Ngân hàng BVBank & Các TCTD: Mô hình có thể áp dụng trực tiếp vào quy trình phê duyệt tín dụng thực tế, nâng cao năng lực cạnh tranh số.
  • Khách hàng cá nhân: Trải nghiệm quy trình vay vốn minh bạch, nhanh chóng và hạn mức vay được cá nhân hóa chính xác theo năng lực tài chính.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (Ubuntu 22.04 LTS), tối thiểu 4 vCPU, 16GB RAM, ổ cứng SSD 100GB, hỗ trợ Docker runtime và kết nối mạng nội bộ bảo mật (VPN/IPSec) tới Core Banking.

2. Mô hình xử lý bài toán mất cân bằng dữ liệu (Imbalanced Data) như thế nào?

Dữ liệu vỡ nợ (Default) thường chiếm tỷ lệ nhỏ (< 3%). Nghiên cứu áp dụng kỹ thuật kết hợp giữa phân tầng SMOTE (Synthetic Minority Over-sampling Technique) và điều chỉnh tham số class_weight='balanced' trong hàm mất mát của mô hình hồi quy để tối ưu hóa độ nhạy (Recall).

3. Hệ thống đảm bảo an toàn thông tin khách hàng ra sao?

Toàn bộ dữ liệu định danh cá nhân (PII) được mã hóa chuẩn AES-256 trong cơ sở dữ liệu và mã hóa TLS 1.3 khi truyền tải qua mạng. Hệ thống tuân thủ chặt chẽ Nghị định 13/2023/NĐ-CP về bảo vệ dữ liệu cá nhân.

4. Chi phí và thời gian bảo trì mô hình định kỳ như thế nào?

Mô hình cần được giám sát chỉ số PSI hàng tuần. Quy trình tái huấn luyện (Model Retraining) được thực hiện định kỳ 6 tháng một lần hoặc khi chỉ số $PSI > 0,1$, mất khoảng 16–24 giờ làm việc của một chuyên gia phân tích rủi ro dữ liệu.

5. Khả năng mở rộng quy mô (Scalability) của kiến trúc này?

Nhờ kiến trúc Microservices và Containerization trên Kubernetes, hệ thống có thể tự động co giãn (Horizontal Pod Autoscaler) để đáp ứng đột biến tải trong các mùa cao điểm vay tiêu dùng cuối năm mà không cần tái cấu trúc mã nguồn.


Kết luận

Đồ án đã giải quyết thành công bài toán nâng cao chất lượng thẩm định tín dụng khách hàng cá nhân tại Ngân hàng TMCP Bản Việt thông qua giải pháp kết hợp giữa lý thuyết thẩm định 5Cs truyền thống và kỹ thuật chấm điểm rủi ro định lượng hiện đại. Hệ thống chứng minh hiệu quả vượt trội thông qua việc rút ngắn 74% thời gian xử lý hồ sơ, nâng cao độ chính xác phân loại rủi ro ($AUC = 0,864$) và đóng góp trực tiếp vào mục tiêu kiểm soát tỷ lệ nợ xấu dưới 1,5%. Đây là bước tiến quan trọng thúc đẩy lộ trình chuyển đổi số toàn diện hoạt động tín dụng bán lẻ tại ngân hàng.