VaR模型

您所在的位置:网站首页 用excel蒙特卡罗法计算var VaR模型

VaR模型

2024-07-13 05:37| 来源: 网络整理| 查看: 265

前言

既然本站的名称就叫作cnVaR,那就不得不介绍在险价值(Value at risk)的计算方法。VaR模型有多种的计算方法,比较常见的有历史模拟法、方差-协方差法 和 蒙特.卡洛模拟法 本文将介绍历史模拟法并计算VaR。

其实用历史模拟法计算VaR的整体思路是,先计算出某只股票某段时间的整体回报率和波动, 然后根据置信区间的百分比,如10%、5%或 1% 来确定最大损失值。

下面我们将用到tushare.pro的数据来计算上市公司的相关统计数据。

免费注册Tushare.pro账号

首先,我们需要从tushare.pro注册一个账号并调用其API获取股票日线数据。可能大多数的童稚是第一次接触tushare.pro, 那我就直接贴上官方介绍:

Tushare是一个免费提供各类金融数据和区块链数据 , 助力智能投资与创新型投资的python财经数据接口包。拥有丰富的数据内容,如股票、基金、期货、数字货币等行情数据,公司财务、基金经理等基本面数据。

步骤 我们首先调用Tushare的API 获取股票数据; 再通过python计算出其股票价格每日的百分比变化; 历史模拟法计算VaR (一)收益率计算

因为计算股票的历史回报率不是本文的重点,所以我直接就用代码带过,过程如下:

(二)用历史模拟法计算VaR

我们将使用到上面收益率计算中的returns变量。

1. 用百分比来表示在险价值1234567VaR_90 = returns.quantile(0.1)VaR_95 = returns.quantile(0.05)VaR_99 = returns.quantile(0.01)VaR_9999 = returns.quantile(0.001)h_VaR = {'90%':VaR_90, '95%':VaR_95,'99%':VaR_99,'99.99%':VaR_9999}pd.DataFrame.from_dict(h_VaR, orient='index',columns=['在险损失(VaR)'])

输出:

- 在险损失(VaR) 90% -0.019468 95% -0.029046 99% -0.052938 99.99% -0.090910 2. 用绝对金额来表示在险价值

假设你的投资金额为100万,那么用绝对值来算,那么:

12345678invest =100VaR_90 = returns.quantile(0.1)*investVaR_95 = returns.quantile(0.05)*investVaR_99 = returns.quantile(0.01)*investVaR_9999 = returns.quantile(0.001)*investh_VaR = {'90%':VaR_90, '95%':VaR_95,'99%':VaR_99,'99.99%':VaR_9999}pd.DataFrame.from_dict(h_VaR, orient='index',columns=['在险价值(金额)'])

输出:

- 在险损失(金额) 90% -1.938319 95% -2.904585 99% -5.293842 99.99% -9.090971

解释: 假设你投资了100万股票600377(宁沪高速),你单日的投资损失有90%的机率会少于1.94万;你单日的投资损失有95%的机率会少于2.90万;你单日的投资损失有99%的机率会少于5.29万;你单日的投资损失有99%的机率会少于9.09万。

用图来显示:

123456789101112131415# 假设置信区间为95%varg = np.percentile(returns, 5)#柱状图plt.figure(figsize=(15, 5))plt.hist(returns,density=True)plt.xlabel('回报率')plt.ylabel('频率')plt.title(r'收益柱状图', fontsize=18, fontweight='bold')plt.axvline(x=varg, color='r', linestyle='--', label='95% 置信区间 VaR: ' + "{0:.2f}%".format(varg * 100))plt.legend(loc='upper right')plt.show() print ("你单日的最大投资损失有95%的机率会少于" + "{0:.2f}%".format(np.percentile(returns, 5) * 100))print(" 占" + str(len(returns)) + " 天中的" + "{0:.2f}".format(.05*len(returns)) + "天")

输出:

你单日的最大投资损失有95%的机率会少于-2.90%, 占3999 天中的199.95天。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3