当前位置:   article > 正文

(四十三)参数法与非参数法(历史模拟法)计算VaR_历史模拟法计算var

历史模拟法计算var

参数法

  正态VaR:假设资产组合的收益率服从正态分布,那么VaR也服从正态分布,VaR=-(μ-Z·σ)×P0,算出来的是loss,如果为负则为收益。μ为资产组合的期望收益率,用往年平均收益率替代;σ为组合收益率的波动率;Z=Φ-1( c )为正态分布的分位数(取正数);P0为组合的价值。证明如下:在这里插入图片描述
  对数正态VaR:假设资产组合的对数收益率服从正态分布,那么VaR服从对数正态分布,VaR=(1-eμ-Z·σ)×P0。可简单证明如下:受到冲击后的价格P=P0(eR),VaR=|P0-P|=|P0(1-eR)|,对数收益率R=ln(P/P0)服从正态分布,那么在此置信水平下的极端收益率为μ-z·σ,代入到R中即得VaR公式。

  注意如果要求%VaR,那么公式中就不用乘P。对数正态VaR的值会比正态VaR要小。

  假定某一投资组合在2018年12月28日(最后一个交易日)的投资组合市值为1亿元,组合中配置的5种金融资产配置为:贵州茅台股票15%,交通银行股票20%,嘉实增强信用基金50%,华夏恒生ETF基金5%,博时标普500ETF基金10%。管理层要求计算持有期分别为1天和10天、置信水平为99%情况下的VaR,同时假定整个投资组合收益率是服从正态分布或对数正态分布。

data=pd.read_excel('C:/Users/lenovo/Desktop/投资组合.xlsx',index_col=0)
data
Out[7]: 
            贵州茅台  交通银行  嘉实增强信用基金  华夏恒生ETF  博时标普500ETF
日期                                                     
2015-01-05  202.52  7.05     1.071   1.0955      1.1205
2015-01-06  197.83  6.90     1.073   1.0860      1.1105
2015-01-07  192.94  6.76     1.074   1.0964      1.1239
2015-01-08  191.76  6.53     1.074   1.1042      1.1446
2015-01-09  190.31  6.50     1.075   1.1075      1.1346
           ...   ...       ...      ...         ...
2018-12-24  568.00  5.61     1.285   1.4505      1.5116
2018-12-25  565.79  5.63     1.286   1.4488      1.5116
2018-12-26  560.08  5.68     1.286   1.4475      1.5814
2018-12-27  563.00  5.72     1.286   1.4393      1.5963
2018-12-28  590.01  5.79     1.287   1.4358      1.5885
R=np.log(data/data.shift(1)).dropna()
w=np.array([0.15,0.2,0.5,0.05,0.1])
Rmean=R.mean();Rcov=R.cov()
Rp=np.sum(R.mean()*w)
volp=np.sqrt(w@Rcov@w.T)
print('投资组合的μ={:.6f},σ={:.6f}'.format(Rp,volp))
投资组合的μ=0.000268,σ=0.006427
def VaR_norm(miu,sigma,x,P,n):#n参数为持有期,x为置信水平
	import scipy.stats as st
	z=abs(st.norm.ppf(q=1-x))#标准正态分布中1-x的概率对应的分位点
	return -(miu-z*sigma)*P*np.sqrt(n)
def VaR_lognorm(miu,sigma,x,P,n):
	import scipy.stats as st
	z=abs(st.norm.ppf(q=1-x))
	return (1-np.exp(miu-z*sigma))*P*np.sqrt(n)
print('99%置信水平下1天的normal VaR为{:.2f},lognormal VaR为{:.2f}'.format(\
VaR_norm(Rp,volp,0.99,1e8,1),VaR_lognorm(Rp,volp,0.99,1e8,1)))
99%置信水平下1天的normal VaR为1468366.22,lognormal VaR为1457638.30
print('99%置信水平下10天的normal VaR为{:.2f},lognormal VaR为{:.2f}'.format(\
VaR_norm(Rp,volp,0.99,1e8,10),VaR_lognorm(Rp,volp,0.99,1e8,10)))
99%置信水平下10天的normal VaR为4643381.70,lognormal VaR为4609457.03
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

  以第二个结果为例,在99%的置信水平、持有期为10天的情况下,VaR达到了464.34万元,意味着从理论上来说未来的10个交易日内,有99%的把握认为1亿元的投资组合累计最大亏损不会超过464.34万元。

非参数法(历史模拟法)

  历史模拟法的思路是将所有样本的收益率或收益额进行排序,根据置信水平找出对应分位数的值(数值小的一端),再取绝对值就是VaR。依然以上述案例为例,用历史模拟法计算持有期分别为1天和10天、置信水平为99%情况下的VaR。

  step1:生成投资组合的日收益序列:

rp=pd.Series((1e8*R)@w,index=R.index)#投资组合的日收益额
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
plt.hist(rp,bins=40,edgecolor='k')
plt.xlabel('投资组合日收益额')
plt.ylabel('频数')
plt.title('投资组合日收益额直方图')
plt.grid()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述
  step2:对投资组合的日收益额序列进行正态性检验,计算投资组合的VaR:

st.normaltest(rp)
Out[15]: NormaltestResult(statistic=192.37738470012968, pvalue=1.681828434884396e-42)
#显然p<0.01,拒绝服从正态分布的原假设,因此用参数法计算VaR可能会产生偏差
def VaR_daily(a,x):
	#求a数列第(1-x)%分位的数值的绝对值,默认升序排序
	return abs(np.percentile(a,(1-x)*100))
print('99%置信水平下1天的VaR为{:.2f},10天的VaR为{:.2f}'.format(\
VaR_daily(rp,0.99),VaR_daily(rp,0.99)*np.sqrt(10)))

99%置信水平下1天的VaR为2135730.95,10天的VaR为6753774.29
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

  在99%的置信水平下历史模拟法计算出的10天VaR=675.38万元>正态VaR=464.34万元,可见在本案例中历史模拟法具有对尾部极端风险更强的捕捉能力。

  还有一种改进的参数法叫非参数密度估计(Non-parametric Density Estimation),将损失额直方图的每一根立柱的顶部中点进行连线,那么在线下的区域就可以当做该分布的概率密度函数,这样我们就能根据求出任意置信水平下的VaR,可以解决传统历史模拟法下n个样本最多只能有n个置信水平的问题。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/308279
推荐阅读
相关标签
  

闽ICP备14008679号