0. 论文解决了什么问题
上一篇 Artzner 等人的论文回答了:
一个合理的风险度量应当满足什么性质?
Rockafellar 与 Uryasev 这篇论文进一步回答:
CVaR 理论性质较好,但怎样把它真正写进优化模型,并计算出最优决策?
VaR 的优点是直观:它给出尾部风险开始的损失门槛。但它也有明显局限:
它通常不能告诉我们越过门槛以后会亏得多严重;
一般情况下不满足次可加性;
关于决策变量可能不凸、不光滑,在场景模型中不容易直接优化。
CVaR 则衡量进入尾部以后损失的平均水平。本文最重要的贡献,是构造了一个辅助函数,把 CVaR 优化转化为凸优化;在有限场景下,问题还可以进一步转化为线性规划,并在优化 CVaR 的同时得到对应的 VaR。
1. VaR 与 CVaR
假设未来有 100 种等概率情况,并将损失从小到大排列。
取:
β = 0.95 \beta=0.95 β = 0.95
假设前 95 种情况下,损失都不超过 10 万元;最差的 5 种情况下,损失分别为:
12 , 14 , 18 , 20 , 36 万元 12,\ 14,\ 18,\ 20,\ 36\text{ 万元} 12 , 14 , 18 , 20 , 36 万元
那么:
VaR 0.95 = 10 万元 \operatorname{VaR}_{0.95}=10\text{ 万元} VaR 0.95 = 10 万元
它表示:
约 95% 的情况下,损失不会超过 10 万元。
而:
CVaR 0.95 = 12 + 14 + 18 + 20 + 36 5 = 20 万元 \operatorname{CVaR}_{0.95} = \frac{12+14+18+20+36}{5} = 20\text{ 万元} CVaR 0.95 = 5 12 + 14 + 18 + 20 + 36 = 20 万元
它表示:
一旦进入最差的 5% 情况,平均损失为 20 万元。
因此可以简单记忆:
VaR:尾部风险从哪里开始;
CVaR:进入尾部以后,平均会亏多少。
2. 符号与基本定义
符号
含义
x x x
决策向量,例如不同资产的配置比例
y y y
随机向量,例如未来各资产的收益率
f ( x , y ) f(x,y) f ( x , y )
决策 x x x 在场景 y y y 下产生的损失
β \beta β
预先设定的概率水平,例如 0.95
α \alpha α
优化过程中尝试的候选损失门槛
α β ( x ) \alpha_\beta(x) α β ( x )
决策 x x x 对应的 β \beta β -VaR
ϕ β ( x ) \phi_\beta(x) ϕ β ( x )
决策 x x x 对应的 β \beta β -CVaR
在投资组合问题中:
x = ( x 1 , x 2 , … , x n ) x=(x_1,x_2,\ldots,x_n) x = ( x 1 , x 2 , … , x n )
表示资产权重,
y = ( y 1 , y 2 , … , y n ) y=(y_1,y_2,\ldots,y_n) y = ( y 1 , y 2 , … , y n )
表示各资产收益率。
投资组合收益为:
x T y x^Ty x T y
因此,以“损失”为统一口径时:
f ( x , y ) = − x T y f(x,y)=-x^Ty f ( x , y ) = − x T y
收益为正时,损失为负;收益为负时,损失为正。
2.1 损失的累积分布函数
论文定义:
Ψ ( x , α ) = P ( f ( x , y ) ≤ α ) \Psi(x,\alpha) = P\bigl(f(x,y)\leq\alpha\bigr) Ψ ( x , α ) = P ( f ( x , y ) ≤ α )
它表示:
在决策 x x x 下,损失不超过门槛 α \alpha α 的概率。
2.2 VaR 的正式定义
α β ( x ) = min { α ∈ R : Ψ ( x , α ) ≥ β } \alpha_\beta(x) = \min\left\{ \alpha\in\mathbb{R}: \Psi(x,\alpha)\geq\beta \right\} α β ( x ) = min { α ∈ R : Ψ ( x , α ) ≥ β }
也就是说:
在所有候选损失门槛中,找到第一个使“损失不超过该门槛的概率”达到 β \beta β 的门槛。
例如:
P ( L ≤ 100 ) = 0.95 P(L\leq100)=0.95 P ( L ≤ 100 ) = 0.95
且 100 是满足该条件的最小门槛,则:
VaR 0.95 = 100 \operatorname{VaR}_{0.95}=100 VaR 0.95 = 100
2.3 CVaR 的正式定义
令:
L = f ( x , y ) L=f(x,y) L = f ( x , y )
在论文假设损失分布连续的情况下:
ϕ β ( x ) = E [ L ∣ L ≥ α β ( x ) ] \phi_\beta(x) = E\left[ L\mid L\geq\alpha_\beta(x) \right] ϕ β ( x ) = E [ L ∣ L ≥ α β ( x ) ]
其中 E E E 表示期望,即按照概率加权的平均值;竖线 ∣ \mid ∣ 表示“在……条件下”。
因此,该式表示:
在损失已经进入 VaR 所划分的尾部区域时,平均损失是多少。
其积分形式为:
ϕ β ( x ) = 1 1 − β ∫ f ( x , y ) ≥ α β ( x ) f ( x , y ) p ( y ) d y \phi_{\beta}(x) = \frac{1}{1-\beta} \int_{f(x,y)\geq \alpha_{\beta}(x)} f(x,y)\,p(y)\,dy ϕ β ( x ) = 1 − β 1 ∫ f ( x , y ) ≥ α β ( x ) f ( x , y ) p ( y ) d y
其中:
p ( y ) p(y) p ( y ) 是场景 y y y 的概率密度;
积分只覆盖损失达到或超过 VaR 的尾部区域;
尾部区域的总概率为 1 − β 1-\beta 1 − β 。
积分首先得到“尾部损失对全部场景期望的贡献”,再除以尾部概率 1 − β 1-\beta 1 − β ,才得到“进入尾部以后”的条件平均损失。
3. CVaR 辅助函数
直接优化 CVaR 的困难在于:
CVaR 的定义依赖 VaR,而 VaR 又会随着决策 x x x 的变化而变化。
作者为此构造辅助函数:
F β ( x , α ) = α + 1 1 − β E [ ( f ( x , y ) − α ) + ] F_{\beta}(x,\alpha) = \alpha + \frac{1}{1-\beta} E\left[ \bigl(f(x,y)-\alpha\bigr)^+ \right] F β ( x , α ) = α + 1 − β 1 E [ ( f ( x , y ) − α ) + ]
其中:
[ t ] + = max ( t , 0 ) [t]^+=\max(t,0) [ t ] + = max ( t , 0 )
因此:
( f ( x , y ) − α ) + \bigl(f(x,y)-\alpha\bigr)^+ ( f ( x , y ) − α ) +
表示损失超过候选门槛 α \alpha α 的部分;如果损失没有超过门槛,则记为 0。
可以把辅助函数理解为:
F β = α ⏟ 候选损失门槛 + 经尾部概率缩放后的平均超额损失 ⏟ 只惩罚超过门槛的部分 F_{\beta} = \underbrace{\alpha}_{\text{候选损失门槛}} + \underbrace{\text{经尾部概率缩放后的平均超额损失}}_{\text{只惩罚超过门槛的部分}} F β = 候选损失门槛 α + 只惩罚超过门槛的部分 经尾部概率缩放后的平均超额损失
例如候选门槛为 10 万元:
实际损失
损失减门槛
正部
6 万
-4 万
0
10 万
0
0
12 万
2 万
2 万
20 万
10 万
10 万
需要注意:
任意给定的 α \alpha α 下, F β ( x , α ) F_\beta(x,\alpha) F β ( x , α ) 只是辅助函数值;只有当 α \alpha α 取到最优值时,它才等于 CVaR。
4. 定理 1:同时得到 VaR 与 CVaR
论文证明:
ϕ β ( x ) = min α ∈ R F β ( x , α ) \phi_\beta(x) = \min_{\alpha\in\mathbb{R}} F_\beta(x,\alpha) ϕ β ( x ) = min α ∈ R F β ( x , α )
也就是说,对于固定决策 x x x :
使 F β ( x , α ) F_\beta(x,\alpha) F β ( x , α ) 最小的候选门槛,对应 VaR;
此时辅助函数的最小值,对应 CVaR。
在通常的唯一解情况下,可以写成:
α ∗ = VaR β ( x ) \alpha^*=\operatorname{VaR}_\beta(x) α ∗ = VaR β ( x )
F β ( x , α ∗ ) = CVaR β ( x ) F_\beta(x,\alpha^*) = \operatorname{CVaR}_\beta(x) F β ( x , α ∗ ) = CVaR β ( x )
4.1 为什么最优 α \alpha α 是 VaR
论文给出:
∂ F β ( x , α ) ∂ α = Ψ ( x , α ) − β 1 − β \frac{\partial F_\beta(x,\alpha)}{\partial\alpha} = \frac{\Psi(x,\alpha)-\beta}{1-\beta} ∂ α ∂ F β ( x , α ) = 1 − β Ψ ( x , α ) − β
左边表示:
固定 x x x ,只调整候选门槛 α \alpha α 时,辅助函数的变化速度。
当 α \alpha α 提高时:
第一项 α \alpha α 以速度 1 上升;
超额损失部分下降,其下降速度取决于当前有多大概率的损失超过门槛。
因此:
当 Ψ ( x , α ) < β \Psi(x,\alpha)<\beta Ψ ( x , α ) < β 时,导数小于 0,说明门槛过低,应继续提高;
当 Ψ ( x , α ) > β \Psi(x,\alpha)>\beta Ψ ( x , α ) > β 时,导数大于 0,说明门槛过高,应降低;
当辅助函数达到最低点时,导数为 0。
于是:
Ψ ( x , α ∗ ) = β \Psi(x,\alpha^*)=\beta Ψ ( x , α ∗ ) = β
即:
P ( f ( x , y ) ≤ α ∗ ) = β P\bigl(f(x,y)\leq\alpha^*\bigr)=\beta P ( f ( x , y ) ≤ α ∗ ) = β
这正是 VaR 分位点的定义。
5. 定理 2:直接寻找 CVaR 最低的决策
定理 1 解决的是:
固定一个决策 x x x ,怎样计算其 VaR 和 CVaR?
但实际问题通常是:
在所有允许的决策中,哪个决策的 CVaR 最低?
原问题为:
min x ∈ X CVaR β ( x ) \min_{x\in X} \operatorname{CVaR}_\beta(x) min x ∈ X CVaR β ( x )
其中 X X X 是所有可行决策组成的集合。
根据定理 1,论文证明:
min x ∈ X CVaR β ( x ) = min x ∈ X α ∈ R F β ( x , α ) \min_{x\in X} \operatorname{CVaR}_\beta(x) = \min_{\substack{x\in X\\\alpha\in\mathbb{R}}} F_\beta(x,\alpha) min x ∈ X CVaR β ( x ) = min x ∈ X α ∈ R F β ( x , α )
因此,可以同时调整:
x x x :实际决策;
α \alpha α :候选 VaR 门槛。
一次优化即可得到:
x ∗ x^* x ∗ :CVaR 最低的决策方案;
α ∗ \alpha^* α ∗ :该方案对应的 VaR;
F β ( x ∗ , α ∗ ) F_\beta(x^*,\alpha^*) F β ( x ∗ , α ∗ ) :该方案对应的 CVaR。
如果:
每个场景下的损失 f ( x , y ) f(x,y) f ( x , y ) 关于 x x x 是凸函数;
可行集合 X X X 是凸集;
那么这一问题就是凸优化问题。
6. 有限场景近似
理论辅助函数中包含期望:
E [ ( f ( x , y ) − α ) + ] E\left[ \bigl(f(x,y)-\alpha\bigr)^+ \right] E [ ( f ( x , y ) − α ) + ]
但现实中通常不知道真实概率分布。例如在电力市场中,很难准确知道:
电价分布;
用户负荷分布;
电价与负荷的联合分布;
极端场景的准确概率。
因此,可以准备有限个历史或模拟场景:
y 1 , y 2 , … , y q y_1,y_2,\ldots,y_q y 1 , y 2 , … , y q
其中 q q q 是场景总数。
如果这些场景等概率,则用场景平均近似期望:
F ~ β ( x , α ) = α + 1 q ( 1 − β ) ∑ k = 1 q [ f ( x , y k ) − α ] + \widetilde{F}_{\beta}(x,\alpha) = \alpha + \frac{1}{q(1-\beta)} \sum_{k=1}^{q} \left[ f(x,y_k)-\alpha \right]^+ F β ( x , α ) = α + q ( 1 − β ) 1 ∑ k = 1 q [ f ( x , y k ) − α ] +
该函数仍然是凸的,并且关于 α \alpha α 是 分段线性的 。
例如有 1000 个电价—负荷场景:
q = 1000 q=1000 q = 1000
则分别计算:
f ( x , y 1 ) , f ( x , y 2 ) , … , f ( x , y 1000 ) f(x,y_1),f(x,y_2),\ldots,f(x,y_{1000}) f ( x , y 1 ) , f ( x , y 2 ) , … , f ( x , y 1000 )
再统计每个场景超过候选门槛 α \alpha α 的损失。
7. 用辅助变量转化为线性规划
正部函数:
[ f ( x , y k ) − α ] + \left[f(x,y_k)-\alpha\right]^+ [ f ( x , y k ) − α ] +
可以通过为每个场景引入辅助变量 u k u_k u k 来表示。
设置:
u k ≥ f ( x , y k ) − α u_k\geq f(x,y_k)-\alpha u k ≥ f ( x , y k ) − α
u k ≥ 0 u_k\geq0 u k ≥ 0
由于目标函数希望 u k u_k u k 尽可能小,最优解中必然有:
u k = max ( f ( x , y k ) − α , 0 ) u_k = \max\left( f(x,y_k)-\alpha,0 \right) u k = max ( f ( x , y k ) − α , 0 )
于是目标函数改写为:
min x , α , u [ α + 1 q ( 1 − β ) ∑ k = 1 q u k ] \min_{x,\alpha,u} \left[ \alpha+ \frac{1}{q(1-\beta)} \sum_{k=1}^{q}u_k \right] min x , α , u [ α + q ( 1 − β ) 1 ∑ k = 1 q u k ]
如果每个场景下的损失 f ( x , y k ) f(x,y_k) f ( x , y k ) 关于 x x x 是线性的,那么目标函数和全部场景约束都是线性的,问题可以转化为标准线性规划。
8. 论文中的投资组合模型
假设有 n n n 种资产。
8.1 已知数据
m m m :各资产的平均收益向量;
y k y_k y k :第 k k k 个场景下各资产的收益向量;
q q q :场景数量;
R R R :最低预期收益要求;
β \beta β :预先设定的置信水平。
8.2 决策变量
x j x_j x j :第 j j j 种资产的配置比例;
α \alpha α :候选 VaR 门槛;
u k u_k u k :第 k k k 个场景的超额损失。
投资组合在场景 k k k 下的损失为:
f ( x , y k ) = − x T y k f(x,y_k)=-x^Ty_k f ( x , y k ) = − x T y k
8.3 完整模型
min x , α , u α + 1 q ( 1 − β ) ∑ k = 1 q u k s.t. u k ≥ − x T y k − α , k = 1 , … , q , u k ≥ 0 , k = 1 , … , q , ∑ j = 1 n x j = 1 , x j ≥ 0 , j = 1 , … , n , x T m ≥ R . \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} x , α , u min s.t. α + q ( 1 − β ) 1 k = 1 ∑ q u k u k ≥ − x T y k − α , u k ≥ 0 , j = 1 ∑ n x j = 1 , x j ≥ 0 , x T m ≥ R . k = 1 , … , q , k = 1 , … , q , j = 1 , … , n ,
各约束含义如下:
场景超额损失约束
u k ≥ − x T y k − α u_k\geq -x^Ty_k-\alpha u k ≥ − x T y k − α
u k ≥ 0 u_k\geq0 u k ≥ 0
使 u k u_k u k 自动等于场景损失超过门槛的部分。
资金全部配置
∑ j = 1 n x j = 1 \sum_{j=1}^{n}x_j=1 ∑ j = 1 n x j = 1
表示全部资金均被配置。
不允许做空
x j ≥ 0 x_j\geq0 x j ≥ 0
表示各资产权重不能为负。
最低预期收益
x T m ≥ R x^Tm\geq R x T m ≥ R
用于避免模型通过牺牲全部收益来追求最低风险。
求解后可以得到:
x ∗ x^* x ∗ :最优资产配置方案;
α ∗ \alpha^* α ∗ :该组合对应的 VaR;
最优目标值:该组合对应的 CVaR;
u k ∗ u_k^* u k ∗ :各场景超过 VaR 的超额损失。
9. 向售电公司中长期—现货购电问题迁移
这里不能只把“股票、债券”机械地替换成“年度、月度、现货”。
更重要的是重新定义:
决策变量;
场景变量;
电量平衡;
结算规则;
场景利润与损失。
9.1 一个最简化的变量设计
设:
Q Y Q^Y Q Y :年度合同购电量;
Q M Q^M Q M :月度合同购电量;
Q k S Q_k^S Q k S :场景 k k k 下的现货购电量;
L k L_k L k :场景 k k k 下的用户实际负荷。
最简电量平衡关系为:
Q Y + Q M + Q k S = L k Q^Y+Q^M+Q_k^S=L_k Q Y + Q M + Q k S = L k
因此:
Q k S = L k − Q Y − Q M Q_k^S=L_k-Q^Y-Q^M Q k S = L k − Q Y − Q M
年度和月度合同量是提前决策;现货采购量用于平衡不同场景下的实际负荷。
9.2 一个最简化的场景损失函数
设:
P Y P^Y P Y :年度合同价格;
P M P^M P M :月度合同价格;
P k S P_k^S P k S :场景 k k k 下的现货价格;
P R P^R P R :零售侧售电价格;
C k d e v C_k^{\mathrm{dev}} C k dev :场景 k k k 下的偏差或其他结算成本。
则场景 k k k 下的损失可以写成:
f ( x , y k ) = P Y Q Y + P M Q M + P k S Q k S + C k d e v − P R L k f(x,y_k) = P^YQ^Y + P^MQ^M + P_k^SQ_k^S + C_k^{\mathrm{dev}} - P^RL_k f ( x , y k ) = P Y Q Y + P M Q M + P k S Q k S + C k dev − P R L k
代入现货电量:
f ( x , y k ) = P Y Q Y + P M Q M + P k S ( L k − Q Y − Q M ) + C k d e v − P R L k f(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 f ( x , y k ) = P Y Q Y + P M Q M + P k S ( L k − Q Y − Q M ) + C k dev − P R L k
该式表达:
损失 = 年度购电成本 + 月度购电成本 + 现货购电成本 + 偏差结算成本 − 售电收入 \text{损失} = \text{年度购电成本} + \text{月度购电成本} + \text{现货购电成本} + \text{偏差结算成本} - \text{售电收入} 损失 = 年度购电成本 + 月度购电成本 + 现货购电成本 + 偏差结算成本 − 售电收入
这只是一个用于建立直觉的最简模型。正式研究时,还需要根据具体省份规则处理:
中长期分时曲线;
现货日前与实时结算;
超购与少购的不同结算价格;
偏差费用;
中长期持仓比例要求;
用户零售套餐;
储能、需求响应等灵活资源。
9.3 售电公司的 CVaR 优化原型
可将目标写成:
min x , α , u [ α + 1 q ( 1 − β ) ∑ k = 1 q u k ] \min_{x,\alpha,u} \left[ \alpha+ \frac{1}{q(1-\beta)} \sum_{k=1}^{q}u_k \right] min x , α , u [ α + q ( 1 − β ) 1 ∑ k = 1 q u k ]
满足:
u k ≥ f ( x , y k ) − α u_k\geq f(x,y_k)-\alpha u k ≥ f ( x , y k ) − α
u k ≥ 0 u_k\geq0 u k ≥ 0
再加入:
各类合同购电量上下限;
电量平衡约束;
中长期最低持仓约束;
最低预期利润约束;
其他市场规则。
若要求预期利润至少达到 Π min \Pi_{\min} Π m i n ,可以写成:
E [ Π ( x , y ) ] ≥ Π min E[\Pi(x,y)]\geq\Pi_{\min} E [ Π ( x , y )] ≥ Π m i n
或者使用损失口径:
E [ f ( x , y ) ] ≤ − Π min E[f(x,y)]\leq-\Pi_{\min} E [ f ( x , y )] ≤ − Π m i n
10. 本文最重要的认识
这篇论文真正教会我们的,不只是一个 CVaR 公式,而是一套完整的风险优化思路:
风险定义 → 辅助函数 → 凸优化 → 场景近似 → 线性规划 → 实际决策 \text{风险定义} \rightarrow \text{辅助函数} \rightarrow \text{凸优化} \rightarrow \text{场景近似} \rightarrow \text{线性规划} \rightarrow \text{实际决策} 风险定义 → 辅助函数 → 凸优化 → 场景近似 → 线性规划 → 实际决策
对电力市场建模而言,CVaR 优化框架已经比较清楚。下一阶段真正困难的部分不是继续替换符号,而是准确写出:
f ( x , y k ) f(x,y_k) f ( x , y k )
也就是:
一个具体的购电策略,在一个具体的电价、负荷和结算场景下,究竟会产生多少利润或损失。
这将是下一阶段建模的核心。