在险价值VaR是按某一确定的置信度,对某一给定的时间期限内不利的市场变动可能造成投资组合的最大损失的一种估计。目的是为了展示损失会糟糕成什么样子。
预期亏损(ES),也被成为条件风险价值度(conditional VaR)或条件尾部期望(conditional expectation)或尾部损失(tail loss),其回答的是当市场条件变糟糕而触发损失时,我们的损失预期会有多大。
下面我们通过python程序来展示如何计算单个资产的VaR及ES。
本次使用的数据来自与Tushare平台,有较为全面的金融数据可供使用,通过数据接口调用数据简单快捷,可以通过在终端利用命令pip install tushare安装该库并进行调用。
1.首先我们导入必要的库
import tushare as ts import numpy as np import pandas as pd import scipy.stats as st
2.初始化pro接口。token可以在https://tushare.pro/上注册后获得。
pro = ts.pro_api('your token')
3.提取数据。本次我们调用的是601398.SH这支股票2020年的日线数据,同时并对数据进行一些预处理。
data = pro.daily(ts_code='601398.SH', start_date='20200101', end_date='20201231') data = data.sort_values(by=['trade_date']).reset_index(drop=True)
4.计算VaR与ES。
r = np.array(data[0:len(data)].T).tolist()[8]
T = len(r)
alpha = 0.01 #置信度
print(' =====================================')
print(' == Univariate unconditionnal VaR ==')
print(' =====================================')
print(' ')
print(" Coverate Rate = %1.2f" % (alpha))
print(" Sample size = %4.0f" % (T))
VaR_univariate= np.mean(r) - np.std(r, ddof=1) * st.norm.ppf(alpha) # st.norm.ppf(alpha)为累积标准正态分布的反函数
ES = np.mean(r) + st.norm.pdf(st.norm.ppf(1-alpha)) * np.std(r, ddof=1) / alpha
print(" Asset : Expected returns = %2.6f Variance of returns = %2.6f " % ( float(np.mean(r)), float(np.var(r, ddof=1))))
print(" Asset : Univariate VaR = %2.6f Univariate ES = %2.6f" % ( VaR_univariate, ES))



