ES 期望损失: Stata 及 Python 实现

发布时间:2020-06-20 阅读 114

作者: 田原 (北京交通大学)
E-mail: godfreytian@163.com

Stata连享会   主页 || 视频 || 推文

连享会 - Stata 暑期班

线上直播 9 天:2020.7.28-8.7
主讲嘉宾:连玉君 (中山大学) | 江艇 (中国人民大学)
课程主页https://gitee.com/arlionn/PX | 微信版
助教招聘: 15 名,免费听课,详见课程主页


目录


1. ES (期望损失) 简介

1.1 引言

「VaR 风险价值: Stata 及 Python 实现」 一文中,我们介绍了 VaR 模型 (Value at Risk 风险价值)。该模型回答了金融机构普遍关心的一个重要问题:「在一定概率的情形下,金融机构投资组合的价值在未来一定时间内最多可能损失多少」。

「一定概率」指的是一个 0% 到 100% 之间的数值,0% 即不可能发生,100% 即一定发生。我们常用的有 1%、5%(对应置信度即为 99%、95%),虽然 1% 在数值上已经比较小,但实际还隐藏着如 0.01%、0.0001% 等更为「极端」的情况,公司发生这类损失的概率极小,但损失极大,这类损失事件一旦发生,将对公司造成极大的影响,这就是风险管理中常说的尾部风险。

VaR 的局限性导致其不具备度量投资组合尾部风险的能力,它将损失可能发生的概率限定为一个值,因此低估了实际的市场风险。此外,在采用 VaR 确定监管资本要求时,监管者发现了无法捕获「厚尾风险」等诸多缺陷。若要度量投资组合损失超过 VaR 损失时所遭受的平均损失程度,更为准确地进行市场风险管理,就需要通过 ES(Expected Shortfall 期望损失)模型来实现。

1.2 起源与发展

ES 起源于国外学者对于风险管理计量方法的探索,研究总结发现,VaR 由于其本身的局限性,无法度量尾部风险,低估了实际的市场风险,其性质也并不完备。

ES 最初由国外学者 Philippe Artzner 等人于 1999 年提出,它的出现就是为了完善和提升当前以 VaR 模型为主流的市场风险度量方法,弥补 VaR 模型的不足。理论一出现就得到了学者的广泛关注,各类应用研究层出不穷,很快由学界传播到业界,进而引起了监管机构的重视。

巴塞尔银行委员会(Basel Committee on Banking Supervision)近年来修正了市场风险管理框架协议,经过多次征求意见和修改调整,最终于 2016 年 1 月 14 日颁布了最新的「市场风险最低资本金要求」,「要求」中将市场风险内部模型法计量测度从 VaR 转变为对资本金要求更为严格且符合一致性风险测度的 Expected Shortfall,提出了一系列新的计算标准,并规定这一转变的于 2019 年 1 月 1 日起实施。

从巴塞尔委员会的风险管理框架协议内容的转变,我们可以得知监管机构对待风险管理的态度和发展方向,也可以再次认证 ES 模型在风险管理中的重要性。

1.3 VaR 的缺陷

A. 无法捕获厚尾风险

大量金融数据显示,金融收益率分布对比正态分布具有明显的尖峰厚尾性:「尖峰」意味着实际分布中,靠近均值的时间更多;「厚尾」意味着极端收益率出现的频率高于正态分布预测。作为一种风险测度指标,VaR 存在着根本缺陷:VaR 不能描述风险的分散化特征,无法度量超出特定分位数的损失,它将损失可能发生的概率限定为一个值,因此往往会低估实际的市场风险。

B. 不满足风险测度的一致性要求

Artzner 等(1999)提出了一个合理的风险测度应具备的条件,即一致性风险测度公理化体系。具体而言,一致性共有以下四条属性,全部满足这四条属性的风险测度被称为一致性风险测度:

  • 次可加性: 任意随机变量 XY,满足 ρ(X+Y)ρ(X)+ρ(Y)
  • 正齐次性: 任意随机变量 Xh>0,满足 ρ(hX)=hρ(X)
  • 平移不变性: 任意随机变量 XaR,满足 ρ(X+a)=ρ(X)+a
  • 单调性: 任意随机变量 XYXY,满足 ρ(X)ρ(Y)

VaR 不满足次可加性,因此它不是一致性风险测度。

1.4 期望损失 ES

Expected Shortfall 期望损失,又称 Conditional VaR(条件风险价值),或称 Expected Tail Loss(期望尾部损失),主要分析计算的内容为尾部损失的平均值。

ES 的定义:当投资组合的损失超过 VaR 损失(例如,上图所示 α% 的 VaR)时所遭受的期望损失(即平均损失的大小)。

由于 ES 在 VaR 的基础上进一步考虑了出现极端情况时的平均损失程度,因此可以更为完整地衡量一个投资组合的极端损失风险,ES 比 VaR 更适合表征尾部风险。比如说我们卖出一个深度虚值期权,它的 VaR 为 0,但这不代表它没有风险。这类风险被称为尾部风险,可以用 ES 来衡量。除更为有效地刻画尾部风险,ES 与 VaR 的区别还在于,ES 具有 VaR 不具备的风险度量的「次可加性」。

VaR 模型计量的风险值不满足这一不等式:

[股票组合 1 的风险值]+[股票组合 2 的风险值] ≥ [合并后股票组合的风险值]

以刻画两组股票的市场风险为例,贴合现实的分析如下:若分别投资两组股票,分别计量其风险并相加,所得的风险值应当高于将两组股票组合后计量所得的风险值。这是因为,相比于各单独的股票组合,合为一组后股票组合的篮子更大,涵盖的股票种类以及对应的行业更多,风险分散的效果更好,投资组合实际面临的风险将会少于两个单独组合面临风险之和。

VaR 的局限性在于在数学上它不具备这一性质(红色表达式中不等号不一定成立),即采用 VaR 计量风险不具备次可加性,投资组合的 VaR 在极端情况下,会大于两个独立组合的 VaR 之和。ES 模型满足次可加性,可以更好地对风险进行计量。ES 的这一特征使得对于一个大范围的风险控制可以分解到子单位上,只需要控制一个公司各个部门的 ES,就控制了整个公司的 ES。但 VaR 无法做到这一点。

「次可加性」是十分有意义的一个性质,具备这一性质的风险计量方法可以与现代投资组合优化理论相结合,进行风险管理最优化下的投资组合管理,从这一意义上来讲,ES 比 VaR 具有更广的应用范围。从本质上,ES 模型一定程度上脱胎于 VaR,因此 ES 模型也具有 VaR 模型的优点。

2. ES 优点和局限

2.1 ES 的优点

  1. 可以简单明了的表示金融风险的大小,没有任何技术色彩,没有任何专业背景的投资者和管理者都可以通过 ES 值的大小对金融风险进行评判;

  2. 提供了计量金融风险的统一标准,可以测量不同市场因子、不同金融工具、不同业务部门及不同金融机构投资组合的风险敞口;

  3. 更为充分地考虑了不同资产价格变化之间的分散化效应和对降低风险的贡献;考虑了金融机构中不同业务部门对总体投资组合风险的分散化程度;

  4. 可以事前计算风险,区别于以往风险管理的方法都是在事后衡量风险大小;

  5. 可以度量投资组合的「尾部风险」,计算得到的风险值更为准确,使得金融机构管理者可以更清楚当前面临的风险大小;

  6. 具有风险测度的「次可加性」,属于「一致性风险测度」,符合最新的巴塞尔监管要求。

2.2 ES 的局限性

  1. ES 模型的假设与 VaR 相同,其对未来损失的估计也是基于「历史可以在未来复制其自身」的假设并建立在大量的历史数据的基础之上的,因此 ES 的使用存在着一定的模型风险。用历史数据来预测的未来可能因条件的变化而不再适用,纯粹的数量分析难以反映风险的全貌。

  2. ES 模型对金融机构或资产组合的市场风险衡量的有效性是以市场正常运行为前提条件的,ES 模型无法对市场上突然发生的异常变化或突发事件等情况进行事前预测。例如政府突然提出全新的财政政策,经济危机造成的股价暴跌、利率骤升等。

  3. ES 只能度量可交易资产和负债的市场风险。只有可交易的金融工具才具有市场价格的连续历史记录,从而可以用统计方法测量和建模。但对于不可交易资产,如存、贷款来说就难以用 ES 进行测量,此时只能用资产负债管理技术向高层提供有用的信息。

虽然 ES 模型也存在一定的局限性,但是它的分析作用还是非常明显的,因此它对金融机构的风险管理非常关键。

随着我国金融市场的不断发展和进步,金融监管上逐渐更加与国际接轨,ES 在金融风险管理中的作用将会越来越重要,风险管理的效果也会越来越精准。

金融机构在应用 VaR 模型的同时,应该更加全面和恰当地认识 ES 在金融风险管理中的作用,以弥补 VaR 模型的不足。同时以压力测试、情景分析等不同的方法作为补充,实施全面的金融风险管理。

3. ES 模型在金融机构中的应用

  1. 用于风险偏好设定。通过对 ES 模型中置信区间的选择,体现金融机构对风险的不同偏好。选择较大的置信水平意味着其对风险比较厌恶,希望能得到把握性较大的预测结果,希望模型对于极端事件的预测准确性较高。根据各自的风险偏好不同,选择的置信区间也各不相同。巴塞尔委会在 2016 年最新的「市场风险最低资本管理要求」中,对每日 ES 的计算采用单侧 97.5% 的置信区间,体现了其稳健的监管风格。

  2. 用于风险限额管理。与 VaR 模型相同,风险管理者可以利用 ES 模型分析各个业务部门承担风险的大小,确认金融机构总体面临的各类风险敞口,从而通过 ES 限额来控制各业务部门可以承担的各类风险,确保每项业务所承担的各类风险不超过提前设定的水平,以防止过度投机行为的出现。

  3. 用于资产组合的优化配置。ES 模型在投资领域的一大应用就是资产组合的优化配置,可以采用 ES 模型与经典的 Markowitz 投资组合优化理论相结合,采用最优化方法寻找以目标函数 ES 最小为前提并且收益最大化的投资组合构成方法。

  4. ES 模型同样也可以用于绩效评估、风险报告以及估算风险资本。

4. ES 的 Python 实现

接下来,我们以贵州茅台(600519)股票为例,利用 Python 来计算它的 ES 值。在计算之前,首先需要获取到贵州茅台的历史股价数据,这里我们使用 Tushare。Tushare 是一个免费、开源的 python 财经数据接口包,之前已经为大家介绍过,这里就不再赘述,具体介绍可以登录它的官网查看:http://tushare.org/。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
# 数据下载链接# https://gitee.com/arlionn/data/raw/master/data01/VaR_Data_Lianxh.xlsx
# 调用相应模块import numpy as npimport pandas as pdimport tushare as ts
# 读入贵州茅台「600519」 2019-01-01 到 2019-12-31 复权后数据df = ts.get_hist_data('600519', start='2019-01-01', end='2019-12-31')
# 计算日均收益率df1 = df['close'].sort_index(ascending=True)df1 = pd.DataFrame(df1)df1['date'] = df1.indexdf1['date'] = df1[['date']].astype(str)df1["rev"]= df1.close.diff(1)df1["last_close"]= df1.close.shift(1)df1["rev_rate"]= df1["rev"]/df1["last_close"]df1 = df1.dropna()
# 打印查看数据print(df1.head(10)) close date rev last_close rev_ratedate2019-01-03 590.00 2019-01-03 -8.98 598.98 -0.0149922019-01-04 602.00 2019-01-04 12.00 590.00 0.0203392019-01-07 605.49 2019-01-07 3.49 602.00 0.0057972019-01-08 604.79 2019-01-08 -0.70 605.49 -0.0011562019-01-09 616.12 2019-01-09 11.33 604.79 0.0187342019-01-10 618.77 2019-01-10 2.65 616.12 0.0043012019-01-11 635.88 2019-01-11 17.11 618.77 0.0276522019-01-14 624.60 2019-01-14 -11.28 635.88 -0.0177392019-01-15 659.98 2019-01-15 35.38 624.60 0.0566442019-01-16 661.10 2019-01-16 1.12 659.98 0.001697
# 开始计算 ES 值def ES_daily(a,x): VaR=np.percentile(a,(1-x)*100) ES=a[a<=VaR].mean() return abs(ES)print('99%置信水平下的ES为{:.2f}'.format(\ES_daily(df1.rev_rate,0.99)))
# 输出结果99% 置信水平下的 ES 为 0.05

由输出结果可以看出,贵州茅台 99% 置信水平下的 ES 为 5%。如需要计算其他置信水平下的 ES 值,仅需要替换上述代码中的置信水平部分即可。

5. ES 的 Stata 实现

接下来,我们仍然以贵州茅台(600519)股票为例,利用 Stata 来计算它的 ES 值,具体实现过程如下。

数据下载和准备工作:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
local url "https://gitee.com/arlionn/data/raw/master/data01/VaR_Data_Lianxh.xlsx"import excel using "`url'", first clear  //导入数据
gen t = date(date, "YMD") //产生数值类型的时间变量format t %td //设定显示格式tsset t //设定时间序列标示drop rev_rate

ES 的计算和分析过程如下:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
* 首先,导入历史股价数据后计算日收益率gen yesterday=close[_n-1]    * close 代表收盘价,yesterday代表滞后一期的变量,也就是前一天的收盘价gen rev_rate=(close-yesterday)/yesterday
* 接着,计算出 90% 置信水平下的 VaR 值centile rev_rate, centile(10)* 输出结果如下 -- Binom. Interp. -- Variable | Obs Percentile Centile [95% Conf. Interval]-------------+------------------------------------------------------------- rev_rateold | 243 10 -.01755 -.0215588 -.013518
* 接下来,计算出 90% 置信水平下的 ES 值 sum rev_rate if rev_rate<=-0.01755* 结果输出如下 Variable | Obs Mean Std. Dev. Min Max-------------+--------------------------------------------------------- rev_rateold | 24 -.0274278 .0118823 -.0698152 -.01766

由输出结果可以看出,贵州茅台 90% 置信水平下的 ES 为 2.7%。如需要计算其他置信水平下的 ES 值,仅需要替换上述代码中的置信水平部分即可。

连享会 - 文本分析与爬虫 - 专题视频

主讲嘉宾:司继春 || 游万海

连享会-文本分析与爬虫-专题视频教程

连享会 - 效率分析专题

已上线:可随时购买学习+全套课件,课程主页 已经放置板书和 FAQs
主讲嘉宾:连玉君 | 鲁晓东 | 张宁
课程主页微信版https://gitee.com/arlionn/TE

连享会-效率分析专题视频
连享会-效率分析专题视频

   

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
Stata暑期班 连玉君
江艇
线上直播 9 天
2020.7.28-8.7
效率分析-专题 连玉君
鲁晓东
张 宁
视频-TFP-SFA-DEA
已上线,3天
文本分析/爬虫 游万海
司继春
视频-文本分析与爬虫
已上线,4天
空间计量系列 范巧 空间全局模型, 空间权重矩阵
空间动态面板, 空间DID
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:
    • 课程, 直播, 视频, 客服, 模型设定, 研究设计, 暑期班
    • stata, plus,Profile, 手册, SJ, 外部命令, profile, mata, 绘图, 编程, 数据, 可视化
    • DID,RDD, PSM,IV,DID, DDD, 合成控制法,内生性, 事件研究, 交乘, 平方项, 缺失值, 离群值, 缩尾, R2, 乱码, 结果
    • Probit, Logit, tobit, MLE, GMM, DEA, Bootstrap, bs, MC, TFP, 面板, 直击面板数据, 动态面板, VAR, 生存分析, 分位数
    • 空间, 空间计量, 连老师, 直播, 爬虫, 文本, 正则, python
    • Markdown, Markdown幻灯片, marp, 工具, 软件, Sai2, gInk, Annotator, 手写批注, 盈余管理, 特斯拉, 甲壳虫, 论文重现, 易懂教程, 码云, 教程, 知乎

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……


扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD