原文链接:http://tecdat.cn/?p=22788

Python计算获得多资产投资组合的风险度量。

关键概念

  1. 随着价格的变动,投资经理所持有的市场价值也会发生变化。后者就是所谓的市场风险,衡量它的最流行的方法之一是定义为风险价值。风险本身被看作是实际收益和期望收益之间的差异,两者可能不同。如果它们相等,投资被认为是无风险的。同时,它不能有违约风险,也不能有再投资风险。请注意,期望收益不是投资者认为他们将获得的收益,而是反映了所有经济情况下所有可能结果的平均值。

  2. 风险价值(VaR)告诉你在一个给定的时间段内,在预先确定的置信水平下,你能损失多少钱。典型的置信度是95%和99%,意味着分析师有95%或99%的信心,损失不会超过这个数字,即5%(或1%)的VaR反映了5%(或1%)最坏情况下的未来最佳收益率。风险值是一个最先进的衡量标准,因为它可以为所有类型的资产进行计算,并考虑到多样化的因素。然而,风险值并不是一个最大的损失数字,所以分析师可能会遇到大于风险值的损失。

  3. 关于历史序列的假设:

  • 过去的收益率是未来收益率的预测指标,但不能保证历史记录会显示未来最坏和最好的情况,但我们用几何平均法将价格转化为收益,所以我们对所有不同的周/月/...收益给予同等的权重,来获得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相关推荐

  1. 算法组合 优化算法_算法交易简化了风险价值和投资组合优化

    算法组合 优化算法 Photo by Markus Spiske (left) and Jamie Street (right) on Unsplash Markus Spiske (左)和Jamie ...

  2. Python蒙特卡罗(Monte Carlo)模拟计算投资组合的风险价值(VaR)

    最近我们被客户要求撰写关于风险价值(VaR)的研究报告,包括一些图形和统计输出. 如何使用Python通过蒙特卡洛模拟自动计算风险值(VaR)来管理投资组合或股票的金融风险. 金融和投资组合风险管理中 ...

  3. 风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计

    原文链接: http://tecdat.cn/?p=15929 风险价值VaR和损失期望值ES是常见的风险度量. 首先明确: 时间范围-我们展望多少天? 概率水平-我们怎么看尾部分布? 在给定时间范围 ...

  4. python分位数回归模型_如何理解分位数回归风险价值 (VaR) 模型?

    风险价值(下称VaR)的计算方法主要有历史模拟法(非参数法).分析方法.蒙特-卡罗模拟法三类.不同的计算方法.计算参数下所得的VaR都是不同的.若某机构宣称其产品的VaR较低即投资风险较低,投资者还需 ...

  5. ES期望损失:Stata及Python实现

    原文链接: https://www.lianxh.cn/news/5e74f7966cf51.html 目录 1. ES (期望损失) 简介 1.1 引言 1.2 起源与发展 1.3 VaR 的缺陷 ...

  6. Python量化:评估投资组合的收益率和风险

    不要把所有的鸡蛋放在同一个篮子里,这是投资界中历久弥新的至理名言. 为了避免风险,投资人往往会将资产分散到不同的金融工具中,比如信托.债券.基金.股票.期货.期权甚至房地产市场等.那么在这么多金融产品 ...

  7. 用均值方差法计算边际VaR值和成分VaR值(Python)

    tushare ID:432833 边际VaR值和成分VaR值定义 VaR:Value at Risks,在险价值,是指未来一段特定的时间内,在市场正常波动的情况下,某一金融资产或投资组合在给定置信水 ...

  8. 条件风险价值CVaR

    产生背景             \;\;\;\;\;\;CVaR即条件风险价值,是由RockafeUar和Uryasev等于1997年提出的一种较VaR更优的风险计量技术,其含义为在投资组合的损失超 ...

  9. python计算和差积商_Python计算股票投资组合的风险价值(VaR)

    原文链接:http://tecdat.cn/?p=17758​tecdat.cn 什么是风险价值(VaR)? 风险价值(VaR)用于尝试量化指定时间范围内公司或投资组合中的财务风险水平.VaR提供了一 ...

最新文章

  1. [转]PHP用mysql数据库存储session
  2. 【php数组函数序列】之array_combine() - 数组合并
  3. 浪潮POWER 9:英特尔的挑战者
  4. 网络流--最大流--HDU 3549 Flow Problem
  5. 漫水填充及Photoshop中魔术棒选择工具的实现
  6. Apache FOP与Eclipse和OSGi的集成
  7. 12864 OLED屏显示日历
  8. java es scroll,Elasticsearch Scroll分页检索案例分享
  9. webpack-dev-server启动后, localhost:8080返回index.html的原理
  10. STM32固件库编程入门
  11. 香橙派的使用入门无屏幕安装系统
  12. 深圳立仪发布纳米级高分辨率光谱共焦位移传感器,精度再破纪录
  13. SourceInsight4.0的使用
  14. 国外 广告牌_广告牌下一首流行歌曲的分析和预测,第1部分
  15. CentOS7安装DockerCentOS7安装DockerCompose
  16. DML和DDL含义和区别
  17. word如何关闭批注模式【教程】
  18. 基于微信小程序的音乐播放器设计
  19. PHP日期时间函数之strtotime()
  20. SNMP协议——网络管理概述

热门文章

  1. 为何非得选择旧金山测试?通用Cruise讲述无人车炼成记
  2. 嵌入式系统开发笔记78:电话、电报发明给予我们的启示
  3. 洛谷:P1462 通往奥格瑞玛的道路
  4. 《构建之法》第一次作业
  5. 计算机博士英文复试自我介绍,博士复试英文自我介绍范文
  6. 欣弗(克林霉素磷酸酯葡萄糖注射液)----恐怖的抗生素
  7. 163.net是什么邮箱?这种个人邮箱你足够了解么?
  8. STM32F103使用L9110s驱动直流电机(必须简单易懂)
  9. android无法加载sd卡上的字体,[Android]AnkiDroid 0.6 版暂时不支持(某些)音标字体的显示,附解决办法 | 古意人...
  10. 中国黑客档案:中国红客联盟(转)