其他
需要前瞻性估计投资组合未来损失、VaR/ES、蒙特卡洛…
当用户询问未来可能亏损多少、最坏情景、尾部风险、风险预算、99%置信损失、蒙特卡洛模拟或组合风险前瞻预测时,用 VaR/CVaR、情景分析、压力测试和因子分解来量化。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 55/100 ×0.15
适用场景
需要前瞻性估计投资组合未来损失、VaR/通用
解决思路
- 参数法(方差-协方差)VaR:假设收益正态;短期限零期望时用 VaR = W * z_alpha * sigma_p;W 为组合价值,z_alpha 为置信水平 z 分位(95% 用 1.645,99% 用 2.326),sigma_p 为对应期限组合波动率;含期望收益时用 VaR_alpha = mu - z_alpha * sigma。
- 将 1 日 VaR 缩放到 h 日 VaR:在收益 i.i.d. 假设下用 VaR_h = VaR_1 * sqrt(h)。
- 多资产组合 VaR:给定权重向量 w 和协方差矩阵 Sigma,先算 sigma_p = sqrt(w' * Sigma * w),再算 VaR_p = W * z_alpha * sqrt(w' * Sigma * w);协方差矩阵同时刻画各资产波动率和相关性。
- 蒙特卡洛 VaR:模拟大量组合收益情景(如 10,000+),取模拟损失分布的 alpha 分位数。
- 蒙特卡洛步骤 1:估计收益分布参数(均值向量、协方差矩阵,或使用 copula 模型)。
- 蒙特卡洛步骤 2:生成 N 个随机收益情景;多变量正态可用协方差矩阵 Cholesky 分解。
- 蒙特卡洛步骤 3:对每个情景计算组合收益。
- 蒙特卡洛步骤 4:排序结果并识别 alpha 分位数损失;蒙特卡洛可处理非正态、厚尾、路径依赖工具和非线性收益(如期权)。
- 计算 CVaR/ES:回答「损失超过 VaR 时平均损失是多少」;ES_alpha = E[Loss | Loss > VaR_alpha]。
- 正态分布下 CVaR:ES_alpha = mu + sigma * phi(z_alpha) / (1 - alpha),phi 为标准正态 PDF;因满足次可加性,CVaR 是一致风险度量,分散化总会降低或维持 CVaR,而 VaR 不保证。
- 计算 Component VaR:将总组合 VaR 分解到各头寸,且各 Component VaR 之和等于总 VaR;CVaR_i = w_i * beta_i * VaR_p,其中 beta_i = Cov(R_i, R_p) / Var(R_p);等价 CVaR_i = w_i * (partial VaR / partial w_i),sum(CVaR_i) = VaR_p;用它识别最大风险贡献头寸。
- 计算 Marginal VaR:衡量组合 VaR 对某头寸权重小幅增加的变动率;MVaR_i = partial(VaR_p) / partial(w_i) = z_alpha * (Sigma * w)_i / sigma_p;用于头寸 sizing:增加低 Marginal VaR 头寸更能降低组合风险。
- 情景分析:把特定历史或假设市场变动应用到当前组合,估计 P&L 影响。
- 历史情景:用当前持仓回放真实市场事件(如 2008 GFC、2020 COVID crash、2022 rate hiking cycle)。
- 假设情景:构造自定义冲击(如 equities -20%, rates +200bp, credit spreads +300bp, USD +10%)。
- 计算情景 P&L:将情景收益应用到当前头寸敞口并重估。
- 压力测试:建立结构化框架评估极端但可信条件下的组合韧性。
- 常用压力情景:股票崩盘 S&P 500 -30% 到 -40%;利率冲击 +300bp 平行移动;信用危机 investment-grade spreads +200bp、high-yield +800bp;流动性冻结 bid-ask spreads 扩大 10x、折价强制卖出;汇率冲击主要货币对变动 15-20%;滞胀 inflation +5%、GDP -3%、rates +200bp。
- 压力测试纳入二阶效应:margin calls、流动性需求、相关性飙升、交易对手风险。
- 因子风险分解:把总组合风险分为系统性因子风险和特异性(证券特定)风险;sigma^2_p = b' * Sigma_f * b + sum(w_i^2 * sigma^2_epsilon_i),其中 b 为组合因子暴露向量,Sigma_f 为因子协方差矩阵,sigma^2_epsilon_i 为资产 i 的特异性方差。
- 常用因子模型:Fama-French(market, size, value, momentum)、Barra risk models、PCA-based statistical factors。
- 关键公式表按用途执行:单头寸参数 VaR 用 W * z_alpha * sigma;多资产组合 VaR 用 W * z_alpha * sqrt(w' * Sigma * w);多日 VaR 用 VaR_1 * sqrt(h);正态 CVaR 用 mu + sigma * phi(z_alpha)/(1-alpha);Component VaR 用 w_i * beta_i * VaR_p;Marginal VaR 用 z_alpha * (Sigma * w)_i / sigma_p;因子风险用 b' * Sigma_f * b;特异性风险用 sum(w_i^2 * sigma^2_epsilon_i)。
- 示例 1 参数法 95% VaR:给定 $1,000,000 股票组合、年化波动率 15%,按 252 交易日和零日期望收益;日波动率 sigma_daily = 0.15 / sqrt(252) = 0.00945;1 日 95% VaR = $1,000,000 * 1.645 * 0.00945 = $15,545;也可先算年 VaR = $1,000,000 * 1.645 * 0.15 = $246,750,再除以 sqrt(252) 得 $15,545;解释为正常市场下一天损失超过 $15,545 的概率为 5%。
- 示例 2 蒙特卡洛 VaR:两资产组合 60% equities、40% bonds;equities mu=10%, sigma=18%;bonds mu=4%, sigma=5%;rho=-0.2;组合价值 $1,000,000。
- 示例 2 步骤:构造协方差矩阵 Sigma = [[0.0324, -0.0018], [-0.0018, 0.0025]];对 Sigma 做 Cholesky 分解得下三角 L;模拟 10,000 个情景,每次抽 z ~ N(0,I),算 r = mu + L*z,再算组合收益 R_p = w' * r;对每个情景算 P&L = $1,000,000 * R_p;将 P&L 从最差到最好排序,第 500 差(5 分位)为 95% VaR。解析基准 sigma_p = sqrt(0.6^2*0.0324 + 0.4^2*0.0025 + 2*0.6*0.4*(-0.0018)) = 10.58%,VaR_95% = $1,000,000 * 1.645 * 0.1058 = $174,090;蒙特卡洛在多变量正态下应近似收敛到该值。
- 示例 3 Expected Shortfall:若上述 10,000 个情景中超过 VaR 的最差 500 个情景平均损失为 $225,000,则 95% CVaR = $225,000;解释为损失超过 95% VaR 阈值时平均损失 $225,000,比 $174,090 的 VaR 约差 29%,体现尾部事件严重性。
- 常见坑/验证:VaR 不说明尾部形状;两个 VaR 相同的组合尾部损失可能差异巨大,必须同时计算 CVaR 理解尾部严重性。
- 参数法假设正态:金融收益有厚尾和偏度,参数法系统性低估尾部风险;改用厚尾分布蒙特卡洛或历史模拟更现实。
- 危机中相关性崩溃:市场压力下相关性向 1.0 飙升,恰是分散化最需要时失效;压力测试应使用危机期相关性,而非平静期相关性。
- 协方差估计窗口:窗口太短噪声大,太长包含不同市场状态的陈旧数据;常用折中是 1-3 年日数据,或用 EWMA 加权协方差。
- 区分绝对 VaR 和相对 VaR:绝对 VaR 含期望收益(VaR = -mu + z*sigma),相对 VaR 不含(VaR = z*sigma);短期限(1-10 日)期望收益可忽略,区别小;长期限重要。
- 平方根时间缩放限制:VaR_h = VaR_1 * sqrt(h) 假设 i.i.d.;存在序列相关或波动率聚集时该缩放不准确。
- 运行脚本:uv run scripts/forward_risk.py 运行 demo(使用 PEP 723 inline deps);uv run scripts/forward_risk.py --verify 检查 demo 输出是否匹配 worked examples(不匹配 exit 1);python3 scripts/forward_risk.py 作为替代(需 pip install numpy scipy)。Demo 打印上述计算,值匹配 worked examples;运行 --help 查看类和函数列表;程序化使用时导入模块,而不是运行它(demo 只在 python forward_risk.py 下执行)。
- 交叉引用:historical-risk 提供历史 VaR 和已实现波动率作为非参数替代和校准基准;performance-metrics 可用 VaR 和 CVaR 作为修正风险调整比率的分母(如 return/CVaR);volatility-modeling 用 EWMA 和 GARCH 波动率预测为参数法和蒙特卡洛 VaR 提供 sigma 输入。
适用边界 · 注意事项
- 收益明显非正态、厚尾或偏斜时,不要仅依赖参数法 VaR,否则会低估尾部风险。
- 不要只报 VaR 而不报 CVaR;VaR 不描述尾部形状,两个相同 VaR 组合的尾部损失可能差异巨大。
- 存在序列相关、波动率聚集或长持有期时,不要盲目用 sqrt(h) 缩放 VaR;危机压力测试也不要使用平静期相关性。