Files
sanguo_quant_live/risk-management/research/03-risk-models/risk-measurement-models.md
T

296 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 风险度量模型研究与评估
## 🎯 研究目标
评估各类风险度量模型在A股市场的适用性,选择适合的模型组合。
---
## 1. 传统风险度量模型
### 1.1 VaR(风险价值)
**定义**:在一定置信水平下,未来一定时间内预期最大损失。
**计算方法**
| 方法 | 说明 | A股适用性 |
|------|------|-----------|
| **历史模拟法** | 用历史收益率分位数计算 | ✅ 推荐,不需要分布假设,适应尾部风险 |
| **参数法(方差-协方差)** | 假设正态分布计算 | ❌ 不推荐,A股尾部风险比正态分布大 |
| **蒙特卡洛模拟** | 随机模拟生成收益率 | ⚠️ 计算量大,适合机构,不适合个人量化 |
**优缺点**
- ✅ 优点:简单直观,监管认可,容易理解
- ❌ 缺点:不考虑尾部风险,VaR不满足次可加性
**A股应用建议**
- 使用历史模拟法计算VaR
- 置信水平95%或99%
- 时间窗口1年(252个交易日)
### 1.2 CVaR/ES(条件风险价值/期望短缺)
**定义**:损失超过VaR时的期望损失。
**优势**
- ✅ 考虑了尾部风险
- ✅ 满足次可加性,理论性质更好
- ✅ 更保守,适合风控
**计算**:历史模拟法很容易扩展到CVaR
**A股应用建议**
- VaR作为预警,CVaR作为实际风险控制
- 比VaR更保守,适合风控
### 1.3 最大回撤
**定义**:从最高点到最低点的最大跌幅。
**特点**
- ✅ 交易者非常直观,容易理解
- ✅ 直接关系到账户存活率
- ✅ 非常适合策略风控
**分类**
- **历史最大回撤**:整个回测过程最大回撤
- **当前回撤**:从历史最高点到当前的回撤
- **当日回撤**:当日相对于开盘的回撤
**A股应用建议**
- ✅ 强烈推荐作为核心风控指标
- ✅ 必须设置最大回撤止损,触及强制清仓
- ✅ 实时监控当前回撤
### 1.4 波动率
**常见度量**
- **历史波动率**:过去N天收益率标准差
- **GARCH波动率**:预测未来波动率,适应波动率聚类
- **已实现波动率**:日内高频数据计算
**A股应用建议**
- ✅ 历史波动率足够日常使用
- ✅ GARCH适合预测,牛熊转换时更准确
- ✅ 波动率作为动态调整仓位依据,高波动降低仓位
---
## 2. 现代风险度量模型
### 2.1 风险贡献度
**定义**:每个资产对组合整体风险的贡献。
**公式**RC_i = w_i * ∂(σ_p)/∂w_i
**应用**
- 调整持仓让风险贡献更均匀
- 避免个别资产主导组合风险
- 适合多资产组合
**A股适用性**:✅ 推荐用于多策略组合
### 2.2 风险预算
**思想**:预先给每个资产分配风险预算,然后优化权重。
**优点**
- ✅ 主动控制风险贡献
- ✅ 风险平价是风险预算的特例
- ✅ 比等权重更稳定
**A股适用性**:✅ 推荐用于多股票组合
### 2.3 下行风险度量
**指标**
- 下半偏差(downside deviation):只计算下跌波动率
- 亏损频率:统计亏损频率
- 平均亏损:亏损发生时平均亏损幅度
**优势**
- ✅ 只关心下跌,不惩罚上涨波动
- ✅ 更符合投资者实际感受
**A股适用性**:✅ 推荐,比标准差更合理
### 2.4 基于贝塔的风险度量
**定义**:β = Cov(Ri, Rm)/Var(Rm),衡量系统性风险。
**应用**
- 计算组合系统性风险
- 风格风险分析
- 调整仓位降低系统性风险
**A股适用性**:⚠️ 可以用,但不是核心,因为A股系统性风险占比高
---
## 3. 动态风险度量
### 3.1 时变波动率模型
**GARCH家族**
- GARCH(1,1) 足够用
- 捕捉波动率聚类(高波动之后更高波动)
- A股波动率聚类明显,适合GARCH
**EGARCH**:允许杠杆效应(下跌波动更大),A股更明显
**实现难度**:低,python arch包直接可用
**A股应用建议**:✅ 推荐用于动态风控
### 3.2 风险状态识别
**方法**
- 波动率分位数分组:低/中/高波动状态
- 马尔可夫链识别:切换不同波动率状态
- 机器学习分类:识别市场风险状态
**应用**:根据不同风险状态调整仓位和风控参数
**A股适用性**:✅ 推荐,A股牛熊波动率差异大
### 3.3 风险预警指标
**核心预警指标**
| 指标 | 预警逻辑 |
|------|---------|
| VIX指数 | 整体市场恐慌程度 |
| 涨跌停家数比 | 上涨停多还是跌停多 |
| 下跌家数比例 | 整体市场涨跌分布 |
| 平均跌幅 | 下跌股票平均跌幅 |
**应用**:多个指标综合判断市场整体风险水平
---
## 4. 模型比较与选择
### 4.1 模型比较表
| 模型 | 理论复杂度 | 实现难度 | A股适用性 | 推荐度 |
|------|------------|----------|-----------|--------|
| VaR(历史模拟) | 低 | 低 | ✅ 好 | ⭐⭐⭐⭐ |
| CVaR/ES | 低 | 低 | ✅ 好 | ⭐⭐⭐⭐⭐ |
| 最大回撤 | 极低 | 极低 | ✅ 很好 | ⭐⭐⭐⭐⭐ |
| 波动率 | 低 | 低 | ✅ 好 | ⭐⭐⭐⭐ |
| GARCH动态波动率 | 中 | 中 | ✅ 好 | ⭐⭐⭐⭐ |
| 风险贡献/风险预算 | 中 | 中 | ✅ 好 | ⭐⭐⭐⭐ |
| 下行偏差 | 低 | 低 | ✅ 好 | ⭐⭐⭐⭐ |
| 贝塔 | 低 | 低 | ⚠️ 一般 | ⭐⭐⭐ |
### 4.2 推荐模型组合
**核心推荐组合**
```
[最大回撤监控]
+ [CVaR风险度量]
+ [动态GARCH波动率]
+ [风险预算配置]
```
**各模块作用**
1. **最大回撤**:账户层面终极风控,触及强制止损
2. **CVaR**:组合层面风险度量,比VaR更保守
3. **GARCH波动率**:动态调整整体仓位,高波动降低仓位
4. **风险预算**:配置层面控制各股票风险贡献
**简化版(个人量化)**
```
[最大回撤监控]
+ [VaR预警]
+ [历史波动率]
+ [单票/集中度仓位限制]
```
足够个人量化使用,实现简单效果好
---
## 5. 模型参数建议
### 5.1 窗口大小
| 指标 | 推荐窗口 | 说明 |
|------|---------|------|
| VaR/CVaR | 252交易日(1年) | 足够覆盖一个完整年度周期 |
| 波动率 | 20-60交易日 | 短窗口反应快,长窗口稳定 |
| GARCH | 用全部历史估计 | GARCH参数不需要频繁重估计 |
### 5.2 置信水平
| 置信水平 | 含义 | 推荐 |
|---------|------|------|
| 95% | 95%概率损失不超过VaR | ✅ 推荐 |
| 99% | 99%概率损失不超过VaR | 更保守,可以作为第二级预警 |
### 5.3 阈值建议
| 指标 | 警告阈值 | 临界阈值 |
|------|----------|----------|
| 单日回撤 | 3% | 5% |
| 累计回撤 | 8% | 12% |
| 最大回撤 | - | 15%(保守)/ 25%(进取) |
| 单票仓位 | 25% | 40% |
| VaR(95%)单日 | 2% | 3% |
| 波动率(年化) | 25% | 40% |
---
## 6. 模型实现建议
### 6.1 计算流程
```python
# 1. 获取历史收益率
returns = calculate_returns(prices)
# 2. 计算风险指标
var_95 = calculate_var_historical(returns, 0.95)
cvar_95 = calculate_cvar_historical(returns, 0.95)
volatility = calculate_rolling_volatility(returns, 20)
max_drawdown = calculate_current_max_drawdown(net_values)
# 3. 和阈值比较
check_thresholds(var_95, volatility, max_drawdown)
# 4. 触发预警
if any_threshold_triggered():
generate_alert()
trigger_emergency_action()
```
### 6.2 实时计算复杂度
- 单次计算:O(N) N是历史长度
- 对于N=252,非常快,27万次/秒(我们原型测试)
- 完全满足实时要求,即使全市场监控
---
## 7. 结论与建议
### 最终结论
1. **A股适合使用**:最大回撤 + CVaR + 动态波动率 + 风险预算组合
2. **个人量化简化版**:最大回撤 + VaR + 波动率 + 仓位限制足够用
3. **不要过度复杂**:简单模型稳定可靠,容易维护
4. **动态调整比静态模型好**A股波动率变化大,必须动态调整
### 下一步实现
1. 实现基础风险计算模块
2. 回测不同参数在A股的表现
3. 比较不同模型风控效果
4. 选择最优参数
---
**本章完** ⚔️