> 技术文档 > 风险价值VaR、CVaR与ES_es 风险价值

风险价值VaR、CVaR与ES_es 风险价值


风险价值VaR、CVaR与ES

  • 一、VaR风险价值
    • 1. VaR的定义及基本概念
    • 2.VaR的主要性质
    • 3.风险价值的优缺点
  • 二、CVaR条件风险价值与ES预期损失
    • 1.CVaR的基本概念
    • 2.性质
    • 3.ES预期损失
  • 三、VaR的计算方法
    • 1. 方差协方差法
    • 2. 历史模拟法
    • 3. 蒙特卡洛模拟法

一、VaR风险价值

1. VaR的定义及基本概念

J.P.Morgan的风险管理人员在1994年提出,其英文全称为“value at risk”,翻译成中文为“在险价值”。当时要求要每天下午收盘后的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 ) = 1 − a \\text{Pr} \\, \\text{ob}(\\Delta P = -V_a R) = 1-a Prob(ΔP<VaR)=aProb(ΔP>=VaR)=1a

其中,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} NVaR=1VaR×N

【案例分析1】
某投资组合的盈亏是服从标准正态分布,置信水平分别为90%,95%,99%,模拟其风险价值VaR。
Python实现:

#风险价值的模拟import numpy as npimport matplotlib.pyplot as pltfrom pylab import mplmpl.rcParams[\'font.sans-serif\']=[\'SimHei\']mpl.rcParams[\'axes.unicode_minus\']=Falseimport scipy.stats as sta=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<