Python风险价值计算投资组合VaR、期望损失ES
原文链接:http://tecdat.cn/?p=22788
Python计算获得多资产投资组合的风险度量。
关键概念
随着价格的变动,投资经理所持有的市场价值也会发生变化。后者就是所谓的市场风险,衡量它的最流行的方法之一是定义为风险价值。风险本身被看作是实际收益和期望收益之间的差异,两者可能不同。如果它们相等,投资被认为是无风险的。同时,它不能有违约风险,也不能有再投资风险。请注意,期望收益不是投资者认为他们将获得的收益,而是反映了所有经济情况下所有可能结果的平均值。
风险价值(VaR)告诉你在一个给定的时间段内,在预先确定的置信水平下,你能损失多少钱。典型的置信度是95%和99%,意味着分析师有95%或99%的信心,损失不会超过这个数字,即5%(或1%)的VaR反映了5%(或1%)最坏情况下的未来最佳收益率。风险值是一个最先进的衡量标准,因为它可以为所有类型的资产进行计算,并考虑到多样化的因素。然而,风险值并不是一个最大的损失数字,所以分析师可能会遇到大于风险值的损失。
关于历史序列的假设:
过去的收益率是未来收益率的预测指标,但不能保证历史记录会显示未来最坏和最好的情况,但我们用几何平均法将价格转化为收益,所以我们对所有不同的周/月/...收益给予同等的权重,来获得T年内投资收益的复合最终价值。
如果资产价格中的期望收益是合理的,那么实际收益率应该围绕这些预期呈正态分布。当收益率可以很好地接近于正态分布时,投资管理就变得更加容易操作了。
定义证明
收益的计算(PT为最终价格,P0为初始价格和股息收益率)。
将价格动态转换为收益(2),用几何时间序列(4)计算期望收益(3),而不是算术平均(收益率的波动越大,算术平均和几何平均之间的差异越大)。
正态分布,以波动率作为风险的衡量标准,即投资的已实现收益的加权平均值的方差的平方根(σ^2),权重等于每种情况的概率ps(6)。
最后,正如 "投资"(Bodie, Kane, Marcus)中所说,VaR是指在给定的时间范围内,收益分布的左尾概率α和右尾概率1-α累积的最小损失额。
在方差-协方差方法中,我们使用的是参数方法,假设收益是正态分布。因此,我们只需要计算两个参数,即给定收益的平均值和SD(即标准差)。
后者对Excel的计算很有用,我们用Average函数计算收益的平均值,然后STDEV将帮助我们计算标准偏差,最后得出NORMINV将达到VaR计算的目标,VaR(95)和VaR(99)的概率分别为0.05和0.01。
单资产组合VaR
在Python中,单资产组合VaR计算没有那么复杂。
#VaR计算在Python中的应用 #准备工作(每个库都要用 "pip install \*libraryname\*"来预安装
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt#从雅虎财经下载谷歌数据到定义的时间段内
yf.download('GOOG', '2010-01-01', '2019-01-31')#收益率的计算
df\['return'\] = Close.pct_change()#VaR计算
VaR\_90 = norm.ppf(1-0.9, mean, std\_dev)print('VaR 90%置信度: ', VaR_90)
最终输出将是这样的:
雅虎是一个获得免费金融数据的好方法,另一个途径是Quandl的API库。
为了保持代码结构的连续性,我在下面介绍一个资产类别的样本,以及一个多资产的投资组合结构,其中包括VaR计算。
#准备工作
import numpy as np
import pandas as pd
#从Quandl API导入银行数据(.4表示收盘价)。
ticker = "WIKI/BAC.4"
quandl.get(ticker, #以升序方式呈现数据
sorted( percentage\["Close"\])print ("99.99%的实际损失不会超过" ,percentile(order_percentage, .01) * 100)
输出以及VaR计算。
多资产投资组合VaR
对于 多资产类别投资组合:
#将数据集扩展到5种不同的资产,将它们组合成一个具有替代风险的投资组合。
\[ "WIKI/NKE.4", "WIKI/NFLX.4", "WIKI/AMZN.4"\]#收益率的计算
df.pct_change()#不同的风险敞口进入投资组合
percentage * exposures
ptf\_percentage = value\_ptf\['投资组合的价值'\] 。
np.percentile(ptf_percentage, .01)print ("99.99%的实际损失不会超过:" round(VaR, 2)print ("预计损失将超过" + (ptf\_percentage)) + "超过" ptf\_percentage)) + "天数")
期望损失(Expected Shortfall)
接下来我们讨论另一个基本指标的重要性:期望损失(Expected Shortfall)。
在搜索VaR相关文献时,你会发现有很多关于VaR作为市场风险衡量标准的批评意见。你不可避免地看到期望损失(ES)被提出来作为一种替代。
这两者之间有什么区别呢?
假设我们在99%的置信水平下评估我们的VaR(或者简单地说,潜在的损失),我们将有一系列的损失结果在1%的尾部,
VaR回答了问题:在1%的尾部,整个结果范围内的最小损失是多少?
ES回答了问题:在1%的尾部,整个结果范围内的平均损失是多少?
首先,VaR。
VaR
如果X是h天的收益,那么,其中。例如,对于h=10天的收益,,我们可以从正态分布中计算出99%的风险值,如下所示
h = 10. # 为10天
mu_h = 0.1 # 这是10天内收益率的平均值 - 10%。
sig = 0.3 # 这是一年内收益率的波动 - 30%。VaR\_n = normppf(1-alpha)*sig\_h - mu_h
以上是参数化的VaR,这意味着我们假设有一定的收益分布。在使用VaR时,通常会使用经验性的VaR,它不假设任何分布形状。在这些情况下,获得VaR只是一个简单的问题,即获得必要的百分数。
条件VaR/期望损失EXPECTED SHORTFALL
考虑到VaR,我们可以通过以下方式定义条件VaR,或CVaR或期望损失。
对这一点的解释很简单。基本上,它是X的期望值(平均值)。
如果我们再假设一个正态分布,我们可以应用以下公式
其中是正态分布,是标准正态分布的四分位数。
接下来是ES。
# 与上述参数相同
alpha**-1 * norm.pdf(norm.ppf(alpha))*sig\_h - mu\_h
我们不一定要假设正态分布。
上述假设为正态分布,但我们也可以应用学生-T分布。得到等价公式的推导涉及到了这个问题。然而,我们可以通过以下公式计算学生-T分布下的等效风险值
我们也可以假设一个T分布。
nu = 5 # 自由度,越大,越接近于正态分布
print("99% CVaR ", (CVaR_t*100,2)
自由度越大,越接近于正态分布。
# 验证正态分布和Student-t VaR是一样的
nu = 10000000 # 自由度,越大,越接近于正态分布print("99% VaR", round(VaR_t*100,2))
我们可以用实际的市场数据计算出类似的结果。首先,将数据拟合为正态分布和t分布。
mu\_norm, sig\_norm = norm.fit(returns
而各自的VaR和ES可以很容易地计算出来。
绘制具有不同自由度的VaR和CVaR图表
plt.plot(d\[0\], d\[1\]*100
plt.plot(np.arange(5, 100), VaR_n\*np.ones(95)\*100
点击标题查阅往期内容
R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
左右滑动查看更多
01
02
03
04
VaR\_n = norm.ppf(1-alpha)*sig\_norm -munorm
可以很好地了解VaR和ES之间区别的图表如下。
Python确实是一个强大的工具,用于计算和数据可视化。它允许你导入几个不同的预包装库,大大降低了其他代码(如C++)的复杂性。
本文摘选《Python风险价值计算投资组合VaR(Value at Risk )、期望损失ES(Expected Shortfall)》,点击“阅读原文”获取全文完整资料。
点击标题查阅往期内容
极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析
Garch波动率预测的区制转移交易策略
金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据
R语言GARCH建模常用软件包比较、拟合标准普尔SP 500指数波动率时间序列和预测可视化
Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
MATLAB用GARCH模型对股票市场收益率时间序列波动的拟合与预测
R语言GARCH-DCC模型和DCC(MVT)建模估计
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
R语言时间序列GARCH模型分析股市波动率
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测
使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
R语言多元Copula GARCH 模型时间序列预测
R语言使用多元AR-GARCH模型衡量市场风险
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格
R语言用Garch模型和回归模型对股票价格分析
GARCH(1,1),MA以及历史模拟法的VaR比较
matlab估计arma garch 条件均值和方差模型
R语言POT超阈值模型和极值理论EVT分析
R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
R语言极值理论EVT:基于GPD模型的火灾损失分布分析
R语言有极值(EVT)依赖结构的马尔可夫链(MC)对洪水极值分析
R语言POT超阈值模型和极值理论EVT分析
R语言混合正态分布极大似然估计和EM算法
R语言多项式线性模型:最大似然估计二次曲线
R语言Wald检验 vs 似然比检验
R语言GARCH-DCC模型和DCC(MVT)建模估计
R语言非参数方法:使用核回归平滑估计和K-NN(K近邻算法)分类预测心脏病数据
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计
R语言基于Bootstrap的线性回归预测置信区间估计方法
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型
Matlab马尔可夫区制转换动态回归模型估计GDP增长率
R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
欲获取全文文件,请点击左下角“阅读原文”。
欲获取全文文件,请点击左下角“阅读原文”。
Python风险价值计算投资组合VaR、期望损失ES相关推荐
- 算法组合 优化算法_算法交易简化了风险价值和投资组合优化
算法组合 优化算法 Photo by Markus Spiske (left) and Jamie Street (right) on Unsplash Markus Spiske (左)和Jamie ...
- Python蒙特卡罗(Monte Carlo)模拟计算投资组合的风险价值(VaR)
最近我们被客户要求撰写关于风险价值(VaR)的研究报告,包括一些图形和统计输出. 如何使用Python通过蒙特卡洛模拟自动计算风险值(VaR)来管理投资组合或股票的金融风险. 金融和投资组合风险管理中 ...
- 风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
原文链接: http://tecdat.cn/?p=15929 风险价值VaR和损失期望值ES是常见的风险度量. 首先明确: 时间范围-我们展望多少天? 概率水平-我们怎么看尾部分布? 在给定时间范围 ...
- python分位数回归模型_如何理解分位数回归风险价值 (VaR) 模型?
风险价值(下称VaR)的计算方法主要有历史模拟法(非参数法).分析方法.蒙特-卡罗模拟法三类.不同的计算方法.计算参数下所得的VaR都是不同的.若某机构宣称其产品的VaR较低即投资风险较低,投资者还需 ...
- ES期望损失:Stata及Python实现
原文链接: https://www.lianxh.cn/news/5e74f7966cf51.html 目录 1. ES (期望损失) 简介 1.1 引言 1.2 起源与发展 1.3 VaR 的缺陷 ...
- Python量化:评估投资组合的收益率和风险
不要把所有的鸡蛋放在同一个篮子里,这是投资界中历久弥新的至理名言. 为了避免风险,投资人往往会将资产分散到不同的金融工具中,比如信托.债券.基金.股票.期货.期权甚至房地产市场等.那么在这么多金融产品 ...
- 用均值方差法计算边际VaR值和成分VaR值(Python)
tushare ID:432833 边际VaR值和成分VaR值定义 VaR:Value at Risks,在险价值,是指未来一段特定的时间内,在市场正常波动的情况下,某一金融资产或投资组合在给定置信水 ...
- 条件风险价值CVaR
产生背景 \;\;\;\;\;\;CVaR即条件风险价值,是由RockafeUar和Uryasev等于1997年提出的一种较VaR更优的风险计量技术,其含义为在投资组合的损失超 ...
- python计算和差积商_Python计算股票投资组合的风险价值(VaR)
原文链接:http://tecdat.cn/?p=17758tecdat.cn 什么是风险价值(VaR)? 风险价值(VaR)用于尝试量化指定时间范围内公司或投资组合中的财务风险水平.VaR提供了一 ...
最新文章
- [转]PHP用mysql数据库存储session
- 【php数组函数序列】之array_combine() - 数组合并
- 浪潮POWER 9:英特尔的挑战者
- 网络流--最大流--HDU 3549 Flow Problem
- 漫水填充及Photoshop中魔术棒选择工具的实现
- Apache FOP与Eclipse和OSGi的集成
- 12864 OLED屏显示日历
- java es scroll,Elasticsearch Scroll分页检索案例分享
- webpack-dev-server启动后, localhost:8080返回index.html的原理
- STM32固件库编程入门
- 香橙派的使用入门无屏幕安装系统
- 深圳立仪发布纳米级高分辨率光谱共焦位移传感器,精度再破纪录
- SourceInsight4.0的使用
- 国外 广告牌_广告牌下一首流行歌曲的分析和预测,第1部分
- CentOS7安装DockerCentOS7安装DockerCompose
- DML和DDL含义和区别
- word如何关闭批注模式【教程】
- 基于微信小程序的音乐播放器设计
- PHP日期时间函数之strtotime()
- SNMP协议——网络管理概述
热门文章
- 为何非得选择旧金山测试?通用Cruise讲述无人车炼成记
- 嵌入式系统开发笔记78:电话、电报发明给予我们的启示
- 洛谷:P1462 通往奥格瑞玛的道路
- 《构建之法》第一次作业
- 计算机博士英文复试自我介绍,博士复试英文自我介绍范文
- 欣弗(克林霉素磷酸酯葡萄糖注射液)----恐怖的抗生素
- 163.net是什么邮箱?这种个人邮箱你足够了解么?
- STM32F103使用L9110s驱动直流电机(必须简单易懂)
- android无法加载sd卡上的字体,[Android]AnkiDroid 0.6 版暂时不支持(某些)音标字体的显示,附解决办法 | 古意人...
- 中国黑客档案:中国红客联盟(转)