风险价值VaR、CVaR与ES
- 一、VaR风险价值
- 1. VaR的定义及基本概念
- 2.VaR的主要性质
- 3.风险价值的优缺点
- 二、CVaR条件风险价值与ES预期损失
- 1.CVaR的基本概念
- 2.性质
- 3.ES预期损失
一、VaR风险价值
1. VaR的定义及基本概念
20年前,JP的大佬要每天下午收盘后的4:15在桌上看到一份仅仅1页纸的报告, 测度横跨所有风险, 所有投资组合, 于未来24小时的风险。没有人会去看几十页页的风险矩阵或者听你讲模拟参数讲一个小时。而VaR就可以把所有这些用一个数,所谓“潜在损失”,来呈现潜在风险。
风险价值VaR
是指在一定的持有期和给定的置信水平下,利率、汇率等市场风险要素发生变化时可能对某项资金头寸、资产组合或机构造成的潜在最大损失。例如,在持有期为1天、置信水平为99%的情况下,若所计算的风险价值为1万美元,则表明该银行的资产组合在1天中的损失有99%的可能性不会超过1万美元。
VaR的大小取决于2个重要参数:
①持有期天数(N天);
②置信水平(1-α)。
VaR的金额就表明在未来的N天内,理论上应该只有(100%-α)的概率,投资组合的损失才会超出VaR的金额。在数学上的表达式如下:
Pr
ob
(
Δ
P
<
−
V
a
R
)
=
a
Pr
ob
(
Δ
P
>
=
−
V
a
R
)
=
1
−
a
\text{Pr} \, \text{ob}(\Delta P < -V_a R) = a\\ \text{Pr} \, \text{ob}(\Delta P >= -V_a R) = 1-a
Prob(ΔP<−VaR)=aProb(ΔP>=−VaR)=1−a
其中,Prob代表了一个概率函数, Δ P \Delta P ΔP代表了投资组合在持有期内的损失金额,VaR是置信水平α条件下的风险价值。
在实际操作中,风险管理者往往先设定持有期 N = 1 N=1 N=1,因为 N > 1 N>1 N>1时,可能没有足够多的数据估计风险因子的变化。
因此,在计算持有期 N N N天的VaR时,在相同的置信水平下,以及满足投资组合在不同交易日之间的变化是相互独立并服从期望值为0的相同的正态分布的表达式如下:
N天VaR = 1天VaR × N \text{N天VaR} = \text{1天VaR} \times \sqrt{N} N天VaR=1天VaR×N
【案例分析1】
某投资组合的盈亏是服从标准正态分布,置信水平分别为90%,95%,99%,模拟其风险价值VaR。
Python实现:
#风险价值的模拟
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
import scipy.stats as st
a=0.9 #设置90%置信水平
b=0.95 #设置95%置信水平
c=0.99 #设置99%置信水平
z1=st.norm.ppf(q=1-a)
z2=st.norm.ppf(q=1-b)
z3=st.norm.ppf(q=1-c)
x=np.linspace(-4,4,200) #投资组合盈亏的数组
y=st.norm.pdf(x) #投资组合盈亏对应的概率密度数组
x1=np.linspace(-4,z1,100)
y1=st.norm.pdf(x1)
x2=np.linspace(-4,z2,100)
y2=st.norm.pdf(x2)
x3=np.linspace(-4,z3,100)
y3=st.norm.pdf(x3)
plt.figure(figsize=(8,6))
plt.plot(x,y,'r-',lw=2.0)
plt.fill_between(x1,y1) #绘制90%置信水平的VaR值阴影部分
plt.fill_between(x2,y2) #绘制95%置信水平的VaR值阴影部分
plt.fill_between(x3,y3) #绘制99%置信水平的VaR值阴影部分
plt.xlabel(u'投资组合盈亏',fontsize=13)
plt.ylabel(u'盈亏的概率密度',fontsize=13)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.ylim(0,0.45)
plt.annotate('90%_VaR',xy=(z1,st.norm.pdf(z1)),xytext=(-2,0.25),arrowprops=dict(shrink=0.01),fontsize=13)
plt.annotate('95%_VaR',xy=(z2,st.norm.pdf(z2)),xytext=(-2.5,0.18),arrowprops=dict(shrink=0.01),fontsize=13)
plt.annotate('99%_VaR',xy=(z3,st.norm.pdf(z3)),xytext=(-3.5,0.1),arrowprops=dict(shrink=0.01),fontsize=13)
plt.title(u'盈亏服从正态分布的风险价值(VaR)',fontsize=13)
plt.show()
以上分别展示了投资组合服从正态分布,置信水平在90%,95%,99%的情况下,投资组合VaR的情况。阴影部分面积等于(100-α),其中90%包含95%,99%,即范围更大。
阴影部分与非阴影部分之间的边界对应至X轴(即分位数)就是VaR的金额(取绝对值)。
【案例分析2】
雨果·纳尔逊正在准备一个关于风险价值属性的演讲。纳尔逊的以下哪项陈述不正确?A、 VaR可以解释金融机构的多元化分散投资的持有头寸,从而降低资本需求
B、 VaR(10%)=$0表示100天中有90天可能出现正美元回报
C、 VaR(1%)可以解释为投资组合价值损失超过1%的天数
D、 VaR的发展是为了更紧密地确保商业银行偿付能力所必需的经济资本
【答案】C。VaR(X%)是指投资组合价值中仅在X%的时间内超过的美元或百分比损失。VaR(10%)=0美元表示在任何一天,美元损失超过0美元的概率为10%。或者,我们可以说,有90%的概率,在任何一天,美元收益将大于0美元。VaR是商业银行在考虑到多元化分散效应的情况下,为其经济资本需求提供更准确的衡量标准。
【案例分析3】
在收益分布中存在厚尾的情况下,基于正态分布的VaR将(对于线性投资组合):
A、低估了真实的VaR
B、与真实变量相同
C、高估了真实的VaR
D、无法从提供的信息中确定
【答案】A。由于分布尾部的损失频率更高,VaR将被低估。
【案例分析4】一家商品交易公司的期权投资组合的2天风险价值(VaR)为250万。在正常情况下,如何将该VaR转换为10天期限?
2.VaR的主要性质
①平移不变性。c为常数,则
V
A
R
(
X
+
C
)
=
V
A
R
(
X
)
+
C
VAR(X+C)=VAR(X)+C
VAR(X+C)=VAR(X)+C
②正齐次性。h<0,保证资产的风险与其持有的头寸成正比,则有
V
A
R
(
h
X
)
=
h
V
A
R
(
X
)
VAR(hX)=hVAR(X)
VAR(hX)=hVAR(X)
③协单调可加性
V
A
R
(
X
1
+
X
2
)
=
V
A
R
(
X
1
)
+
V
A
R
(
X
2
)
VAR(X_1+X_2)=VAR(X_1)+VAR(X_2)
VAR(X1+X2)=VAR(X1)+VAR(X2)
④不满足次可加性和凸性。即资产组合的风险不一定小于各资产风险之和。这意味着,一个金融机构不能通过计算其分支机构的VaR来推导整个机构的VaR。不满足凸性意味着以VaR为目标函数的规划问题一般不是凸规划,其局部最优解不一定是全局最优解。即无法求得最佳资产组合。这也是VaR用于资产组合风险研究时候的主要障碍。
⑤VaR关于概率水平1-α不是连续的。
3.风险价值的优缺点
VaR最大的优点是能够计算出在未来指定的一段时间内策略产生的可能性,并且这种计算方法是适用于所有的市场参与者的。
不仅如此VaR还可以将特定策略的历史波动性与相关性联系在一起,最后通过类比的方式预测未来的价格风险。
我们都知道虽然VaR是一个非常有用的工具,但是它并不是一个关于管理价格风险问题的最全面的解决方案。这是因为VaR无法解决制定时间内判断亏多少的问题,它只是大概说明了我们可能会亏损的最大数量。
VaR模型还有另外一个缺陷,就是假设了连续交易日之间的独立性。也就是说假设今天发生的交易不会对明天的交易有任何的影响。
二、CVaR条件风险价值与ES预期损失
1.CVaR的基本概念
CVaR模型(Condition Value at Risk):条件风险价值(CVaR)模型是指在正常市场条件下和一定的置信水平α上,测算出在给定的时间段内损失超过VaR值的条件期望值。
CVaR模型在一定程度上克服了VaR模型的缺点不仅考虑了超过VaR值的频率,而且考虑了超过VaR值损失的条件期望,有效的改善了VaR模型在处理损失分布的后尾现象时存在的问题。
证券组合损失的密度函数是连续函数时,CVaR模型是一个一致性风险度量模型,具有次可加性,
但当证券组合损失的密度函数不是连续函数时,CVaR模型不再是一致性风险度量模型,即CVaR模型不是广义的一致性风险度量模型,需要进行一定的改进。
C
V
a
R
1
−
α
=
−
∫
0
1
−
α
V
a
R
r
(
X
)
d
r
1
−
α
CVaR_{1-\alpha} = -\frac{\int_0^{1-\alpha} VaR_r(X)dr}{1-\alpha}
CVaR1−α=−1−α∫01−αVaRr(X)dr
假定投资组合的随机损失为 -X(-X<0),
V
a
R
α
VaR_{\alpha}
VaRα是置信度为
1
−
α
1-α
1−α的
V
a
R
VaR
VaR值,则
C
V
a
R
α
=
E
(
−
X
∣
−
X
≥
V
a
R
α
)
CVaR_{\alpha} = E(-X \mid -X \geq VaR_{\alpha})
CVaRα=E(−X∣−X≥VaRα)
Pr ob ( − X < − V a R ) = Pr ob ( X > V a R ) = a Pr ob ( − X > = − V a R ) = Pr ob ( X < = V a R ) = 1 − a \text{Pr} \, \text{ob}(-X < -V_a R)=\text{Pr} \, \text{ob}(X > V_a R) = a\\ \text{Pr} \, \text{ob}(-X >= -V_a R) =\text{Pr} \, \text{ob}(X < =V_a R) = 1-a Prob(−X<−VaR)=Prob(X>VaR)=aProb(−X>=−VaR)=Prob(X<=VaR)=1−a
2.性质
①平移不变性与正齐次性,对于任意一个固定的常数c,
C
α
(
Y
+
c
)
=
C
α
(
Y
)
+
c
C_\alpha(Y+c)=C_\alpha(Y)+c
Cα(Y+c)=Cα(Y)+c
②单调可加性,对于任意非递增函数
f
f
f和
g
g
g,若两复合函数
f
・
Y
f・Y
f・Y和
g
・
Y
g・Y
g・Y有意义,则
C
α
(
f
・
Y
+
g
・
Y
)
=
C
α
(
f
・
Y
)
+
C
α
(
g
・
Y
)
C_\alpha(f・Y+g・Y)=C_\alpha(f・Y)+C_\alpha(g・Y)
Cα(f・Y+g・Y)=Cα(f・Y)+Cα(g・Y)
③某种程度上具有关于0的对称性,
E
(
Y
)
=
(
1
−
α
)
C
α
(
Y
)
−
α
C
1
−
α
(
−
Y
)
E(Y) = (1 - \alpha) C_\alpha(Y) - \alpha C_{1 - \alpha}(-Y)
E(Y)=(1−α)Cα(Y)−αC1−α(−Y)
④CVaR具有次可加性:若
0
<
λ
<
1
0<\lambda<1
0<λ<1,对任意两个损失变量
Y
1
Y1
Y1和
Y
2
Y2
Y2,有
C
α
(
λ
Y
1
+
(
1
−
λ
)
Y
2
)
≤
λ
C
α
(
Y
1
)
+
(
1
−
λ
)
C
α
(
Y
2
)
C_\alpha(\lambda Y_1 + (1 - \lambda)Y_2) \leq \lambda C_\alpha(Y_1) + (1 - \lambda)C_\alpha(Y_2)
Cα(λY1+(1−λ)Y2)≤λCα(Y1)+(1−λ)Cα(Y2)
3.ES预期损失
ES模型是在CVaR基础上的改进版,它是一致性风险度量模型。
如果损失X的密度函数是连续的,则ES模型的结果与CVaR模型的结果相同;
如果损失X的密度函数是不连续的,则两个模型计算出来的结果有一定差异。
【案例分析5】
损失1000万美元、600万美元和300万美元的概率分别为4%、8%和88%。可以计算得到95%的风险价值损失不超过为600万美元,预计95%的ES不超过为920万美元。
V
a
R
=
600
VaR=600
VaR=600
即求取>=95%置信水平的损失均值
将88%+8%=96%进行拆分,96%-95%=1%
95%~96%损失为100万美元,96%~100%损失为1000万美元
Python实现:
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
x1=list(np.linspace(0,0.88,100))
x2=list(np.linspace(0.8801,0.96,10))
x3=list(np.linspace(0.9601,1,10))
y1=np.ones(100)*300
y2=np.ones(10)*600
y3=np.ones(10)*1000
plt.ylim(0,1200)
plt.plot(x1,y1,'r')
plt.plot(x2,y2,'y')
plt.plot(x3,y3,'b')
plt.xlabel(u'概率分布',fontsize=13)
plt.xticks(fontsize=13)
plt.ylabel(u'损失金额',fontsize=13)
plt.yticks(fontsize=13)
plt.title(u'损失金额概率分布图',fontsize=13)
plt.show()
print('ES的大小为:',(600*0.01+1000*0.04)/(0.01+0.04))