返回目錄
A
量化投資的智慧:從數據到策略 - 第 7 章
第八章:人工智慧與機器學習:預測風險的前沿技術
發布於 2026-02-21 19:31
# 第八章:人工智慧與機器學習:預測風險的前沿技術
> **章節定位**:在量化投資的全流程中,資料收集、特徵工程與模型建立往往是「核心」的階段,而風險管理則是「穩定」的支撐。這一章將把兩者結合,說明如何利用人工智慧(AI)與機器學習(ML)為風險管理注入「預測」與「自適應」的智慧。
## 8.1 什麼是預測風險?
| 風險類別 | 典型指標 | 監控方式 |
|---|---|---|
| 市場風險 | VaR、CVaR、波動率 | 靜態門檻、日內回撤 |
| 信用風險 | 憑證風險率、預期損失 | 靜態評分、固定期限 |
| 操作風險 | 交易錯誤、系統故障 | 事件檢測、報警 |
傳統方法多依賴歷史統計量,缺乏對即將到來風險的「預測」。AI/ML 可以透過時間序列預測、異常檢測與多變量學習,提前發現潛在風險。
## 8.2 資料準備:從「原始」到「可學」
### 8.2.1 資料來源與結構
- **市場行情**:日內 tick、日結、週結資料。
- **宏觀經濟**:利率、CPI、就業數據。
- **公司財報**:EPS、ROE、負債率。
- **新聞情緒**:Google News、Twitter、財經論壇。
### 8.2.2 轉換流程
1. **時間同步**:使用 `pandas` 的 `resample` 進行時間對齊。
2. **缺失處理**:簡單插值 (`ffill`)、高階插值 (`kde`)、或訓練缺失填補模型。
3. **標準化**:Z-score、Box-Cox,確保各特徵尺度相似。
4. **特徵衍生**:
- 技術指標:MA、EMA、RSI、ATR、CCI。
- 事件指標:超買超賣、新聞情緒得分。
- 統計指標:滑動平均、滑動波動率、相關矩陣。
### 8.2.3 代碼範例:資料加載與特徵合併
python
import pandas as pd
from pathlib import Path
# 讀取行情
prices = pd.read_csv(Path('data')/'prices.csv', parse_dates=['date'], index_col='date')
# 讀取宏觀
macro = pd.read_csv(Path('data')/'macro.csv', parse_dates=['date'], index_col='date')
# 讀取新聞情緒
sentiment = pd.read_csv(Path('data')/'sentiment.csv', parse_dates=['date'], index_col='date')
# 重新取樣到每日
prices_daily = prices.resample('D').last().dropna()
macro_daily = macro.resample('D').last().dropna()
sentiment_daily = sentiment.resample('D').mean().fillna(0)
# 合併
data = prices_daily.join([macro_daily, sentiment_daily], how='inner')
# 轉為特徵矩陣
X = data.drop(columns=['target_return'])
y = data['target_return']
## 8.3 模型選擇:從監督式到異常檢測
| 模型 | 風險預測用途 | 典型庫 |
|---|---|---|
| LSTM / GRU | 時間序列回報預測 | `keras`, `pytorch` |
| XGBoost / LightGBM | 風險因子回歸 | `xgboost`, `lightgbm` |
| Isolation Forest | 異常點檢測 | `sklearn` |
| AutoEncoder | 無監督異常檢測 | `keras`, `pytorch` |
| Bayesian Network | 風險因子關聯 | `pgmpy` |
### 8.3.1 監督式回報預測
預測下一個時段的回報,並以預測分布的尾部作為風險估計。
python
from keras.models import Sequential
from keras.layers import LSTM, Dense, Dropout
model = Sequential([
LSTM(64, input_shape=(seq_len, num_features), return_sequences=True),
Dropout(0.2),
LSTM(32),
Dense(1)
])
model.compile(optimizer='adam', loss='mse')
model.fit(X_train, y_train, epochs=50, batch_size=64)
### 8.3.2 異常檢測
利用 Isolation Forest 或 AutoEncoder 判斷是否為異常交易行為或市場異常。
python
from sklearn.ensemble import IsolationForest
iso = IsolationForest(contamination=0.01, random_state=42)
iso.fit(X_train)
pred = iso.predict(X_test) # -1 為異常
## 8.4 風險預測指標:CVaR、Sharpe、Expected Shortfall
- **Conditional VaR (CVaR)**:預測超過 VaR 門檻的平均損失。
- **Expected Shortfall (ES)**:基於模型分布的尾部期望。
- **Sharpe Ratio Prediction**:利用回報與波動率預測未來夏普。
python
# 假設預測回報分布為 Normal(μ, σ)
import numpy as np
mu, sigma = 0.001, 0.02
alpha = 0.05
z_alpha = scipy.stats.norm.ppf(alpha)
VaR = -(mu + sigma * z_alpha)
CVaR = -mu + sigma * (scipy.stats.norm.pdf(z_alpha) / alpha)
## 8.5 將預測風險嵌入策略執行
1. **動態停損**:根據預測 CVaR 更新止損水平。
2. **動態資產配置**:根據預測 Sharpe 重新調整權重。
3. **風險預警**:若預測風險超過門檻,觸發「風險停機」或「降低槓桿」。
4. **多模型融合**:使用投票或加權平均提升預測穩定性。
### 8.5.1 風險停機示例
python
pred_CVaR = predict_CVaR(X_current)
if pred_CVaR > VaR_threshold:
# 停止所有交易或縮減倉位
positions *= 0.5
log('風險停機:CVaR 超過閾值')
## 8.6 測試與驗證
| 測試指標 | 方法 |
|---|---|
| 交叉驗證 | K‑fold,時間序列特有的 forward‑backward |
| 回測 | `backtrader`, `zipline` |
| 稳定性 | 隨機種子重複、對不同市場情況分組測試 |
### 8.6.1 回測腳本簡例
python
import backtrader as bt
class MLStrategy(bt.Strategy):
def __init__(self):
self.model = load_trained_model()
def next(self):
features = extract_features(self.datas[0])
pred = self.model.predict(features)
if pred > 0:
self.buy()
else:
self.sell()
cerebro = bt.Cerebro()
cerebro.addstrategy(MLStrategy)
# 加載資料並執行
## 8.7 部署與實時監控
1. **模型服務**:使用 `FastAPI` 或 `TensorFlow Serving` 將模型封裝為 API。
2. **監控儀表板**:Grafana + Prometheus 收集指標。
3. **自動化 Retraining**:每週或每月重新訓練模型,或根據漂移檢測觸發。
4. **安全性**:使用 OAuth2、API key,確保資料隱私。
### 8.7.1 FastAPI 範例
python
from fastapi import FastAPI
import numpy as np
app = FastAPI()
model = load_model('model.pkl')
@app.post('/predict')
def predict(features: np.ndarray):
return {'pred': model.predict(features)[0]}
## 8.8 風險預測的倫理與治理
- **模型偏差**:確保不因資料不平衡導致某些群體風險被低估。
- **透明度**:將模型解釋方法(SHAP、LIME)嵌入報告。
- **合規**:符合 SEC、MiFID II 的模型監管要求。
- **人機協同**:最終決策仍由風險管理團隊審核。
## 8.9 小結
本章闡述了如何把 AI/ML 的「預測力」注入風險管理,從資料處理、模型選擇到實時部署,形成一個「可持續、可調、可解釋」的風險預測系統。這不僅提升了風險控制的靈敏度,也為投資策略提供了動態調整的科學依據。下一章將聚焦於多因子模型的深度融合,探索「因子暴露」與「風險回歸」之間的互動。