← 返回笔记
风险度量 2026年7月19日 约 7 分钟读完

Rockafellar & Uryasev《Optimization of Conditional Value-at-Risk》论文阅读

理解 CVaR 为什么比 VaR 更适合优化,并把场景损失函数迁移到售电公司中长期—现货购电风险管理。

论文阅读CVaR凸优化场景分析

0. 论文解决了什么问题

上一篇 Artzner 等人的论文回答了: 一个合理的风险度量应当满足什么性质? Rockafellar 与 Uryasev 这篇论文进一步回答: CVaR 理论性质较好,但怎样把它真正写进优化模型,并计算出最优决策? VaR 的优点是直观:它给出尾部风险开始的损失门槛。但它也有明显局限:

  • 它通常不能告诉我们越过门槛以后会亏得多严重;
  • 一般情况下不满足次可加性;
  • 关于决策变量可能不凸、不光滑,在场景模型中不容易直接优化。 CVaR 则衡量进入尾部以后损失的平均水平。本文最重要的贡献,是构造了一个辅助函数,把 CVaR 优化转化为凸优化;在有限场景下,问题还可以进一步转化为线性规划,并在优化 CVaR 的同时得到对应的 VaR。

1. VaR 与 CVaR

假设未来有 100 种等概率情况,并将损失从小到大排列。 取:

β=0.95\beta=0.95

假设前 95 种情况下,损失都不超过 10 万元;最差的 5 种情况下,损失分别为:

12, 14, 18, 20, 36 万元12,\ 14,\ 18,\ 20,\ 36\text{ 万元}

那么:

VaR0.95=10 万元\operatorname{VaR}_{0.95}=10\text{ 万元}

它表示: 约 95% 的情况下,损失不会超过 10 万元。 而:

CVaR0.95=12+14+18+20+365=20 万元\operatorname{CVaR}_{0.95} = \frac{12+14+18+20+36}{5} = 20\text{ 万元}

它表示: 一旦进入最差的 5% 情况,平均损失为 20 万元。 因此可以简单记忆:

  • VaR:尾部风险从哪里开始;
  • CVaR:进入尾部以后,平均会亏多少。

2. 符号与基本定义

符号 含义 xx 决策向量,例如不同资产的配置比例 yy 随机向量,例如未来各资产的收益率 f(x,y)f(x,y) 决策 xx 在场景 yy 下产生的损失 β\beta 预先设定的概率水平,例如 0.95 α\alpha 优化过程中尝试的候选损失门槛 αβ(x)\alpha_\beta(x) 决策 xx 对应的 β\beta -VaR ϕβ(x)\phi_\beta(x) 决策 xx 对应的 β\beta -CVaR 在投资组合问题中:

x=(x1,x2,,xn)x=(x_1,x_2,\ldots,x_n)

表示资产权重,

y=(y1,y2,,yn)y=(y_1,y_2,\ldots,y_n)

表示各资产收益率。 投资组合收益为:

xTyx^Ty

因此,以“损失”为统一口径时:

f(x,y)=xTyf(x,y)=-x^Ty

收益为正时,损失为负;收益为负时,损失为正。

2.1 损失的累积分布函数

论文定义:

Ψ(x,α)=P(f(x,y)α)\Psi(x,\alpha) = P\bigl(f(x,y)\leq\alpha\bigr)

它表示: 在决策 xx 下,损失不超过门槛 α\alpha 的概率。

2.2 VaR 的正式定义

αβ(x)=min{αR:Ψ(x,α)β}\alpha_\beta(x) = \min\left\{ \alpha\in\mathbb{R}: \Psi(x,\alpha)\geq\beta \right\}

也就是说: 在所有候选损失门槛中,找到第一个使“损失不超过该门槛的概率”达到 β\beta 的门槛。 例如:

P(L100)=0.95P(L\leq100)=0.95

且 100 是满足该条件的最小门槛,则:

VaR0.95=100\operatorname{VaR}_{0.95}=100

2.3 CVaR 的正式定义

令:

L=f(x,y)L=f(x,y)

在论文假设损失分布连续的情况下:

ϕβ(x)=E[LLαβ(x)]\phi_\beta(x) = E\left[ L\mid L\geq\alpha_\beta(x) \right]

其中 EE 表示期望,即按照概率加权的平均值;竖线 \mid 表示“在……条件下”。 因此,该式表示: 在损失已经进入 VaR 所划分的尾部区域时,平均损失是多少。 其积分形式为:

ϕβ(x)=11βf(x,y)αβ(x)f(x,y)p(y)dy\phi_{\beta}(x) = \frac{1}{1-\beta} \int_{f(x,y)\geq \alpha_{\beta}(x)} f(x,y)\,p(y)\,dy

其中:

  • p(y)p(y) 是场景 yy 的概率密度;
  • 积分只覆盖损失达到或超过 VaR 的尾部区域;
  • 尾部区域的总概率为 1β1-\beta 。 积分首先得到“尾部损失对全部场景期望的贡献”,再除以尾部概率 1β1-\beta ,才得到“进入尾部以后”的条件平均损失。

3. CVaR 辅助函数

直接优化 CVaR 的困难在于: CVaR 的定义依赖 VaR,而 VaR 又会随着决策 xx 的变化而变化。 作者为此构造辅助函数:

Fβ(x,α)=α+11βE[(f(x,y)α)+]F_{\beta}(x,\alpha) = \alpha + \frac{1}{1-\beta} E\left[ \bigl(f(x,y)-\alpha\bigr)^+ \right]

其中:

[t]+=max(t,0)[t]^+=\max(t,0)

因此:

(f(x,y)α)+\bigl(f(x,y)-\alpha\bigr)^+

表示损失超过候选门槛 α\alpha 的部分;如果损失没有超过门槛,则记为 0。 可以把辅助函数理解为:

Fβ=α候选损失门槛+经尾部概率缩放后的平均超额损失只惩罚超过门槛的部分F_{\beta} = \underbrace{\alpha}_{\text{候选损失门槛}} + \underbrace{\text{经尾部概率缩放后的平均超额损失}}_{\text{只惩罚超过门槛的部分}}

例如候选门槛为 10 万元: 实际损失 损失减门槛 正部 6 万 -4 万 0 10 万 0 0 12 万 2 万 2 万 20 万 10 万 10 万 需要注意: 任意给定的 α\alpha 下, Fβ(x,α)F_\beta(x,\alpha) 只是辅助函数值;只有当 α\alpha 取到最优值时,它才等于 CVaR。

4. 定理 1:同时得到 VaR 与 CVaR

论文证明:

ϕβ(x)=minαRFβ(x,α)\phi_\beta(x) = \min_{\alpha\in\mathbb{R}} F_\beta(x,\alpha)

也就是说,对于固定决策 xx

  • 使 Fβ(x,α)F_\beta(x,\alpha) 最小的候选门槛,对应 VaR;
  • 此时辅助函数的最小值,对应 CVaR。 在通常的唯一解情况下,可以写成:

α=VaRβ(x)\alpha^*=\operatorname{VaR}_\beta(x)

Fβ(x,α)=CVaRβ(x)F_\beta(x,\alpha^*) = \operatorname{CVaR}_\beta(x)

4.1 为什么最优 α\alpha 是 VaR

论文给出:

Fβ(x,α)α=Ψ(x,α)β1β\frac{\partial F_\beta(x,\alpha)}{\partial\alpha} = \frac{\Psi(x,\alpha)-\beta}{1-\beta}

左边表示: 固定 xx ,只调整候选门槛 α\alpha 时,辅助函数的变化速度。 当 α\alpha 提高时:

  • 第一项 α\alpha 以速度 1 上升;
  • 超额损失部分下降,其下降速度取决于当前有多大概率的损失超过门槛。 因此:
  • Ψ(x,α)<β\Psi(x,\alpha)<\beta 时,导数小于 0,说明门槛过低,应继续提高;
  • Ψ(x,α)>β\Psi(x,\alpha)>\beta 时,导数大于 0,说明门槛过高,应降低;
  • 当辅助函数达到最低点时,导数为 0。 于是:

Ψ(x,α)=β\Psi(x,\alpha^*)=\beta

即:

P(f(x,y)α)=βP\bigl(f(x,y)\leq\alpha^*\bigr)=\beta

这正是 VaR 分位点的定义。

5. 定理 2:直接寻找 CVaR 最低的决策

定理 1 解决的是: 固定一个决策 xx ,怎样计算其 VaR 和 CVaR? 但实际问题通常是: 在所有允许的决策中,哪个决策的 CVaR 最低? 原问题为:

minxXCVaRβ(x)\min_{x\in X} \operatorname{CVaR}_\beta(x)

其中 XX 是所有可行决策组成的集合。 根据定理 1,论文证明:

minxXCVaRβ(x)=minxXαRFβ(x,α)\min_{x\in X} \operatorname{CVaR}_\beta(x) = \min_{\substack{x\in X\\\alpha\in\mathbb{R}}} F_\beta(x,\alpha)

因此,可以同时调整:

  • xx :实际决策;
  • α\alpha :候选 VaR 门槛。 一次优化即可得到:
  • xx^* :CVaR 最低的决策方案;
  • α\alpha^* :该方案对应的 VaR;
  • Fβ(x,α)F_\beta(x^*,\alpha^*) :该方案对应的 CVaR。 如果:
  • 每个场景下的损失 f(x,y)f(x,y) 关于 xx 是凸函数;
  • 可行集合 XX 是凸集; 那么这一问题就是凸优化问题。

6. 有限场景近似

理论辅助函数中包含期望:

E[(f(x,y)α)+]E\left[ \bigl(f(x,y)-\alpha\bigr)^+ \right]

但现实中通常不知道真实概率分布。例如在电力市场中,很难准确知道:

  • 电价分布;
  • 用户负荷分布;
  • 电价与负荷的联合分布;
  • 极端场景的准确概率。 因此,可以准备有限个历史或模拟场景:

y1,y2,,yqy_1,y_2,\ldots,y_q

其中 qq 是场景总数。 如果这些场景等概率,则用场景平均近似期望:

F~β(x,α)=α+1q(1β)k=1q[f(x,yk)α]+\widetilde{F}_{\beta}(x,\alpha) = \alpha + \frac{1}{q(1-\beta)} \sum_{k=1}^{q} \left[ f(x,y_k)-\alpha \right]^+

该函数仍然是凸的,并且关于 α\alpha 是 分段线性的 。 例如有 1000 个电价—负荷场景:

q=1000q=1000

则分别计算:

f(x,y1),f(x,y2),,f(x,y1000)f(x,y_1),f(x,y_2),\ldots,f(x,y_{1000})

再统计每个场景超过候选门槛 α\alpha 的损失。

7. 用辅助变量转化为线性规划

正部函数:

[f(x,yk)α]+\left[f(x,y_k)-\alpha\right]^+

可以通过为每个场景引入辅助变量 uku_k 来表示。 设置:

ukf(x,yk)αu_k\geq f(x,y_k)-\alpha

uk0u_k\geq0

由于目标函数希望 uku_k 尽可能小,最优解中必然有:

uk=max(f(x,yk)α,0)u_k = \max\left( f(x,y_k)-\alpha,0 \right)

于是目标函数改写为:

minx,α,u[α+1q(1β)k=1quk]\min_{x,\alpha,u} \left[ \alpha+ \frac{1}{q(1-\beta)} \sum_{k=1}^{q}u_k \right]

如果每个场景下的损失 f(x,yk)f(x,y_k) 关于 xx 是线性的,那么目标函数和全部场景约束都是线性的,问题可以转化为标准线性规划。

8. 论文中的投资组合模型

假设有 nn 种资产。

8.1 已知数据

  • mm :各资产的平均收益向量;
  • yky_k :第 kk 个场景下各资产的收益向量;
  • qq :场景数量;
  • RR :最低预期收益要求;
  • β\beta :预先设定的置信水平。

8.2 决策变量

  • xjx_j :第 jj 种资产的配置比例;
  • α\alpha :候选 VaR 门槛;
  • uku_k :第 kk 个场景的超额损失。 投资组合在场景 kk 下的损失为:

f(x,yk)=xTykf(x,y_k)=-x^Ty_k

8.3 完整模型

minx,α,uα+1q(1β)k=1quks.t.ukxTykα,k=1,,q,uk0,k=1,,q,j=1nxj=1,xj0,j=1,,n,xTmR.\begin{aligned} \min_{x,\alpha,u}\quad & \alpha+ \frac{1}{q(1-\beta)} \sum_{k=1}^{q}u_k \\[4pt] \text{s.t.}\quad & u_k\geq -x^Ty_k-\alpha, && k=1,\ldots,q,\\ & u_k\geq0, && k=1,\ldots,q,\\ & \sum_{j=1}^{n}x_j=1,\\ & x_j\geq0, && j=1,\ldots,n,\\ & x^Tm\geq R. \end{aligned}

各约束含义如下:

场景超额损失约束

ukxTykαu_k\geq -x^Ty_k-\alpha

uk0u_k\geq0

使 uku_k 自动等于场景损失超过门槛的部分。

资金全部配置

j=1nxj=1\sum_{j=1}^{n}x_j=1

表示全部资金均被配置。

不允许做空

xj0x_j\geq0

表示各资产权重不能为负。

最低预期收益

xTmRx^Tm\geq R

用于避免模型通过牺牲全部收益来追求最低风险。 求解后可以得到:

  • xx^* :最优资产配置方案;
  • α\alpha^* :该组合对应的 VaR;
  • 最优目标值:该组合对应的 CVaR;
  • uku_k^* :各场景超过 VaR 的超额损失。

9. 向售电公司中长期—现货购电问题迁移

这里不能只把“股票、债券”机械地替换成“年度、月度、现货”。 更重要的是重新定义:

  • 决策变量;
  • 场景变量;
  • 电量平衡;
  • 结算规则;
  • 场景利润与损失。

9.1 一个最简化的变量设计

设:

  • QYQ^Y :年度合同购电量;
  • QMQ^M :月度合同购电量;
  • QkSQ_k^S :场景 kk 下的现货购电量;
  • LkL_k :场景 kk 下的用户实际负荷。 最简电量平衡关系为:

QY+QM+QkS=LkQ^Y+Q^M+Q_k^S=L_k

因此:

QkS=LkQYQMQ_k^S=L_k-Q^Y-Q^M

年度和月度合同量是提前决策;现货采购量用于平衡不同场景下的实际负荷。

9.2 一个最简化的场景损失函数

设:

  • PYP^Y :年度合同价格;
  • PMP^M :月度合同价格;
  • PkSP_k^S :场景 kk 下的现货价格;
  • PRP^R :零售侧售电价格;
  • CkdevC_k^{\mathrm{dev}} :场景 kk 下的偏差或其他结算成本。 则场景 kk 下的损失可以写成:

f(x,yk)=PYQY+PMQM+PkSQkS+CkdevPRLkf(x,y_k) = P^YQ^Y + P^MQ^M + P_k^SQ_k^S + C_k^{\mathrm{dev}} - P^RL_k

代入现货电量:

f(x,yk)=PYQY+PMQM+PkS(LkQYQM)+CkdevPRLkf(x,y_k) = P^YQ^Y + P^MQ^M + P_k^S \left( L_k-Q^Y-Q^M \right) + C_k^{\mathrm{dev}} - P^RL_k

该式表达:

损失=年度购电成本+月度购电成本+现货购电成本+偏差结算成本售电收入\text{损失} = \text{年度购电成本} + \text{月度购电成本} + \text{现货购电成本} + \text{偏差结算成本} - \text{售电收入}

这只是一个用于建立直觉的最简模型。正式研究时,还需要根据具体省份规则处理:

  • 中长期分时曲线;
  • 现货日前与实时结算;
  • 超购与少购的不同结算价格;
  • 偏差费用;
  • 中长期持仓比例要求;
  • 用户零售套餐;
  • 储能、需求响应等灵活资源。

9.3 售电公司的 CVaR 优化原型

可将目标写成:

minx,α,u[α+1q(1β)k=1quk]\min_{x,\alpha,u} \left[ \alpha+ \frac{1}{q(1-\beta)} \sum_{k=1}^{q}u_k \right]

满足:

ukf(x,yk)αu_k\geq f(x,y_k)-\alpha

uk0u_k\geq0

再加入:

  • 各类合同购电量上下限;
  • 电量平衡约束;
  • 中长期最低持仓约束;
  • 最低预期利润约束;
  • 其他市场规则。 若要求预期利润至少达到 Πmin\Pi_{\min} ,可以写成:

E[Π(x,y)]ΠminE[\Pi(x,y)]\geq\Pi_{\min}

或者使用损失口径:

E[f(x,y)]ΠminE[f(x,y)]\leq-\Pi_{\min}

10. 本文最重要的认识

这篇论文真正教会我们的,不只是一个 CVaR 公式,而是一套完整的风险优化思路:

风险定义辅助函数凸优化场景近似线性规划实际决策\text{风险定义} \rightarrow \text{辅助函数} \rightarrow \text{凸优化} \rightarrow \text{场景近似} \rightarrow \text{线性规划} \rightarrow \text{实际决策}

对电力市场建模而言,CVaR 优化框架已经比较清楚。下一阶段真正困难的部分不是继续替换符号,而是准确写出:

f(x,yk)f(x,y_k)

也就是: 一个具体的购电策略,在一个具体的电价、负荷和结算场景下,究竟会产生多少利润或损失。 这将是下一阶段建模的核心。