导航

  • CVaR and VaR
  • Model
    • normal distribution
    • student t distribution
  • Case Study
  • Reference

CVaR and VaR

CVaR(Conditional Value-at-Risk)也被称为Expected Shortfall(ES) 或者 Expected Tail Loss(ETL),可以解释超过给定VaR值的期望损失,在很多风险分析中,CVaR是更具有解释力,当设置了VaR阈值后,CVaR说明了在之后的hhh天交易中的期望损失风险(即资产价值低于预先设置的VaR值). 显然VaR和资产日回报率的分布有关.

当资产回报率的尾部较厚,使用整态分布刻画是不合适的,考虑使用t分布对资产回报率分布进行描述.

Model

normal distribution

令XXX表示hhh日的回报率,则
VaRh,α=−xh,αVaR_{h, \alpha}=-x_{h, \alpha} VaRh,α​=−xh,α​
其中,P(X<xh,α)=αP(X<x_{h, \alpha})=\alphaP(X<xh,α​)=α.
CVaR使用条件期望的形式表达
CVaRh,α(X)=−E(X∣X<xh,α)=−α−1∫−∞xh,α=xf(x)dxCVaR_{h, \alpha}(X)=-\mathbb{E}(X\mid X<x_{h, \alpha})=-\alpha^{-1}\int_{-\infty}^{x_{h, \alpha}}=xf(x)dx CVaRh,α​(X)=−E(X∣X<xh,α​)=−α−1∫−∞xh,α​​=xf(x)dx
对于任意连续的概率密度函数f(x)f(x)f(x),需要计算x∼100(1−α)%hx\sim 100(1-\alpha)\%hx∼100(1−α)%h天VaR的xf(x)xf(x)xf(x)积分.
考虑在X∼N(μh,σh2)X\sim N(\mu_h, \sigma_h^2)X∼N(μh​,σh2​)的情况下的CVaR
CVaRh,α(X)=α−1φ(Φ−1(α))σh−μhCVaR_{h, \alpha}(X)=\alpha^{-1}\varphi(\Phi^{-1}(\alpha))\sigma_h-\mu_h CVaRh,α​(X)=α−1φ(Φ−1(α))σh​−μh​
其中φ(z)\varphi(z)φ(z)表示标准正态分布的pdf,Φ(α)−1\Phi(\alpha)^{-1}Φ(α)−1为α\alphaα分位数.
案例:计算h=5h=5h=5的CVaR,股价年化回报率符合σ=41%,μ=0\sigma=41\%, \mu=0σ=41%,μ=0的正态分布,设置一年的交易日为252天计算出
σh=σh/252=0.415/252=0.05798\sigma_h=\sigma\sqrt{h/252}=0.41\sqrt{5/252}=0.05798 σh​=σh/252​=0.415/252​=0.05798
python计算gaussian分布VaRCVaR代码如下

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
from math import sqrtdef demo_1():h, D=5, 252mu, sig = 0, 0.41muh, sigh=mu*(h/D), sig*sqrt(h/D)alpha=0.01lev=100*(1-alpha)CVaRh=alpha**(-1)*norm.pdf(norm.ppf(alpha))*sigh-muhVaRh=norm.ppf(1-alpha)*sigh-muhprint('{}% {} day Normal VaR= {:.2f}%'.format(lev, h, VaRh*100))print('{}% {} day Normal CVaR= {:.2f}%'.format(lev, h, CVaRh*100))demo_1()

student t distribution

考虑更适合肥尾的t分布进行建模,标准t分布的pdf函数为
fν(x)=((ν−2)π)−1/2Γ(v2)−1Γ(ν+12)⏟A(1+(ν−2)−1⏟ax2)−(ν+1)/2⏟bf_\nu(x)=\underbrace{((\nu-2)\pi)^{-1/2}\Gamma(\frac{v}{2})^{-1}\Gamma(\frac{\nu+1}{2})}_{A}(1+\underbrace{(\nu-2)^{-1}}_{a}x^2)^{\underbrace{-(\nu+1)/2}_{b}} fν​(x)=A((ν−2)π)−1/2Γ(2v​)−1Γ(2ν+1​)​​(1+a(ν−2)−1​​x2)b−(ν+1)/2​​
其中Γ\GammaΓ表示gamma函数,ν\nuν表示自由度,方程一般形式为
fν(x)=A(1+ax2)bf_\nu(x)=A(1+ax^2)^b fν​(x)=A(1+ax2)b
代入到CVaR定义中得到
CVaRα,ν=−α−1∫−∞xα,νxfν(x)dx=−α−1∫−∞xα,νxA(1+ax2)bdx=−Aα∫−∞xα,νx(1+ax2⏟y)bdx(1)\begin{aligned} CVaR_{\alpha, \nu}&=-\alpha^{-1}\int_{-\infty}^{x_{\alpha, \nu}}xf_\nu(x)dx\\ &=-\alpha^{-1}\int_{-\infty}^{x_{\alpha, \nu}}xA(1+ax^2)^bdx\\ &=-\frac{A}{\alpha}\int_{-\infty}^{x_{\alpha, \nu}}x(\underbrace{1+ax^2}_y)^bdx \end{aligned}\tag{1} CVaRα,ν​​=−α−1∫−∞xα,ν​​xfν​(x)dx=−α−1∫−∞xα,ν​​xA(1+ax2)bdx=−αA​∫−∞xα,ν​​x(y1+ax2​​)bdx​(1)
令y=1+ax2y=1+ax^2y=1+ax2进行变换,dy=2axdx,B=1+(ν−2)−1xα,ν2dy=2axdx,B=1+(\nu-2)^{-1}x^2_{\alpha, \nu}dy=2axdx,B=1+(ν−2)−1xα,ν2​,方程(1)(1)(1)变换得到
(1)=−Aα∫−∞Bx(1+ax2)b2axdy=−A2aα∫∞Bybdy=−A2aαBb+1b+1\begin{aligned} (1)&=-\frac{A}{\alpha}\int_{-\infty}^B\frac{x(1+ax^2)^b}{2ax}dy\\ &=-\frac{A}{2a\alpha}\int_{\infty}^{B}y^bdy\\ &=-\frac{A}{2a\alpha}\frac{B^{b+1}}{b+1} \end{aligned} (1)​=−αA​∫−∞B​2axx(1+ax2)b​dy=−2aαA​∫∞B​ybdy=−2aαA​b+1Bb+1​​
由于b+1=(1−ν)/2b+1=(1-\nu)/2b+1=(1−ν)/2代入得到(1)(1)(1)值为
−A(ν−2)−1α2B(1−ν)/21−ν-\frac{A}{(\nu-2)^{-1}\alpha}\frac{2B^{(1-\nu)/2}}{1-\nu} −(ν−2)−1αA​1−ν2B(1−ν)/2​
根据fν(x)f_\nu(x)fν​(x)的表达式可以知道
fν(x)=ABb⇒A=fν(x)B−b=fν(x)B(1+ν)/2f_\nu(x)=AB^b\Rightarrow A=f_\nu(x)B^{-b}=f_\nu(x)B^{(1+\nu)/2} fν​(x)=ABb⇒A=fν​(x)B−b=fν​(x)B(1+ν)/2
代入方程(1)(1)(1)得到CVaR值为
(1)=−α−1fν(x)B(1+ν)/22(ν−2)−12B(1−ν)/21−ν=−α−1fν(x)(ν−2)(1−ν)−1B=−α−1(ν−2)(1−ν)−1(1+(ν−2)−1xα,ν2)fν(xα,ν)=−α−1(1−ν)−1[ν−2+xα,ν2]fν(xα,ν)\begin{aligned} (1)&=-\alpha^{-1}\frac{f_\nu(x)B^{(1+\nu)/2}}{2(\nu-2)^{-1}}\frac{2B^{(1-\nu)/2}}{1-\nu}\\ &=-\alpha^{-1}f_\nu(x)(\nu-2)(1-\nu)^{-1}B\\ &=-\alpha^{-1}(\nu-2)(1-\nu)^{-1}(1+(\nu-2)^{-1}x^2_{\alpha, \nu})f_\nu(x_{\alpha, \nu})\\ &=-\alpha^{-1}(1-\nu)^{-1}[\nu-2+x^2_{\alpha, \nu}]f_\nu(x_{\alpha, \nu}) \end{aligned} (1)​=−α−12(ν−2)−1fν​(x)B(1+ν)/2​1−ν2B(1−ν)/2​=−α−1fν​(x)(ν−2)(1−ν)−1B=−α−1(ν−2)(1−ν)−1(1+(ν−2)−1xα,ν2​)fν​(xα,ν​)=−α−1(1−ν)−1[ν−2+xα,ν2​]fν​(xα,ν​)​
所以,hhh天,t分布下CVaR值为
CVaRh,α,ν(X)=−α−1(1−ν)−1[ν−2+xα,ν2]fν(xα,ν)σh−μhCVaR_{h, \alpha, \nu}(X)=-\alpha^{-1}(1-\nu)^{-1}[\nu-2+x_{\alpha, \nu}^2]f_\nu(x_{\alpha, \nu})\sigma_h-\mu_h CVaRh,α,ν​(X)=−α−1(1−ν)−1[ν−2+xα,ν2​]fν​(xα,ν​)σh​−μh​
案例计算自由度为666的t分布的VaRCVaR
python计算t分布下VaRCVaR代码如下

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm, t
from math import sqrtdef demo_2():h, D = 10, 252mu, sig=0, 0.41muh, sigh=mu*(h/D), sig*sqrt(h/D)alpha=0.01lev=100*(1-alpha)nu=6 # 设置自由度xanu=t.ppf(alpha, nu)CVaRh=-1/alpha*(1-nu)**(-1)*(nu-2+xanu**2)*t.pdf(xanu, nu)*sigh-muhVaRh=sqrt(h/D*(nu-2)/nu)*t.ppf(1-alpha, nu)*sig-muprint('{}% {} day t VaR= {:.2f}%'.format(lev, h, VaRh*100))print('{}% {} day t CVaR= {:.2f}%'.format(lev, h, CVaRh*100))demo_2()

可以发现,随着自由度的上升,t分布的VaRCVaR逐渐收敛到gaussian分布的VaRCVaR

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm, t
from math import sqrtdef demo_3():h, D = 10, 252mu, sig=0, 0.41muh, sigh=mu*(h/D), sig*sqrt(h/D)alpha=0.01lev=100*(1-alpha)data=[]for nu in range(5, 101):xanu=t.ppf(alpha, nu)CVaRt=-1/alpha*(1-nu)**(-1)*(nu-2+xanu**2)*t.pdf(xanu, nu)*sigh-muhVaRt=sqrt(h/D*(nu-2)/nu)*t.ppf(1-alpha, nu)*sig-muhdata.append([nu, VaRt, CVaRt])CVaRn=alpha**(-1)*norm.pdf(norm.ppf(alpha))*sigh-muhVaRn=norm.ppf(1-alpha)*sigh-muhdata=np.array(data)fig, ax=plt.subplots(figsize=(8, 6))plt.plot(data[:, 0], data[:, 1]*100, 'b-', label='VaRt')plt.plot(np.arange(5, 100), VaRn*np.ones(95)*100, 'b:', label='VaRn')plt.plot(data[:, 0], data[:, 2]*100, 'r-', label='CVaRt')plt.plot(np.arange(5, 100), CVaRn*np.ones(95)*100, 'r:', label='CVaRn')plt.xlabel('student t. d.o.f')plt.ylabel('%')plt.legend()plt.show()demo_3()

Case Study

使用IBM数据进行实证分析, 使用gaussian分布和t分布拟合IBM日回报收益率得到拟合图像如下

可以发现,t分布更适合拟合这种存在高噪声的尖峰厚尾的数据,不同分布计算的CVaR和VaR值如下

99.0% 1 day gaussian VaR= 2.81%
99.0% 1 day gaussian CVaR= 3.22%
99.0% 1 day student t VaR= 2.22%
99.0% 1 day student t CVaR= 3.91%


案例python代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm, t, skew, kurtosis, kurtosistest
from math import sqrt
import pandas_datareader.data as web
import pickle# Fetching Yahoo Finance for IBM stock data
def data_fetch():data = web.DataReader('IBM', data_source='yahoo', start='2010-12-31', end='2015-12-31')['Adj Close']adj_close=np.array(data.values)ret=adj_close[1:]/adj_close[:-1]-1file=open('ibm_ret', 'wb')pickle.dump(ret, file)with open('ibm_ret', 'rb') as file:ret=pickle.load(file)dx=0.0001
x=np.arange(-0.1, 0.1, dx)# gaussian fit
mu_norm, sig_norm=norm.fit(ret)
pdf_norm=norm.pdf(x, mu_norm, sig_norm)# student t fit
nu, mu_t, sig_t=t.fit(ret)
nu=np.round(nu)
pdf_t=t.pdf(x, nu, mu_t, sig_t)# VaR and CVaR
h=1
alpha=0.01
lev=100*(1-alpha)
xanu=t.ppf(alpha, nu)CVaRn=alpha**(-1)*norm.pdf(norm.ppf(alpha))*sig_norm-mu_norm
VaRn=norm.ppf(1-alpha)*sig_norm-mu_norm
CVaRt=-1/alpha*(1-nu)**(-1)*(nu-2+xanu**2)*t.pdf(xanu, nu)*sig_t-h*mu_t
VaRt=sqrt((nu-2)/nu)*t.ppf(1-alpha, nu)*sig_t-h*mu_tprint('{}% {} day gaussian VaR= {:.2f}%'.format(lev, h, VaRn*100))
print('{}% {} day gaussian CVaR= {:.2f}%'.format(lev, h, CVaRn*100))
print('{}% {} day student t VaR= {:.2f}%'.format(lev, h, VaRt*100))
print('{}% {} day student t CVaR= {:.2f}%'.format(lev, h, CVaRt*100))plt.figure(figsize=(12, 8))
grey=0.75, 0.75, 0.75
plt.hist(ret, bins=50, density=True, color=grey, edgecolor='none')
plt.axis('tight')
plt.plot(x, pdf_norm, 'b-.', label='Guassian Fit')
plt.plot(x, pdf_t, 'g-.', label='Student t Fit')
plt.xlim([-0.2, 0.1])
plt.ylim([0, 50])
plt.legend(loc='best')
plt.xlabel('IBM daily return')
plt.ylabel('ret. distr.')# plt.savefig('ibm_fit')
# inset local
sub=plt.axes([0.22, 0.35, 0.3, 0.4])
plt.hist(ret, bins=50, density=True, color=grey, edgecolor='none')
plt.plot(x, pdf_norm, 'b')
plt.plot(x, pdf_t, 'g')
plt.plot([-CVaRt, -CVaRt], [0, 3], 'g:')
plt.plot([-CVaRn, -CVaRn], [0, 4], 'b:')
plt.text(-CVaRt-0.015, 3.1, 'Stu. t', color='g')
plt.text(-CVaRn-0.015, 4.1, 'Gaussian CVaR', color='b')
plt.xlim([-0.09, -0.02])
plt.ylim([0, 5])# plt.savefig('ibmcvar')
plt.show()

从数据和图像可以看出,Gaussian拟合计算的CVaR值存在低估风险的倾向.

Reference

CVaR Quant at risk

【FinE】正态分布和t分布下的CVaR相关推荐

  1. 机器学习中的数学——常用概率分布(五):高斯分布(Gaussian分布)/正态分布(Normal分布)

    分类目录:<机器学习中的数学>总目录 相关文章: · 常用概率分布(一):伯努利分布(Bernoulli分布) · 常用概率分布(二):范畴分布(Multinoulli分布) · 常用概率 ...

  2. 正态分布、T分布、卡方分布、F分布的分位数、临界值公式

    以下我们计算值都以alpha(α) = 0.05为例 正态分布 标准正态分布,虽是一个对称的,但我们要考虑其正负值,即在零的左边还是右边. = NORM.S.INV(0.05) #Excel中标准正态 ...

  3. [python skill]利用python计算T分布下的置信区间

    上篇博文中的置信区间计算代码在使用过程中并不准确,本人没并没有搞清楚原因 - - 求大神解答: import numpy as np from scipy import statsX1=np.arra ...

  4. 一种崭新的长尾分布下分类问题的通用算法|NeurIPS 2020

    ↑ 点击蓝字 关注视学算法 作者丨汤凯华@知乎 来源丨https://zhuanlan.zhihu.com/p/259569655 编辑丨极市平台 本文主要介绍我们组今年被NeurIPS 2020接收 ...

  5. matlab如何表示三峰正态分布,正态分布及常用分布的matlab编程实现

    <正态分布及常用分布的matlab编程实现>由会员分享,可在线阅读,更多相关<正态分布及常用分布的matlab编程实现(3页珍藏版)>请在人人文库网上搜索. 1.functio ...

  6. 机械学习07: 常用统计分布:正态分布、T分布、卡方分布、F分布

    目录 1.正态分布(高斯概率密度函数和概率分布函数) 2.t分布: 3.卡方分布 4.F 分布 1.正态分布(高斯概率密度函数和概率分布函数) 正态分布(Normal distribution)又名高 ...

  7. 长尾分布下的分类问题

    长尾分布下的分类问题 ​ 基于深度学习的分类算法应用于长尾分布数据集时,识别效果不好.对尾部类别的学习效果很差.为解决长尾分类下的识别问题,有多种不同思想的优化方法.最简单的方法是重采样(re-sam ...

  8. 正态分布/卡方分布/F分布/T分布

    正态分布: 正态分布(Normal distribution)又名高斯分布(Gaussiandistribution),若随机变量X服从一个数学期望为μ.方差为σ^2的高斯分布,记为N(μ,σ^2). ...

  9. python 服从正太分布下概率密度函数

    # python 服从正太分布下概率密度函数 利用input()函数输入均值和标准差, 多次绘制概率密度函数图形并将图像曲线放置在同一张图中 代码块: """ 绘制正太分 ...

最新文章

  1. Thttpd manual
  2. margin和padding
  3. IDEA 2021.3 正式发布:支持远程开发、故障排查、Java和Spring等多项优化改进
  4. Java设计模式详解
  5. sql if else语句_一道sql题学习if语句和case when语句
  6. linux系统中扩展一个逻辑卷,Linux 创建及扩展逻辑卷
  7. 936焊台(恒温电烙铁)温度不可调的维修 (Z)
  8. mysql 非等值条件 索引_慢SQL简述与定位
  9. 主题列表,有时间整理成博客
  10. android tf卡检测工具,检测SD卡真假!安卓App一键识破SD卡真伪
  11. linux安卓管理软件,基于Android的文件管理系统源代码
  12. SCAU程序设计在线实训平台_实验_高级语言程序设计_教材习题_第七章
  13. pytorch gpu版本安装
  14. python 绘制折线图与柱状图
  15. sql_trace跟踪分析方法
  16. Svelte 实现 keypress 快捷键功能
  17. 明翰的大数据笔记V0.2(持续更新)
  18. h5 iOS 刘海屏适配
  19. PostgreSQL忘记密码
  20. MS VS+HIK海康机器人工业相机环境配置

热门文章

  1. 临床路径管理系统方案/案列/APP/软件/小程序/网站
  2. 武田发布评估NINLARO™ (ixazomib)治疗新诊断多发性骨髓瘤的3期临床试验结果
  3. 创业者如何选择服务器?
  4. ppt播放影片时出现提示某些文件可能携带病毒,损害您的计算机,我的PPT没病毒—禁用PowerPoint的病毒提示...
  5. 浅谈对dropout的理解
  6. ScreenFlow for Mac v10 中文版 优秀的屏幕录像软件
  7. SEER数据库更新至8.3.9版本报错及解决(MoveFileEx failed; code 5. 拒绝访问)
  8. Andrej Karpathy最新专访:AGI、Optimus、软件2.0时代丨万字精华观点
  9. zoj2770(差分约束)火烧连营
  10. 【分享】周鸿祎--用户体验和微创新