返回目錄
A
決策的數據語言:從原始數據到洞察力 - 第 9 章
第 9 章:案例研究:金融風險評估
發布於 2026-03-03 10:29
# 第 9 章:案例研究:金融風險評估
本章將以 **信用評分、利率風險與市場風險** 為三個實務案例,示範金融風險評估完整資料管道與模型部署流程。從資料採集、前處理、特徵工程、模型選擇,到評估指標、監控與合規治理,均以實際業務需求為導向,結合前章提到的資料治理平台架構,說明如何在組織內部落實合規與透明化。
---
## 9.1 信用評分(Credit Scoring)
### 9.1.1 問題說明
- **目標**:預測個人/企業貸款違約(default)與非違約(non‑default)的機率。
- **商業價值**:減少不良債權、優化資產負債表、提升放款決策速度。
### 9.1.2 資料來源
| 資料類型 | 來源 | 典型欄位 |
|---|---|---|
| 個人資訊 | 內部 CRM | 年齡、職業、婚姻狀況 |
| 交易紀錄 | 交易系統 | 消費金額、分期數、逾期天數 |
| 信用紀錄 | 第三方信用局 | 信用卡逾期次數、貸款餘額 |
| 行為指標 | 網站/APP | 登錄頻率、行為指標 |
### 9.1.3 特徵工程
- **數值化**:將分級變數(如職業)轉成 **One‑Hot Encoding** 或 **Target Encoding**。
- **時間窗口**:近 30 天、90 天內的交易總額、逾期筆數。
- **比例指標**:已付比例、還款率。
- **外部風險因子**:經濟指標(GDP、失業率)影響。
### 9.1.4 模型選擇
| 模型 | 優點 | 適用場景 |
|---|---|---|
| Logistic Regression | 可解釋性高、部署簡單 | 基礎信用評分 |
| Gradient Boosting (XGBoost / LightGBM) | 高準確度、可處理非線性 | 高風險客戶分群 |
| Neural Network | 捕捉複雜關係 | 大規模資料、深度學習需求 |
> **實務建議**:先用 Logistic 進行基線評估,若 AUC < 0.80,再進一步採用 XGBoost,並透過 SHAP 進行特徵解釋。
### 9.1.5 評估指標
| 指標 | 定義 |
|---|---|
| AUC‑ROC | 判斷模型分類能力 |
| KS Statistic | 兩個類別的分布差異 |
| Gini | 2 × AUC − 1 |
| Precision/Recall | 針對高風險預測的誤判成本 |
### 9.1.6 部署與監控
1. **批次推論**:每日凌晨更新 10% 的新申請資料,透過 Airflow / Prefect 執行。
2. **即時推論**:使用 **FastAPI + Docker**,提供 REST API 供前端即時呼叫。
3. **監控**:
- **概念漂移**:使用 Population Stability Index (PSI)。
- **性能衰退**:定期重新訓練模型,並使用 Model Drift Dashboard。
4. **合規**:
- **可解釋性**:透過 SHAP 或 LIME 輸出解釋圖。
- **資料匿名化**:在模型訓練時使用差分隱私 (DP) 訓練。
#### 範例程式碼(Python / Scikit‑learn)
python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, roc_curve
# 讀取資料
X = pd.read_csv('loan_features.csv')
y = X.pop('default')
# 分離數值與類別欄位
numeric_cols = X.select_dtypes(include=['int64', 'float64']).columns
categorical_cols = X.select_dtypes(include=['object', 'category']).columns
# 前處理
numeric_transformer = 'passthrough'
categorical_transformer = OneHotEncoder(handle_unknown='ignore')
preprocess = ColumnTransformer(
transformers=[
('num', numeric_transformer, numeric_cols),
('cat', categorical_transformer, categorical_cols)
])
# 模型與管道
clf = Pipeline(steps=[
('preprocess', preprocess),
('model', LogisticRegression(max_iter=1000))
])
# 分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 訓練
clf.fit(X_train, y_train)
# 評估
probs = clf.predict_proba(X_test)[:, 1]
auc = roc_auc_score(y_test, probs)
print(f"AUC: {auc:.4f}")
---
## 9.2 利率風險(Interest Rate Risk)
### 9.2.1 風險定義
利率風險是因市場利率變動對銀行資產負債表價值及利潤造成影響的風險。通常分為 **資產負債表利率風險** 與 **利率掉期風險**。
### 9.2.2 資料來源
| 資料類型 | 來源 | 典型欄位 |
|---|---|---|
| 市場利率曲線 | Bloomberg / Reuters | 0‑30 年期利率 |
| 內部債務利率 | 系統 | 貸款利率、存款利率 |
| 對手方利率 | 交易對手 | 期貨、掉期利率 |
### 9.2.3 風險衡量指標
| 指標 | 定義 |
|---|---|
| **VaR (Value at Risk)** | 在指定置信區間下的潛在最大損失 |
| **Expected Shortfall (ES)** | 超過 VaR 限值的平均損失 |
| **Duration** | 負債/資產對利率變動的敏感度 |
| **Gap Analysis** | 負債與資產在不同時間區間的差異 |
### 9.2.4 模型與方法
1. **時間序列預測**
- ARIMA / SARIMA:適用於有季節性、趨勢的利率曲線。
- Prophet / LSTM:可處理複雜模式。
2. **GARCH 模型**
- 捕捉利率波動率。
3. **壓力測試(Stress Testing)**
- 使用歷史劇烈波動場景或定義「利率上升 200 bp」等假設。
4. **因子模型**
- 利用市場因子(利率走勢、信用利差)做多因子預測。
### 9.2.5 案例實作
python
import pandas as pd
import statsmodels.api as sm
# 讀取利率曲線資料
rates = pd.read_csv('interest_rate_curve.csv', index_col='date', parse_dates=True)
# 計算日利率差異
rates_diff = rates.diff().dropna()
# 建立 SARIMA 模型
model = sm.tsa.statespace.SARIMAX(rates['10y'], order=(1,1,1), seasonal_order=(1,1,1,12))
res = model.fit(disp=False)
# 預測下一個月
forecast = res.get_forecast(steps=30)
print(forecast.summary_frame(alpha=0.05))
---
## 9.3 市場風險(Market Risk)
### 9.3.1 風險定義
市場風險涵蓋由價格波動(股票、債券、外匯、商品)造成的損失風險。常用衡量方式為 **VaR**、**CVaR**、**Stress Test**。
### 9.3.2 資料來源
| 資料類型 | 來源 | 典型欄位 |
|---|---|---|
| 交易資料 | 交易系統 | 合約、交易時間、價格 |
| 市場行情 | Bloomberg / Reuters | 收益率、波動率 |
| 宏觀指標 | 央行 | CPI、GDP、利率 |
### 9.3.3 風險衡量方法
| 方法 | 優點 | 適用場景 |
|---|---|---|
| **Historical Simulation** | 簡單、直觀 | 低頻、波動性不高 |
| **Variance‑Covariance** | 效率高 | 大量資產、線性組合 |
| **Monte Carlo Simulation** | 兼顧非線性 | 複雜衍生品、非線性組合 |
| **Factor‑Based VaR** | 解釋性強 | 需理解因子風險 |
### 9.3.4 模型與工具
- **pandas‑datareader**:下載歷史行情。
- **QuantLib**:衍生品定價。
- **CVaR 模型**:使用 `scikit‑learn` 的 `sklearn‑contrib`。
- **Backtesting**:`bt` 或 `backtrader`。
---
## 9.4 資料管道設計(Data Pipeline)
### 9.4.1 需求分析
| 需求 | 說明 |
|---|---|
| **高頻資料** | 交易資料每秒級別,需實時處理 |
| **批次資料** | 風險報告每週更新,使用 Spark 或 Flink |
| **資料治理** | 需符合 GDPR/CCPA、金融法規 |
| **可擴充性** | 支援多個資料來源、雲端部署 |
### 9.4.2 架構示意
+--------------------+ +-------------------+
| 交易系統(Kafka) | ----> | Data Lake (S3) |
+--------------------+ +-------------------+
| |
| |
+--------------------+ +-------------------+
| 與資料倉儲(Redshift) | ----> | Data Warehouse (Snowflake) |
+--------------------+ +-------------------+
| |
| |
+--------------------+ +-------------------+
| 風險模型(Spark ML) | ----> | Model Registry (MLflow) |
+--------------------+ +-------------------+
| |
| |
+--------------------+ +-------------------+
| 報告儀表板(Tableau / PowerBI) | ----> | BI 服務 |
+--------------------+ +-------------------+
### 9.4.3 元資料管理
- **資料目錄**:使用 **Amundsen** 或 **DataHub**。
- **資料血統**:Spark Streaming 內建 lineage,或使用 **Marquez**。
- **權限控制**:結合 **Lake Formation** 或 **Snowflake RBAC**。
---
## 9.5 模型部署與治理(Model Ops)
| 步驟 | 工具 | 目的 |
|---|---|---|
| **Model Registry** | MLflow | 版本管理、儲存模型元資料 |
| **CI/CD Pipeline** | GitHub Actions / ArgoCD | 自動化測試、部署 |
| **Inference Service** | Seldon / TorchServe | 實時推論 |
| **Monitoring** | Prometheus + Grafana | 延遲、錯誤率、概念漂移 |
| **Explainability** | SHAP / LIME | 合規解釋、風險溝通 |
| **Audit Trail** | Kafka + Kafka Connect | 追蹤資料來源、模型版本 |
> **實務建議**:將合規檢查納入 CI/CD,確保每次部署前模型符合 GDPR、金融法規。
---
## 9.6 風險管理結合商業決策
- **信貸審批流程**:將信用評分與利率風險模型輸出結合,計算 **貸款利率** 與 **風險溢價**。
- **資產負債表再平衡**:利用利率風險模型預測未來利率走勢,調整資產配置。
- **投資組合管理**:使用市場風險模型做 **VaR 限額**,控制投資組合風險。
- **KPI 追蹤**:設定 **Non‑Performing Loan Ratio (NPL)**、**VaR Coverage Ratio** 等關鍵指標,透過 Dashboard 實時監控。
---
## 9.7 小結
1. **案例全貌**:信用評分、利率風險與市場風險分別示範了不同類型風險的資料需求、模型方法與治理流程。
2. **資料治理平台**:前章提到的數據治理平台架構在此章被實際落地,從資料目錄到血統、從資料存取到模型版本皆被納入治理。
3. **合規與可解釋性**:在金融業務中,模型的可解釋性與資料隱私保護是不可或缺的。透過 SHAP、差分隱私與 CI/CD 合規化流程,確保模型在法律與業務上均合規。
4. **實務工具鏈**:整合 Scikit‑learn、Spark ML、MLflow、Seldon 等開源與雲端工具,形成從資料到模型再到決策的完整工序。
5. **未來發展**:隨著雲端原生、AutoML 與深度學習的成熟,未來金融風險模型將更具自動化與即時性,但合規與治理仍是核心。
---
> **下一步**:第 10 章將探討深度學習、強化學習、AutoML 及雲端 AI 服務的應用,幫助讀者把握前沿技術與長期學習路徑。