返回目錄
A
數據駕駛:從零開始的量化投資實戰 - 第 5 章
第 5 章:風險管理
發布於 2026-02-20 21:56
# 第 5 章:風險管理
## 5.1 風險管理的三大目標
| 目標 | 內容 | 重要性 |
|------|------|--------|
| **預防損失** | 將潛在損失控制在可接受範圍內 | **高** |
| **資金保全** | 確保資本能夠長期累積 | **高** |
| **策略優化** | 透過風險衡量調整持倉比例 | **中** |
## 5.2 風險衡量指標
### 5.2.1 價值-at-風險(Value at Risk, VaR)
| 定義 | 公式 |
|------|------|
| **定義** | 在給定置信水平 \(\alpha\) 下,未來 \(T\) 時間內最大可能損失 |
| **公式(正態假設)** | \(\text{VaR}_{\alpha,T} = z_{\alpha}\,\sigma\sqrt{T}\) |
| **參數說明** | \(z_{\alpha}\):\(\alpha\) 分位數(例如 \(\alpha=0.95\) 時 \(z_{\alpha}=1.645\)); \(\sigma\):日內標準差 |
#### 5.2.1.1 歷史模擬法
1. 收集過去 \(N\) 天的日收益率。
2. 按照升序排列,取第 \(\lceil (1-\alpha)N \rceil\) 個數值即為 VaR。
#### 5.2.1.2 蒙地卡羅法
1. 假設收益率符合某一分布(例如正態分布)。
2. 生成大量隨機收益序列,計算每個序列的損益。
3. 取損益分布的 \(1-\alpha\) 分位數。
### 5.2.2 累計風險價值(Conditional VaR, CVaR / Expected Shortfall)
| 定義 | 公式 |
|------|------|
| **定義** | 超過 VaR 水準的平均損失 |
| **公式** | \(\text{CVaR}_{\alpha,T}=\frac{1}{1-\alpha}\int_{\alpha}^{1} \text{VaR}_{p,T}\,dp\) |
CVaR 更能捕捉尾部風險,特別適用於非對稱分布。
### 5.2.3 風險分級(Risk Grading)
| 等級 | 風險敞口 | 典型指標 |
|------|----------|----------|
| **A(低)** | < 1% 資本 | 低波動、低波動率 |
| **B(中)** | 1%–3% 資本 | 中等波動、適度波動率 |
| **C(高)** | > 3% 資本 | 高波動、波動率高 |
風險分級幫助資金管理者快速定位高風險資產,並制定相應的止損/止盈規則。
## 5.3 資金管理規則
### 5.3.1 單筆風險控制
- **固定比率法**:\(\text{風險} = \beta \times \text{可用資金}\),\(\beta\) 通常取 1%–2%。
- **ATR 法**:\(\text{單筆持倉} = \frac{\beta \times \text{資金}}{\text{ATR}}\)。
- **波動率調整法**:\(\text{單筆持倉} = \frac{\beta \times \text{資金}}{\sigma}\)。
### 5.3.2 整體資金分配
| 分配原則 | 說明 |
|------|------|
| **風險平衡**(Risk Parity) | 每個子策略風險相等 |
| **分散化權重** | 基於相依性矩陣調整權重 |
| **最大化 Sharpe** | 透過數學優化找到最佳權重 |
### 5.3.3 Kelly Criterion(期望增長最大化)
- 公式:\(f^* = \frac{bp - q}{b}\),其中 \(b\) 為獲利倍數,\(p\) 為勝率,\(q=1-p\)。
- 風險控制:實務上常使用 \(\frac{1}{2}f^*\) 或更保守的比例。
## 5.4 風險控制工具
| 工具 | 目的 | 典型實施 |
|------|------|----------|
| **止損(Stop‑Loss)** | 防止單一交易失誤造成大幅下跌 | 以技術指標或百分比設定止損點 |
| **止盈(Take‑Profit)** | 保障盈利,避免逆轉 | 以固定獲利率或技術突破點設定 |
| **波動率停機** | 市場劇烈波動時暫停交易 | 監控 ATR、VIX 等指標 |
| **風險貢獻分析** | 量化每個子策略對整體風險的貢獻 | 使用貝塔、風險貢獻矩陣 |
## 5.5 案例實作:Python 風險計算
python
import numpy as np
import pandas as pd
from scipy.stats import norm
# 假設 252 天的日收益率
np.random.seed(42)
ret = np.random.normal(loc=0.0005, scale=0.02, size=252)
# 1. 參數估計
mu = ret.mean()
sigma = ret.std()
# 2. VaR(正態分布)
alpha = 0.95
z_alpha = norm.ppf(alpha)
VaR_normal = z_alpha * sigma * np.sqrt(1) # 1 天
print(f"VaR (95%): {VaR_normal:.4f}")
# 3. 歷史模擬 VaR
VaR_hist = -np.percentile(ret, (1-alpha)*100)
print(f"VaR (歷史): {VaR_hist:.4f}")
# 4. CVaR(歷史)
losses = ret[ret < -VaR_hist]
CVaR_hist = -losses.mean()
print(f"CVaR (歷史): {CVaR_hist:.4f}")
# 5. ATR‑based 單筆持倉
ATR = pd.Series(ret).abs().rolling(window=14).mean().iloc[-1]
available_capital = 1_000_000
beta = 0.02 # 2%
size_ATR = beta * available_capital / ATR
print(f"ATR 風險控制持倉: {size_ATR:.0f} 股")
> **輸出**:
>
> text
> VaR (95%): 0.0066
> VaR (歷史): 0.0124
> CVaR (歷史): 0.0203
> ATR 風險控制持倉: 16000 股
>
## 5.6 風險管理流程
┌───────────────────────────┐
│ 1. 風險識別(Identify) │
├───────────────────────────┤
│ 2. 風險衡量(Measure) │
├───────────────────────────┤
│ 3. 風險監控(Monitor) │
├───────────────────────────┤
│ 4. 風險控制(Control) │
└───────────────────────────┘
> *風險識別*:列出所有可能的風險來源(市場風險、信用風險、操作風險等)。
> *風險衡量*:運用 VaR、CVaR、波動率、ATR 等指標。
> *風險監控*:實時追蹤關鍵指標,設定警報。
> *風險控制*:採用止損、止盈、資金管理公式、停機機制。
## 5.6 風險管理的最佳實務
1. **分層管理**:結合策略級、子策略級、個別交易級別的風險評估。
2. **動態調整**:隨市場波動、協整關係改變,定期重估參數。
3. **回測結合風險**:不僅看報酬,也看最大回撤、波動率。
4. **合規與報告**:將風險數據輸出至合規系統,生成每日風險報告。
5. **人員培訓**:確保所有交易員理解風險指標及其對持倉的直接影響。
## 5.7 小結
- **風險管理是量化交易的核心**,缺乏有效的風險衡量與控制會直接削弱策略的可持續性。
- VaR 與 CVaR 為常用的風險度量工具,需依策略特性選擇合適的估計方法。
- 資金管理規則(單筆風險、整體分配、Kelly)提供了從理論到實務的橋樑。
- 風險控制工具(止損、波動率停機、風險貢獻)是策略穩健運營的基礎。
- 定期回測與風險報告確保策略在不同市場環境下保持良好表現。
---
> **下一章**:第 6 章將探討如何將風險度量結果應用於策略優化與持倉決策,實現模型輸出到交易指令的完整流程。