VaR_CVaR-VaR和CVaR风险
VaR(Value at Risk)与 CVaR(Conditional Value at Risk,也称 Expected Shortfall, ES)是金融风险管理中的经典尾部风险度量。给定置信水平 α(0,1),VaR 描述“在该置信水平下的最小尾部损失阈值”,CVaR …
VaR_CVaR-VaR和CVaR风险
1. 方法概述
VaR(Value at Risk)与 CVaR(Conditional Value at Risk,也称 Expected Shortfall, ES)是金融风险管理中的经典尾部风险度量。给定置信水平 \(\alpha\in(0,1)\),VaR 描述“在该置信水平下的最小尾部损失阈值”,CVaR 描述“超过该阈值后的平均损失”。
设收益率序列为
$$ \{r_t\}_{t=1}^{T} \tag{1} $$
本系统统一采用“损失为正”的定义,并支持:
- 历史模拟法(historical);
- 参数正态法(parametric normal);
- 蒙特卡洛正态法(monte carlo normal);
- 长仓(long)与短仓(short)两种头寸方向;
- 滚动窗口风险序列与 Kupiec POF 回测检验。
2. 数据预处理与收益率构造
若输入为价格序列 \(P_t\),系统支持两种收益率:
对数收益率: $$ r_t=\ln P_t-\ln P_{t-1} \tag{2} $$
简单收益率: $$ r_t=\frac{P_t-P_{t-1}}{P_{t-1}} \tag{3} $$
系统支持缩放系数 \(s>0\),缩放后收益率为
$$ \tilde r_t=s\,r_t \tag{4} $$
3. 多步持有期聚合(horizon)
设持有期为 \(h\ge 1\)。当 \(h=1\) 时直接使用单期收益率;当 \(h>1\) 时:
对数收益率聚合: $$ R_t^{(h)}=\sum_{j=0}^{h-1}\tilde r_{t-j} \tag{5} $$
简单收益率聚合: $$ R_t^{(h)}=\prod_{j=0}^{h-1}(1+\tilde r_{t-j})-1 \tag{6} $$
后续 VaR/CVaR 在 \(R_t^{(h)}\) 的分布上计算。
4. 损失定义与头寸方向
记损失为 \(L\)。
4.1 长仓(long)
长仓下“下跌为损失”,定义
$$ L=-R \tag{7} $$
VaR 为损失分位数: $$ \text{VaR}_{\alpha}=Q_{\alpha}(L)=-Q_{1-\alpha}(R) \tag{8} $$
CVaR(ES)为超阈值条件期望: $$ \text{CVaR}_{\alpha}=\mathbb{E}[L\mid L\ge \text{VaR}_{\alpha}] =-\mathbb{E}[R\mid R\le Q_{1-\alpha}(R)] \tag{9} $$
4.2 短仓(short)
短仓下“上涨为损失”,定义
$$ L=R \tag{10} $$
$$ \text{VaR}_{\alpha}=Q_{\alpha}(L)=Q_{\alpha}(R) \tag{11} $$
$$ \text{CVaR}_{\alpha}=\mathbb{E}[L\mid L\ge \text{VaR}_{\alpha}] =\mathbb{E}[R\mid R\ge Q_{\alpha}(R)] \tag{12} $$
若头寸规模为 \(w\ge 0\),则风险值线性放大:
$$ \text{VaR}_{\alpha}^{(w)}=w\cdot \text{VaR}_{\alpha}, \qquad \text{CVaR}_{\alpha}^{(w)}=w\cdot \text{CVaR}_{\alpha} \tag{13} $$
5. 历史模拟法(Historical Simulation)
给定样本 \(\{R_t^{(h)}\}_{t=1}^{n}\),直接用经验分位数与尾部均值:
$$ \widehat{\text{VaR}}_{\alpha}=\hat Q_{\alpha}(L) \tag{14} $$
$$ \widehat{\text{CVaR}}_{\alpha}=\frac{1}{N_\alpha}\sum_{t: L_t\ge \widehat{\text{VaR}}_{\alpha}}L_t \tag{15} $$
其中 \(N_\alpha\) 为超越次数。
6. 参数正态法(Parametric Normal)
设聚合收益近似服从正态分布:
$$ R\sim\mathcal{N}(\mu,\sigma^2) \tag{16} $$
记 \(p=1-\alpha\),\(z_p=\Phi^{-1}(p)\),\(\phi(\cdot)\) 与 \(\Phi(\cdot)\) 分别为标准正态密度与分布函数。
6.1 长仓(左尾)
收益率 VaR 阈值: $$ q_{\text{long}}=\mu+\sigma z_p \tag{17} $$
条件尾部均值: $$ \mathbb{E}[R\mid R\le q_{\text{long}}]=\mu-\sigma\frac{\phi(z_p)}{p} \tag{18} $$
由式(8)–(9)得到: $$ \text{VaR}_{\alpha}= -q_{\text{long}}, \qquad \text{CVaR}_{\alpha}= -\left(\mu-\sigma\frac{\phi(z_p)}{p}\right) \tag{19} $$
6.2 短仓(右尾)
令 \(z_\alpha=\Phi^{-1}(\alpha)\),则 $$ q_{\text{short}}=\mu+\sigma z_\alpha \tag{20} $$
$$ \mathbb{E}[R\mid R\ge q_{\text{short}}]=\mu+\sigma\frac{\phi(z_\alpha)}{1-\alpha} \tag{21} $$
根据式(11)–(12): $$ \text{VaR}_{\alpha}=q_{\text{short}}, \qquad \text{CVaR}_{\alpha}=\mu+\sigma\frac{\phi(z_\alpha)}{1-\alpha} \tag{22} $$
7. 蒙特卡洛正态法(Monte Carlo Normal)
先估计 \((\mu,\sigma)\),再生成 \(M\) 个模拟收益:
$$ R^{(m)}\sim\mathcal{N}(\mu,\sigma^2),\quad m=1,\ldots,M \tag{23} $$
然后在模拟样本上按历史法计算 VaR/CVaR:
$$ \widehat{\text{VaR}}_{\alpha}^{\text{MC}}=\hat Q_{\alpha}(L^{(m)}), \qquad \widehat{\text{CVaR}}_{\alpha}^{\text{MC}}= \frac{1}{N_\alpha}\sum_{m:L^{(m)}\ge \widehat{\text{VaR}}_{\alpha}^{\text{MC}}}L^{(m)} \tag{24} $$
8. 滚动风险序列与回测
设滚动窗口长度为 \(W\)。对每个时点 \(t\ge W\),用窗口样本估计 \(\text{VaR}_{t,\alpha}\),形成风险序列。
8.1 异常事件定义
记实际损失为 \(L_t\),异常指示变量
$$ I_t=\mathbf{1}(L_t>\text{VaR}_{t,\alpha}) \tag{25} $$
异常总数
$$ X=\sum_{t=1}^{N}I_t, \qquad \hat\pi=\frac{X}{N} \tag{26} $$
理论异常率为尾部概率
$$ \pi_0=1-\alpha \tag{27} $$
8.2 Kupiec POF 检验
无条件覆盖原假设 \(H_0:\pi=\pi_0\)。似然比统计量:
$$ LR_{\text{POF}}=-2\ln \frac{(1-\pi_0)^{N-X}\pi_0^X}{(1-\hat\pi)^{N-X}\hat\pi^X} \tag{28} $$
在 \(H_0\) 下近似满足
$$ LR_{\text{POF}}\sim\chi_1^2 \tag{29} $$
据此得到 p 值评估回测一致性。
9. 输出结果与论文复现建议
系统输出包括:
Returns:收益率与持有期聚合收益;RiskSeries:滚动 VaR/CVaR(损失阈值与收益率阈值);Summary:总体 VaR/CVaR、样本量、尾概率与回测摘要;Backtest:异常点明细(returns、loss、var_loss、exceed);- 图表:收益率-阈值图、收益分布图、异常点回测图。
10. 符号说明表
| 符号 | 含义 |
|---|---|
| \(r_t\) | 单期收益率 |
| \(R_t^{(h)}\) | \(h\) 期聚合收益率 |
| \(L\) | 损失变量(损失为正) |
| \(\alpha\) | 置信水平 |
| \(\text{VaR}_{\alpha}\) | 在 \(\alpha\) 下的风险阈值 |
| \(\text{CVaR}_{\alpha}\) | 超越 VaR 后的条件平均损失 |
| \(\mu,\sigma\) | 正态分布均值与标准差 |
| \(W\) | 滚动窗口长度 |
| \(I_t\) | 异常指示变量 |
| \(LR_{\text{POF}}\) | Kupiec POF 似然比统计量 |
11. 论文写作模板
11.1 中文方法段落模板
“本文采用 VaR-CVaR 框架刻画收益序列尾部风险。首先根据价格数据计算收益率(式(2)或式(3)),并在给定持有期下构造聚合收益(式(5)–(6))。在置信水平 \(\alpha\) 下,分别使用历史模拟法、参数正态法与蒙特卡洛法估计 VaR 与 CVaR(式(14)–(24))。进一步基于滚动窗口构造动态 VaR 序列,并采用 Kupiec POF 检验(式(28))验证异常覆盖率与理论尾概率的一致性。”
11.2 中文图表题注模板
- 图 1 收益率与 VaR/CVaR 阈值时序图。
- 图 2 收益率分布直方图及 VaR 阈值线。
- 图 3 回测异常点(exceptions)识别图。
11.3 英文摘要段落模板
“This study evaluates tail risk using the VaR-CVaR framework. Returns are constructed from price data and aggregated to the target holding period. VaR and CVaR are estimated under historical simulation, parametric normal, and Monte Carlo approaches at a given confidence level. We further perform rolling-window backtesting and apply the Kupiec proportion-of-failures test to examine whether exception frequencies are consistent with the theoretical tail probability.”
12. 实现说明与注意事项
就本项目当前可运行版本而言,VaR/CVaR 模块的真实核心位于:
具体的算法2/VaR_CVaR-VaR和CVaR风险/core/calculator.py具体的算法2/VaR_CVaR-VaR和CVaR风险/ui/results_widget.py
它不是只输出一个 VaR 数值,而是完整输出“收益率序列 + 风险序列 + 回测结果 + 图表 + repro”。
12.1 当前 Excel 导出结构
根据 core/calculator.py 的实际导出逻辑,结果工作簿固定包含:
RawData_PreviewReturnsRiskSeriesSummaryParametersBacktestCharts_Index
其中:
Returns对应收益率与持有期聚合结果;RiskSeries对应滚动 VaR/CVaR 序列;Summary对应总体风险值、样本量与方法参数摘要;Backtest对应异常点识别与 Kupiec 检验相关结果;Charts_Index记录图表名与路径。
因此,论文中的式(2)至式(29)并不是停留在理论层,而是分别落实到了 Returns、RiskSeries、Summary 和 Backtest 这些实际导出表中。
12.2 当前图表与 results 目录的真实产物
程序当前会在结果目录中生成至少三张图:
chart_returns_var_cvar.pngchart_returns_hist.pngchart_backtest_exceptions.png
实际结果目录形如:
results/VaR_CVaR分析结果_<YYYYMMDD_HHMMSS>/
目录中通常同时存在:
VaR_CVaR分析结果_<时间戳>.xlsxrepro_var_cvar_<时间戳>.pyrepro_inputs/sample_data.csv
这说明当前模块已经形成“结果工作簿 + 图表 + 输入副本 + 可执行 repro 脚本”的完整实验复现链。
12.3 当前 repro 脚本的真实行为
结果页 ui/results_widget.py 点击导出后,会生成 repro_var_cvar_<时间戳>.py。该脚本会复用本次:
- 数据文件路径;
- 置信水平;
- 方法选择;
- 头寸方向;
- horizon;
- rolling window 等关键参数,
并重新调用核心计算逻辑,生成新的结果文件。
因此,若论文或报告需要强调复现性,应该直接引用该脚本与 repro_inputs/ 目录,而不是只写“可根据同一参数重复计算”。
12.4 当前项目实现的使用注意事项
- 置信水平 \(\alpha\) 建议取 \(0.95\) 或 \(0.99\);
- 样本量过小会显著降低尾部估计稳定性;
- 参数正态法依赖正态假设,重尾资产建议结合历史法与 MC 法;
- 回测通常建议在 \(h=1\) 情况下进行;
- 长仓与短仓损失方向不同,解释 VaR/CVaR 时需明确头寸定义;
- 论文若与本程序保持一致,应把
Backtest与Charts_Index一并纳入结果说明,因为它们属于当前实现的标准导出,而不是附加功能。
13. 单篇终审补充
13.1 图题与表题对齐建议
- 本文档应优先对应真实算法目录
具体的算法2/VaR_CVaR-VaR和CVaR风险。 - 代表性结果目录建议绑定
具体的算法2/VaR_CVaR-VaR和CVaR风险/results/VaR_CVaR分析结果_20260329_165528。 - 表题应直接对应
VaR_CVaR分析结果_20260329_165528.xlsx的真实工作表:RawData_Preview、Returns、RiskSeries、Summary、Parameters、Backtest、Charts_Index。 - 图题应优先绑定该目录下真实图:
chart_returns_var_cvar.png、chart_returns_hist.png、chart_backtest_exceptions.png。
13.2 终审说明
- 当前 VaR/CVaR 目录属于较完整的单目录闭环:结果表、图、复现脚本和输入副本都在同一时间戳目录下。
- 复现脚本实际为
repro_var_cvar_20260329_165528.py,其SRC_FILE写法为repro_inputs/sample_data.csv;目录中另有实体输入副本sample_data.csv,说明历史导出在“是否保留repro_inputs子目录”上存在版本差异。 - 因此论文终稿宜写成“复现脚本基于结果目录内的样本快照复现”,而不要把
repro_inputs是否显式存在写成绝对前提。
13.3 全量强化补充
- 当前应绑定的首层主结果目录是
具体的算法2/VaR_CVaR-VaR和CVaR风险/results/VaR_CVaR分析结果_20260329_165528。首层主工作簿为具体的算法2/VaR_CVaR-VaR和CVaR风险/results/VaR_CVaR分析结果_20260329_165528/VaR_CVaR分析结果_20260329_165528.xlsx。 - 上述主工作簿当前实际工作表为
RawData_Preview、Returns、RiskSeries、Summary、Parameters、Backtest、Charts_Index。这是正文中报告收益率、风险序列和回测异常点时应直接绑定的真实导出结构。 - 当前主目录下还存在一份后续再生成工作簿
具体的算法2/VaR_CVaR-VaR和CVaR风险/results/VaR_CVaR分析结果_20260329_165528/VaR_CVaR分析结果_20260329_165530.xlsx。写文档时应把165528视为首层主结果,把165530视为由 repro 或再次导出形成的同目录后续产物,不能把两本工作簿写成同一批次并列主结果。 - 当前首层实体图文件为
具体的算法2/VaR_CVaR-VaR和CVaR风险/results/VaR_CVaR分析结果_20260329_165528/chart_returns_var_cvar.png、chart_returns_hist.png、chart_backtest_exceptions.png,三者都直接位于首层目录根部,而不是charts/子目录。 - 当前 repro 脚本是
具体的算法2/VaR_CVaR-VaR和CVaR风险/results/VaR_CVaR分析结果_20260329_165528/repro_var_cvar_20260329_165528.py,其真实输入口径为SRC_FILE = 'repro_inputs/sample_data.csv';对应输入副本位于首层repro_inputs/sample_data.csv。因此当前更准确的说法是“首层目录内标准repro_inputs/...复现”,而不是“可能有也可能没有repro_inputs的不确定结构”。
14. 软件实现核查补充(2026-07)
- 当前实现的主结果目录应写作
具体的算法2/VaR_CVaR-VaR和CVaR风险/results/VaR_CVaR分析结果_20260329_165528,主工作簿为VaR_CVaR分析结果_20260329_165528.xlsx。 - 正文应围绕
RawData_Preview、Returns、RiskSeries、Summary、Parameters、Backtest、Charts_Index来写,图则对应chart_returns_var_cvar.png、chart_returns_hist.png、chart_backtest_exceptions.png。 - 当前目录还保留
165530的后续工作簿,正文引用时不要把它写成同批次主结果。 repro_var_cvar_20260329_165528.py + repro_inputs/sample_data.csv是首层目录内标准复现链,文中按这个口径写即可。