Giới thiệu dự án

  • Context & industry statistics

    • Toàn cầu, Non‑Performing Loan (NPL) ratio của các ngân hàng thương mại trung bình vào năm 2022 đạt 2.9 %; ở Việt Nam, tỷ lệ này dao động 2.2 % – 2.6 % (Ngân hàng Nhà nước, 2022).
    • VIB, một trong những ngân hàng cổ phần lớn nhất, đã giảm NPL từ 2.2 % (2018) xuống 1.5 % (2020), nhưng vẫn đối mặt với rủi ro tín dụng (RRTD) trong bối cảnh tăng trưởng tín dụng nhanh.
  • Problem statement

    • Công tác Kiểm soát nội bộ (KSNB) hoạt động cấp tín dụng tại VIB vẫn còn đứt gãy ở các bước: đánh giá rủi ro, định mức cho vay, giám sát sau giải ngân.
    • Thiếu định lượngtự động hoá dẫn đến thời gian xử lý hồ sơ trung bình 5 ngày, chậm so với chuẩn ngành 2 ngày.
  • Project objectives

    1. Xây dựng hệ thống rủi ro thời gian thực để giảm thời gian duyệt hồ sơ từ 5 ngày xuống ≤2 ngày.
    2. Cải thiện RRTD coverage lên ≥95 % thông qua mô hình điểm tín dụng AI.
    3. Giảm tỷ lệ NPL thêm 0.3 % trong 2 năm tiếp theo.
    4. Đưa ra báo cáo tuân thủ chuẩn COSO‑2013Basel III tự động hoá.
  • Solution approach

    • Áp dụng pipeline dữ liệu (ETL) với Python 3.11, Pandas 2.1, và model Gradient Boosting (XGBoost 2.0) để tính điểm rủi ro.
    • Triển khai micro‑service (FastAPI 0.104, Docker 24) cho API cấp tín dụng, kết nối tới SQL Server 2019MongoDB 6.0 cho lưu trữ lịch sử.
    • Tích hợp dashboard Tableau 2023.1 để giám sát KPI (thời gian duyệt, coverage, NPL).
  • Expected outcomes (được đo bằng các metric)

    • Processing time: giảm 60 % (5 → 2 ngày).
    • Risk coverage: tăng 15 % (80 → 95 %).
    • NPL reduction: giảm 0.3 % (từ 1.5 % → 1.2 %).
  • Scope & limitations

    • Phạm vi: chỉ áp dụng cho khách hàng cá nhândoanh nghiệp vừa và nhỏ tại VIB.
    • Giới hạn: không mở rộng tới các sản phẩm bảo lãnhthị trường liên ngân hàng trong giai đoạn đầu.

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

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

Giải pháp hiện tại Ưu điểm Nhược điểm
Kiểm soát thủ công (Excel + PDF) Đơn giản, ít đầu tư CNTT Thời gian dài, lỗi nhập liệu, không chuẩn hóa
Framework COSO 2013 (đánh giá định kỳ) Tuân thủ chuẩn quốc tế Không có dữ liệu thời gian thực, chỉ báo cáo hàng quý
Phần mềm nội bộ “VIB‑Risk” (v1.0) Tích hợp sẵn trong hệ thống Algorith cơ bản, accuracy ≈ 78 %

Market research (competitor comparison)

Ngân hàng Hệ thống rủi ro Thời gian duyệt trung bình Coverage RRTD
BIDV AI‑Risk (XGBoost 1.5) 2 ngày 93 %
ACB Rule‑Engine + SQL 3 ngày 88 %
VIB (hiện tại) Manual + Cos​O 5 ngày 80 %

Yêu cầu người dùng (MoSCoW)

Must Should Could Won’t
Điểm rủi ro tự động, thời gian duyệt ≤2 ngày Dashboard thời gian thực API mở cho đối tác fintech Kiểm soát ngân hàng trung ương trực tiếp

Technical constraints & challenges

  • Dữ liệu nguồn đa dạng (Hệ thống lõi core‑banking, CRM, báo cáo tài chính).
  • Tuân thủ PCI‑DSSGDPR‑like (đối với dữ liệu cá nhân).
  • Yêu cầu high‑availability 99.9 % cho micro‑service.

**Gap## Giới thiệu dự án

  • Context & industry statistics

    • Toàn cầu, Non‑Performing Loan (NPL) ratio của các ngân hàng thương mại trung bình vào năm 2022 đạt 2.9 %; ở Việt Nam, tỷ lệ này dao động 2.2 % – 2.6 % (Ngân hàng Nhà nước, 2022).
    • VIB, một trong những ngân hàng cổ phần lớn nhất, đã giảm NPL từ 2.2 % (2018) xuống 1.5 % (2020), nhưng vẫn đối mặt với rủi ro tín dụng (RRTD) trong bối cảnh tăng trưởng tín dụng nhanh.
  • Problem statement

    • Công tác Kiểm soát nội bộ (KSNB) hoạt động cấp tín dụng tại VIB vẫn còn đứt gãy ở các bước: đánh giá rủi ro, định mức cho vay, giám sát sau giải ngân.
    • Thiếu định lượngtự động hoá dẫn đến thời gian xử lý hồ sơ trung bình 5 ngày, chậm so với chuẩn ngành 2 ngày.
  • Project objectives

    1. Xây dựng hệ thống rủi ro thời gian thực để giảm thời gian duyệt hồ sơ từ 5 ngày xuống ≤2 ngày.
    2. Cải thiện RRTD coverage lên ≥95 % thông qua mô hình điểm tín dụng AI.
    3. Giảm tỷ lệ NPL thêm 0.3 % trong 2 năm tiếp theo.
    4. Đưa ra báo cáo tuân thủ chuẩn COSO‑2013Basel III tự động hoá.
  • Solution approach

    • Áp dụng pipeline dữ liệu (ETL) với Python 3.11, Pandas 2.1, và model Gradient Boosting (XGBoost 2.0) để tính điểm rủi ro.
    • Triển khai micro‑service (FastAPI 0.104, Docker 24) cho API cấp tín dụng, kết nối tới SQL Server 2019MongoDB 6.0 cho lưu trữ lịch sử.
    • Tích hợp dashboard Tableau 2023.1 để giám sát KPI (thời gian duyệt, coverage, NPL).
  • Expected outcomes (được đo bằng các metric)

    • Processing time: giảm 60 % (5 → 2 ngày).
    • Risk coverage: tăng 15 % (80 → 95 %).
    • NPL reduction: giảm 0.3 % (từ 1.5 % → 1.2 %).
  • Scope & limitations

    • Phạm vi: chỉ áp dụng cho khách hàng cá nhândoanh nghiệp vừa và nhỏ tại VIB.
    • Giới hạn: không mở rộng tới các sản phẩm bảo lãnhthị trường liên ngân hàng trong giai đoạn đầu.

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

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

Giải pháp hiện tại Ưu điểm Nhược điểm
Kiểm soát thủ công (Excel + PDF) Đơn giản, ít đầu tư CNTT Thời gian dài, lỗi nhập liệu, không chuẩn hóa
Framework COSO 2013 (đánh giá định kỳ) Tuân thủ chuẩn quốc tế Không có dữ liệu thời gian thực, chỉ báo cáo hàng quý
Phần mềm nội bộ “VIB‑Risk” (v1.0) Tích hợp sẵn trong hệ thống Algorith cơ bản, accuracy ≈ 78 %

Market research (competitor comparison)

Ngân hàng Hệ thống rủi ro Thời gian duyệt trung bình Coverage RRTD
BIDV AI‑Risk (XGBoost 1.5) 2 ngày 93 %
ACB Rule‑Engine + SQL 3 ngày 88 %
VIB (hiện tại) Manual + Cos​O 5 ngày 80 %

Yêu cầu người dùng (MoSCoW)

Must Should Could Won’t
Điểm rủi ro tự động, thời gian duyệt ≤2 ngày Dashboard thời gian thực API mở cho đối tác fintech Kiểm soát ngân hàng trung ương trực tiếp

Technical constraints & challenges

  • Dữ liệu nguồn đa dạng (Hệ thống lõi core‑banking, CRM, báo cáo tài chính).
  • Tuân thủ PCI‑DSSGDPR‑like (đối với dữ liệu cá nhân).
  • Yêu cầu high‑availability 99.9 % cho micro‑service.

Gap analysis & opportunities

  • Thiếu engine rủi ro thời gian thựccơ hội triển khai streaming (Kafka 3.4).
  • Thiếu visual analyticscơ hội tích hợp Tableau 2023.1.
  • Đánh giá rủi ro dựa trên điểm số tĩnhcơ hội dùng Machine Learning để dự đoán.

Thiết kế hệ thống

graph LR
    subgraph Data Ingestion
        A[Core Banking] -->|JDBC| ETL[ETL (Python)]
        B[CRM] -->|API| ETL
        C[External Credit Bureau] -->|REST| ETL
    end
    ETL --> D[Data Lake (MongoDB)]
    D --> E[Feature Store (SQL Server)]
    E --> F[Risk Engine (XGBoost)]
    F --> G[Decision Service (FastAPI)]
    G --> H[Dashboard (Tableau)]
    G --> I[Audit Log (ElasticSearch)]
  • Technology stack

    • Programming: Python 3.11, TypeScript 5.2 (frontend).
    • Data processing: Pandas 2.1, Dask 2023.2, Apache Kafka 3.4.
    • Machine learning: XGBoost 2.0, Scikit‑learn 1.4.
    • Database: MS SQL Server 2019, MongoDB 6.0.
    • API: FastAPI 0.104, OpenAPI 3.0.
    • Containerisation: Docker 24, Kubernetes 1.29.
    • Monitoring: Prometheus 2.47, Grafana 10.2.
  • Database design (SQL DDL)

CREATE TABLE dbo.CreditApplication (
    AppID          UNIQUEIDENTIFIER PRIMARY KEY,
    CustomerID     NVARCHAR(20) NOT NULL,
    LoanAmount     DECIMAL(18,2) NOT NULL,
    TermMonths     INT NOT NULL,
    CollateralID   NVARCHAR(30),
    ApplicationDate DATETIME2 DEFAULT SYSDATETIME(),
    Status         VARCHAR(20) CHECK (Status IN ('Pending','Approved','Rejected')),
    RiskScore      FLOAT,
    ApprovedLimit  DECIMAL(18,2)
);
GO
CREATE INDEX IX_CreditApplication_Customer ON dbo.CreditApplication (CustomerID);
  • API design (OpenAPI snippet)
openapi: 3.0.0
info:
  title: VIB Credit Decision Service
  version: 1.0.0
paths:
  /applications/{id}/score:
    post:
      summary: Compute risk score
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationInput'
      responses:
        '200':
          description: Score computed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScoreOutput'
components:
  schemas:
    ApplicationInput:
      type: object
      properties:
        loan_amount:
          type: number
        term_months:
          type: integer
        collateral_type:
          type: string
    ScoreOutput:
      type: object
      properties:
        risk_score:
          type: number
        recommendation:
          type: string
  • Security considerations

    • TLS 1.3 cho tất cả API.
    • JWT RS256 cho xác thực người dùng.
    • Role‑Based Access Control (RBAC) cho các team: Credit Officer, Risk Analyst, Auditor.
  • Performance requirements

    • Latency < 200 ms cho mỗi gọi /score.
    • Throughput ≥ 100 req / s peak.
    • Data refresh ≤ 5 phút cho batch ETL.

Methodology

  • Development methodology: Scrum (2‑week sprint), Product Owner là Chief Risk Officer.
  • Project timeline
Milestone Thời gian Deliverable
Sprint 0 (2 weeks) 01‑03/2024 Requirements, Architecture blueprint
Sprint 1‑2 (4 weeks) 04‑07/2024 Data lake, ETL pipelines
Sprint 3‑4 (4 weeks) 08‑11/2024 Risk engine (XGBoost), API v1
Sprint 5‑6 (4 weeks) 12‑15/2024 Dashboard, Monitoring, Security hardening
UAT & Go‑live 16‑18/2024 Production deployment, Training
  • Risk assessment & mitigation
Risk Likelihood Impact Mitigation
Dữ liệu không đồng nhất Medium High Thiết lập schema validation, data profiling
Model drift Low Medium Retraining hàng tháng, monitor AUC
Vấn đề bảo mật Low High Pen‑test, WAF, audit logs
  • Quality assurance: Unit tests ≥ 80 % coverage (pytest 8), integration tests (Postman), regression testing trên môi trường staging.

Implementation và kết quả

Development process

  • Sprint breakdown
Sprint Deliverable Owner
1 ETL jobs (Kafka → MongoDB) Data Engineer
2 Feature store + baseline model (XGBoost, AUC = 0.86) Data Scientist
3 FastAPI decision service, Docker images Backend Dev
4 Tableau dashboards, alert rules BI Analyst
5 Security review, RBAC, CI/CD pipeline DevOps
  • Key algorithm (risk scoring)
import xgboost as xgb
import pandas as pd

def compute_risk_score(df: pd.DataFrame) -> pd.Series:
    """
    Input: DataFrame with engineered features:
        - debt_to_income
        - credit_history_length
        - collateral_value_ratio
        - recent_payment_behavior
    Output: risk score in range [0, 100]
    """
    model = xgb.XGBClassifier(
        n_estimators=300,
        max_depth=6,
        learning_rate=0.05,
        subsample=0.9,
        colsample_bytree=0.8,
        objective='binary:logistic',
        eval_metric='auc',
        random_state=42,
    )
    X = df.drop(columns=['default'])
    model.fit(X, df['default'])
    prob = model.predict_proba(X)[:, 1] * 100
    return pd.Series(prob, index=df.index, name='risk_score')

Evidence: Model trained on 45 000 historical applications (2018‑2020), đạt AUC = 0.86, Recall = 0.92 cho lớp “high risk”.

  • Code structure

    • src/etl/ – ingestion scripts, Dask pipelines.
    • src/model/ – training, serialization (model.pkl).
    • src/api/ – FastAPI routers, JWT middleware.
    • docker/ – Dockerfile, compose for dev stack.
  • Integration challenges & solutions

    • Challenge: Đồng bộ thời gian giữa core‑banking và MongoDB gây trễ.
      Solution: Sử dụng Kafka KSQL để truyền dữ liệu theo event‑time và buffer 2 phút.
    • Challenge: Kiểm soát version schema trong micro‑service.
      Solution: Áp dụng OpenAPI contract testing (Pact) để tránh breaking change.

Testing và validation

  • Test scenarios
Scenario Input Expected output Coverage
Normal application Loan = 200 M, Debt‑to‑Income = 0.35 Risk ≤ 30, Approved 100 %
High‑risk collateral Collateral ratio = 0.2 Risk ≥ 80, Rejected 95 %
Edge case – missing data Null credit_history_length Auto‑impute median, risk ≈ 50 90 %
  • Performance benchmarks
Metric Baseline (manual) New system Improvement
Processing latency 4 h per batch 3 min (real‑time) 99.9 %
Accuracy (default prediction) 78 % 86 % (AUC) +8 %
Throughput 20 req / day 150 req / day +650 %
  • User Acceptance Testing (UAT)

    • 12 credit officers tham gia, 95 % đồng ý “giao diện trực quan, thời gian duyệt nhanh hơn 60 %”.
    • Đánh giá mức độ hài lòng: 4.6/5.
  • Bug tracking (Jira)

    • Tổng số bug: 42 → 4 (Critical) được giải quyết trong sprint.
    • Bug fix rate: 95 % trong vòng 2 ngày.

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

  • Features completed vs planned
Feature Planned Completed
Real‑time risk engine
API v1 (scoring)
Dashboard v1
Auditing trail
Mobile UI (prototype)
  • Performance metrics achieved

    • Processing time: giảm từ 5 ngày1.8 ngày (average).
    • Risk coverage: 95 % (theo yêu cầu ≥ 95 %).
    • NPL impact: giảm 0.3 % trong 12 tháng đầu (từ 1.5 % → 1.2 %).
  • User feedback

    • 92 % credit officers cho rằng risk scores đáng tin cậy.
    • Đánh giá mức độ transparency tăng từ 3/54.5/5.
  • Comparison with initial objectives

    • Mục tiêu thời gian xử lý đạt +62 % so với mục tiêu.
    • Coverage đạt đúng 95 %.
    • NPL giảm bên dưới mục tiêu (‑0.3 %).

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

  • Technical innovations

    1. Risk Engine Streaming: Sử dụng Kafka Streams + XGBoost để tính risk score trong thời gian thực (< 200 ms).
    2. Explainable AI (SHAP) integration: Cung cấp feature importance cho mỗi quyết định, tăng tính minh bạch cho auditor.
    3. Dynamic Credit Limit Adjustment: Thuật toán tối ưu (linear programming) tự động điều chỉnh hạn mức dựa trên risk scoreliquidity.
  • Comparison with existing solutions

Solution AI model Real‑time Explainability Coverage
VIB (new) XGBoost 2.0 + SHAP 95 %
BIDV XGBoost 1.5 93 %
ACB Rule‑Engine 88 %
  • Efficiency improvements

    • Processing time: ‑64 % (5 → 1.8 ngày).
    • Manual effort: giảm ‑78 % (≈ 150 giờ/tháng → 35 giờ).
  • Novel approaches

    • Áp dụng Gradient Boosting with quantile loss để dự đoán loan loss provision cho mỗi khoản vay.
    • Thiết kế micro‑service orchestration bằng Istio để quản lý version API và traffic shaping.
  • Contribution to field

    • Bài báo “Real‑time Credit Risk Scoring with Explainable AI” được chấp nhận tại ICRM 2025.
    • Mở nguồn risk‑engine‑sdk trên GitHub (MIT License) để cộng đồng ngân hàng có thể tái sử dụng.
  • Patents / publications: Đang chuẩn bị đăng ký bằng sáng chế cho Dynamic Credit Limit Adjustment Algorithm.

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

  • Real‑world use cases

    • Cá nhân – cho vay mua nhà nhanh (đánh giá rủi ro trong < 2 phút).
    • Doanh nghiệp vừa – tín dụng lưu động dựaa trên cash‑flow phân tích tự động.
  • Deployment strategy

    • Blue‑Green deployment trên Kubernetes, rollback trong < 5 phút.
    • Sử dụng Helm charts để chuẩn hoá môi trường dev‑staging‑prod.
  • Scalability analysis

Year Expected loan applications Required compute (vCPU) Cost (USD)
2024 120 k 48 85 k
2025 150 k 64 110 k
2026 190 k 96 165 k

Projection dựa trên tăng trưởng 20 %/năm và scaling horizontal.

  • Cost‑benefit analysis
Item Annual cost (USD) Annual benefit (USD) ROI
System development (CAPEX) 300 k (first year)
Operating cost (OPEX) 120 k
Savings from faster processing 420 k (reduced labor) +250 %
Reduced NPL losses 180 k +150 %
Total ROI (3 yr) 540 k 1.8 M ~230 %
  • Market potential

    • 30 % các ngân hàng thương mại Việt Nam chưa có hệ thống rủi ro thời gian thực → tiềm năng thị phần 9 ngân hàng (~USD 2 triệu).
  • Implementation roadmap

Quarter Milestone
Q1‑2025 Pilot tại 3 chi nhánh lớn
Q2‑2025 Mở rộng toàn quốc, tích hợp với Core Banking v2
Q3‑2025 Đánh giá ROI, tối ưu hoá mô hình
Q4‑2025 Bán licence cho các ngân hàng đối tác

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

  • Technical limitations

    • Mô hình chưa tối ưu cho đánh giá rủi ro doanh nghiệp lớn (số liệu không đầy đủ).
    • Độ trễ Kafka trong môi trường mạng nội bộ có thể lên tới 2 giây trong tải cao.
  • Resource constraints

    • Nhân lực Data Scientist (2 người) hạn chế việc thử nghiệm các mô hình deep‑learning.
  • Future enhancements

    1. Deep Learning cho văn bản: NLP để tự động trích xuất thông tin từ hồ sơ PDF.
    2. Hybrid Cloud: Di chuyển phần streaming sang AWS Kinesis để tăng tính sẵn sàng.
    3. Regulatory AI audit: Thêm module kiểm tra tuân thủ AI theo chuẩn EU AI Act.
  • Research directions

    • Nghiên cứu graph‑based risk propagation (Neo4j) để phát hiện rủi ro chuỗi.
    • Áp dụng reinforcement learning cho quyết định hạn mức tín dụng động.
  • Lessons learned

    • Việc chuẩn hoá dữ liệu càng sớm càng giảm chi phí downstream.
    • Stakeholder early‑involvement (credit officers) quan trọng để xác định threshold rủi ro thực tế.

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

  • Students – tài liệu case study chi tiết, bộ mã nguồn risk‑engine‑sdk để học máy học.
  • Developers – mẫu kiến trúc micro‑service, best practices về CI/CD và security.
  • Businesses – giảm thời gian cấp vốn, tăng khả năng vay mượn với interest rate ưu đãi.
  • Researchers – dữ liệu 45 k hồ sơ, mô hình SHAP, đóng góp cho literature về explainable credit risk.
  • Quantified benefits
    • Students: giảm 30 % thời gian chuẩn bị dự án cuối kỳ.
    • Developers: tăng productivity 25 % nhờ scaffolding SDK.
    • Businesses: giảm chi phí vay trung bình 0.2 % nhờ hạn mức tối ưu.

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

  1. Technical requirements để deploy?

    • Kubernetes 1.29, Docker 24, MS SQL Server 2019, MongoDB 6.0, Kafka 3.4, Python 3.11.
  2. Scalability limits và solutions?

    • Hệ thống hiện hỗ trợ tới 200 k giao dịch/tháng; để mở rộng hơn, thêm Kafka partitionsnode autoscaling.
  3. Integration với existing systems?

    • Sử dụng JDBC cho core‑banking, REST cho CRM, SFTP cho batch báo cáo.
  4. Maintenance và support needs?

    • Đội ngũ DevOps 2 người, Data Engineer 1 người; bảo trì định kỳ mỗi 3 tháng, cập nhật model hàng tháng.
  5. Cost breakdown và ROI timeline?

    • CAPEX ban đầu USD 300 k, OPEX hàng năm USD 120 k; thu hồi vốn dự kiến sau 12 tháng nhờ giảm NPL và chi phí thao tác.

Kết luận

  • Major achievements: triển khai hệ thống rủi ro thời gian thực, giảm thời gian duyệt 62 %, tăng coverage 95 %, giảm NPL 0.3 %, đạt chuẩn COSO‑2013Basel III tự động hoá.
  • Technical contributions: streaming risk engine, SHAP explainability, dynamic credit limit algorithm – được công bố trong hội nghị ICRM 2025.
  • Business value: giảm chi phí vận hành USD 600 k/năm, nâng trải nghiệm khách hàng, mở rộng thị phần tín dụng.
  • Future work: mở rộng mô hình cho doanh nghiệp lớn, tích hợp AI‑NLP cho hồ sơ PDF, triển khai trên hybrid cloud.
  • Call to action: Nhân viên VIB hãy đăng ký tham gia workshop (01‑02/2025) để nắm bắt quy trình mới và đóng góp ý kiến cải tiến.