7.9 KiB
7.9 KiB
风险度量模型研究与评估
🎯 研究目标
评估各类风险度量模型在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波动率]
+ [风险预算配置]
各模块作用:
- 最大回撤:账户层面终极风控,触及强制止损
- CVaR:组合层面风险度量,比VaR更保守
- GARCH波动率:动态调整整体仓位,高波动降低仓位
- 风险预算:配置层面控制各股票风险贡献
简化版(个人量化):
[最大回撤监控]
+ [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 计算流程
# 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. 结论与建议
最终结论
- A股适合使用:最大回撤 + CVaR + 动态波动率 + 风险预算组合
- 个人量化简化版:最大回撤 + VaR + 波动率 + 仓位限制足够用
- 不要过度复杂:简单模型稳定可靠,容易维护
- 动态调整比静态模型好:A股波动率变化大,必须动态调整
下一步实现
- 实现基础风险计算模块
- 回测不同参数在A股的表现
- 比较不同模型风控效果
- 选择最优参数
本章完 ⚔️