三、CVaR定义与数学表达:条件风险价值的公式、连续与离散分布下的表示

在完成VaR(在险价值)的度量框架后,我们面临一个关键问题:VaR仅描述了分布上的某个分位点,却无法回答“当损失超过该分位点时,平均损失究竟有多大”。这正是条件风险价值(Conditional Value at Risk, CVaR)所要填补的空白。CVaR又称期望损失(Expected Shortfall, ES)或尾部损失(Tail Loss),它衡量的是在给定置信水平下,损失分布尾部(即超过VaR阈值的部分)的条件期望值。本章将系统推导CVaR的数学定义,并分别给出连续型与离散型分布下的精确表达式,帮助学员建立从公式到计算、从理论到落地的完整认知。

CVaR 数学表达全景图 损失分布 f(L) VaR_α 尾部区域 (损失 > VaR) 损失 L f(L) 连续分布表示 CVaR_α(L) = E[L | L ≥ VaR_α] = (1/(1-α)) ∫_{VaR_α}^{∞} x·f(x) dx 其中 α 为置信水平 f(x) 为损失概率密度函数 适用于正态、t分布等连续模型 离散分布表示 CVaR_α(L) = (1/(1-α)) · [ Σ_{i: L_i ≥ VaR_α} p_i · L_i + (Σ_{i: L_i < VaR_α} p_i - α)·VaR_α ] p_i 为第 i 个情景的概率 适用于历史模拟、蒙特卡洛 及情景分析等离散场景 核心关系 CVaR ≥ VaR 恒成立(同置信水平下) CVaR 满足次可加性(Subadditivity),是一致性风险度量;VaR 不满足 当损失分布连续时,CVaR = Tail VaR = Expected Shortfall

上图从损失分布的角度展示了CVaR的本质:它关注的是分布右尾(即损失超过VaR阈值的区域)的平均损失水平。与VaR只给出一个分位点不同,CVaR将尾部所有极端损失纳入考量,因此对尾部风险更为敏感。下面我们从数学定义出发,逐步展开连续与离散两种情形下的精确表达。

3.1 CVaR的核心原理:从分位点到尾部期望

设随机变量 L 表示投资组合在持有期内的损失(正数表示亏损),其累积分布函数为 FL(l) = P(L ≤ l)。给定置信水平 α(通常取 95% 或 99%),VaRα 定义为损失分布的 α 分位数:

VaRα = inf{ l ∈ ℝ : FL(l) ≥ α }

直观上,VaRα 表示在 α 概率水平下,损失不会超过该值;但一旦损失真的超过 VaRα,其平均规模是多少?这正是 CVaR 要回答的问题。CVaRα 的正式定义为:

CVaRα(L) = E[ L | L ≥ VaRα ]

即“在损失超过 VaRα 的条件下,损失的条件期望”。这一概念最早由 Artzner 等(1999)在一致性风险度量框架下提出,后经 Rockafellar 和 Uryasev(2000, 2002)发展为可通过凸优化求解的实用工具。CVaR 之所以被称为“一致性风险度量”,是因为它满足单调性、正齐次性、平移不变性和次可加性四大公理,而 VaR 不满足次可加性,这意味着分散化投资在 VaR 框架下可能反而“增加”风险,这显然违背金融常识。

关键理解:VaR 是“门槛”,CVaR 是“门槛后面的平均深度”。例如,99% VaR 为 1000 万元,意味着有 99% 的把握损失不超过 1000 万;而 99% CVaR 为 1500 万元,则意味着一旦损失超过 1000 万(即落入最坏的 1% 尾部),平均损失将达到 1500 万。CVaR 永远不小于 VaR,两者之差反映了尾部风险的“厚度”。

3.2 连续分布下的CVaR公式

当损失 L 为连续型随机变量,具有概率密度函数 fL(x) 时,CVaR 可以写成积分形式。根据条件期望的定义:

CVaRα(L) = (1 / (1-α)) · ∫VaRα∞ x · fL(x) dx

这里分母 (1-α) 是尾部概率,即 P(L ≥ VaRα) = 1 - FL(VaRα) = 1 - α(对于连续分布,等号严格成立)。分子是尾部区域的“概率加权损失总和”。这一公式的直观含义是:将尾部所有可能的损失值 x 按其概率密度 fL(x) 加权求和,再除以尾部总概率,得到尾部的平均损失。

对于常见的参数分布,CVaR 有解析表达式。以正态分布为例,若 L ~ N(μ, σ²),则:

CVaRα(L) = μ + σ · φ(Φ⁻¹(α)) / (1-α)

其中 φ(·) 为标准正态密度函数,Φ⁻¹(·) 为标准正态分位数函数。例如,当 α=0.99 时,Φ⁻¹(0.99)≈2.326,φ(2.326)≈0.0267,因此 CVaR = μ + σ × (0.0267/0.01) = μ + 2.67σ。而 99% VaR = μ + 2.33σ,可见 CVaR 比 VaR 多出约 0.34σ 的尾部风险溢价。

分布类型CVaRα 解析公式适用场景
正态分布 N(μ, σ²)μ + σ·φ(Φ⁻¹(α))/(1-α)资产收益率近似正态、中心极限定理适用
t分布(ν自由度)μ + σ·gν(tν⁻¹(α))·(ν+(t⁻¹)²)/((ν-1)(1-α))厚尾数据、金融收益率常见
广义帕累托分布 GPD(ξ,β)VaRα + (β + ξ·(VaRα-u))/(1-ξ),ξ<1极值理论(POT)建模尾部
对数正态分布exp(μ+σ²/2)·Φ(σ-Φ⁻¹(α))/(1-α)资产价格、损失金额为正数

在实际应用中,若已知损失分布的具体形式,直接代入上述公式即可快速计算 CVaR。但需注意,正态分布假设往往低估尾部风险,实际金融数据常呈现“厚尾”特征,此时 t 分布或极值分布更为合适。

3.3 离散分布下的CVaR公式

在实务中,我们更多面对的是离散情景:历史模拟法产生的 N 个等权重历史损失样本,或蒙特卡洛模拟生成的 N 个情景,或压力测试设定的若干离散场景。此时损失分布是离散的,每个情景 Li 对应概率 pi(通常 pi = 1/N)。离散情形下,CVaR 的计算需要小心处理 VaR 分位点可能落在两个情景之间的情况。

设损失样本按升序排列:L(1) ≤ L(2) ≤ … ≤ L(N),对应概率 p(1), p(2), …, p(N)。给定置信水平 α,定义 k 为满足 Σi=1k p(i) ≥ α 的最小整数。则离散 CVaR 的精确公式为:

CVaRα = (1/(1-α)) · [ Σi=k+1N p(i)·L(i) + (Σi=1k p(i) - α)·L(k) ]

该公式的含义是:尾部区域由两部分组成——严格大于 VaR 阈值的情景(i=k+1 到 N),以及 VaR 阈值本身所在的情景(第 k 个情景)中超出 α 概率的那部分“残差”。第二项 (Σi=1k p(i) - α) 表示累积概率超过 α 的“多余概率质量”,这部分概率对应的损失恰好是 L(k)。

当所有情景等概率(pi = 1/N)时,公式可简化为:

CVaRα = (1/(N·(1-α))) · [ Σi=k+1N L(i) + (k - N·α)·L(k) ]

其中 k = ⌈N·α⌉(向上取整)。若 N·α 恰好为整数,则 k = N·α,此时第二项为零,CVaR 就是尾部 (N-k) 个损失样本的简单平均。

计算技巧:在 Excel 或 Python 中,推荐使用 Rockafellar-Uryasev 的线性规划公式:CVaRα = minβ∈ℝ { β + (1/(1-α)) · Σi=1N pi·max(Li - β, 0) }。该公式将 CVaR 转化为一个凸优化问题,最优解 β* 恰好等于 VaRα,且无需显式排序,非常适合编程实现。

3.4 案例拆解:历史模拟法下的CVaR计算

我们通过一个完整的案例来演示离散 CVaR 的计算过程。假设某投资组合过去 10 个交易日的日损失(万元)为:

[120, 85, 200, 150, 95, 310, 75, 180, 140, 260]

我们计算 80% 置信水平下的 VaR 和 CVaR。首先将损失升序排列:

排序 i12345678910
损失 L(i)758595120140150180200260310
累积概率0.10.20.30.40.50.60.70.80.91.0

α=0.80,N=10,N·α=8 为整数,因此 k=8,VaR0.80 = L(8) = 200 万元。尾部情景为 i=9 和 i=10,即损失 260 和 310 万元。由于 N·α 为整数,第二项为零,CVaR 为尾部损失的平均:

CVaR0.80 = (260 + 310) / 2 = 285 万元

这意味着,在 80% 置信水平下,一旦损失超过 200 万元(即落入最差的 20% 尾部),平均损失为 285 万元。作为对比,若只看 VaR,我们只知道“有 80% 把握损失不超过 200 万”,但不知道尾部平均损失高达 285 万——这正是 CVaR 提供的增量信息。

现在考虑更一般的情形:若 α=0.85,则 N·α=8.5,k=⌈8.5⌉=9。VaR0.85 = L(9) = 260 万元。此时尾部情景为 i=10(损失 310),但累积概率从 0.8 到 0.9 之间还有“多余概率”需要处理。根据公式:

CVaR0.85 = (1/(10×0.15)) × [ 310 + (9 - 8.5)×260 ] = (1/1.5) × [310 + 130] = 440/1.5 ≈ 293.33 万元

注意这里的第二项 (9 - 8.5)×260 = 0.5×260 = 130,表示在 85% 分位点处,VaR 阈值 260 万元本身也有一部分“概率质量”落入尾部(因为累积概率从 0.8 到 0.9 的区间内,有 0.5 的概率质量对应损失 260 万元)。这种处理方式确保了 CVaR 计算的精确性,避免了简单平均带来的偏差。

常见误区:初学者常犯的错误是直接将尾部所有损失简单平均,而忽略 VaR 阈值本身可能部分落入尾部的情况。当 N·α 不是整数时,这种简化会导致 CVaR 被低估或高估。务必使用完整的离散公式,或采用 Rockafellar-Uryasev 的优化公式。

3.5 连续与离散的统一视角与实操要点

尽管连续和离散公式在形式上不同,但它们的本质是统一的:CVaR 都是“尾部损失的条件期望”。连续公式通过积分实现,离散公式通过加权求和实现。在实际应用中,选择哪种形式取决于数据可得性和建模假设:

  • 参数法:假设损失服从特定分布(正态、t、GPD等),使用解析公式。优点是计算快、便于敏感性分析;缺点是分布假设可能错误。
  • 历史模拟法:直接使用历史损失样本,按离散公式计算。优点是无分布假设、直观;缺点是依赖历史数据质量,对极端事件代表性不足。
  • 蒙特卡洛模拟:生成大量情景,按离散公式计算。优点是可灵活设定分布和相关性;缺点是计算量大,且模型风险较高。
  • 极值理论(POT):对超过阈值的尾部数据用 GPD 拟合,再计算 CVaR。优点是专注于尾部、外推能力强;缺点是需要选择合适阈值,且样本量可能不足。

在编程实现方面,Python 中可使用 scipy.stats 计算参数分布的 CVaR,或使用 numpy 对历史样本排序后按公式计算。对于大规模组合,推荐使用 Rockafellar-Uryasev 的线性规划形式,因为它可以方便地嵌入优化框架,同时求解最优权重和 CVaR。

一致性风险度量的意义:CVaR 满足次可加性,意味着分散化投资必然不会增加 CVaR。这一性质使得 CVaR 成为投资组合优化的理想目标函数——当我们在多个资产间分配权重时,最小化组合 CVaR 可以自然地实现风险分散。相比之下,VaR 可能违背次可加性,导致优化结果鼓励集中持仓,这与风险管理的基本直觉相悖。