拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计

   2023-03-08 学习力0
核心提示:原文链接: http://tecdat.cn/?p=15929 风险价值VaR和损失期望值ES是常见的风险度量。首先明确:时间范围-我们展望多少天?概率水平-我们怎么看尾部分布?在给定时间范围内的盈亏预测分布,示例如图1所示。  图1:预测的损益分布 给定概率水平的预测的分

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

 

风险价值VaR和损失期望值ES是常见的风险度量。

首先明确:

  1. 时间范围-我们展望多少天?
  2. 概率水平-我们怎么看尾部分布?

在给定时间范围内的盈亏预测分布,示例如图1所示。  

图1:预测的损益分布 

拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计

给定概率水平的预测的分位数。

图2:带有分位数的预测损益分布 

拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计

超出分位数的尾部。

图3:带有分位数和尾部​​标记的预测损益分布 

拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计

方法

 

风险值(VaR)是在所选概率水平下预测分布分位数的负数。因此,图2和3中的VaR约为110万元。

损失期望值(ES)是超出VaR的尾部预期值的负值(图3中的黄金区域)。因此,它总是比相应的VaR大。

别名

损失期望值

损失期望值有很多别名:

  • 条件风险价值(CVaR)
  • 平均短缺
  • 平均超额损失

我发现“处于风险中的条件价值”令人困惑。我可以看到人们认为在一定条件下它是一种风险价值,而不是超出风险价值的预期损失。

平均超额损失似乎是最具描述性的名称。

在上方,我们看到一个带有多个名称的概念。在下面,我们看到一个具有多个概念的名称。

概率等级

当我说5%时,有人说95%。其实我们都是在处理尾部,这意味着(在我的术语中)肯定少于50%。

缩略语

“风险价值”的缩写有可能与其他两个概念混淆:

  • 方差
  • 向量自回归

所有这些都可以避免与大写约定冲突:

  • VaR:风险价值
  • var:方差
  • VAR:向量自回归

估算

初始成分

有两种初始成分:

  • 投资组合中的资产
  • 所涉及资产的价格历史

衍生成分

投资组合加上当前价格得出投资组合权重。

价格历史记录矩阵用于获取退货历史记录矩阵。

给定投资组合的回报历史记录,可以通过多种方式获得预测分布:

  • 拟合假设分布
  • 模拟(使用一段时间内的经验分布)
  • 总体预测
  • 梯度模拟

如果假设正态分布,则可以估计标准偏差以获得预测分布。如果假设t分布,则还需要估计自由度或假设自由度。

通常被称为模拟方法的方法实际上只是使用一些特定数量的投资组合收益的经验分布。

使用单变量garch模型可以很好地估算VaR和ES。

 

R语言

对于VaR和ES ,R语言是非常合适的环境。

填充区域

您可能想知道如何填充图中的区域,如图3所示。窍门是使用该polygon函数。

  1.  
     
  2.  
    plot(xseq, pd, type="l", col="steelblue", lwd=3,
  3.  
    yaxt="n", ylab="",
  4.  
    xlab="Predicted Profit/Loss (millions of dollars)")
  5.  
     
  6.  
    abline(v=qnorm(.05, mean=.5, sd=1), lty=2, lwd=3)
  7.  
     
  8.  
    polygon(c(xseqt, max(xseqt)), c(dnorm(xseqt,
  9.  
    mean=.5, sd=1), 0), col="gold", border=NA)
  10.  
     
  11.  
     
  12.  
    lines(xseq, pd, type="l", col="steelblue", lwd=3)
  13.  
    abline(h=0, col="gray80", lwd=2)

 

拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计

投资组合方差计算

给定方差矩阵和权重向量的R命令来获得投资组合方差:

weight %*% varianceMatrix %*% weight

假设权重向量与方差矩阵完全对齐。 

  1.  
    weight %*% varianceMatrix[names(weight),
  2.  
    names(weight)] %*% weight

风险价值和损失期望值的估计

评估风险价值和损失期望值的简介,以及使用R进行估算 。

 

基本 

风险价值(VaR)和预期短缺(ES)始终与投资组合有关。

您需要两种基本成分:

  • 投资组合 
  • 所涉及资产的价格历史

 

这些可以用来估计市场风险。价格历史记录中可能不包含其他风险,例如信用风险。

多元估计

当我们从资产级别开始时,VaR和ES在投资组合级别上都是一个风险数字。一种方法是估计资产收益的方差矩阵,然后使用投资组合权重将其折叠为投资组合方差。

 

单变量估计

通过投资组合的单个时间序列收益(现在是该投资组合),估算更为简单。

我们可以通过将投资组合中资产的简单收益矩阵乘以投资组合权重的矩阵来获得此信息。 

R1 <- assetSimpRetMatrix %*% portWts

或 :

R1 <- assetSimpRetMatrix[, names(portWts)] %*% portWts

 

R1上面计算的对象持有投资组合的(假设的)简单收益。 

r1 <- log(R1 + 1)

当然,还有其他选择,但是一些常用方法是:

  • 历史的(使用最近一段时间内的经验分布)
  • 正态分布(根据数据估算参数)并使用适当的分位数
  • t分布(通常假设自由度而不是估计自由度)
  • 拟合单变量garch模型并提前进行模拟

 

R分析

以下是示例,其中spxret11包含2011年标准普尔500指数每日对数收益的向量。因此,我们将获得2012年第一天的风险度量(收益)。

  1.  
    > "historical")
  2.  
    [,1]
  3.  
    VaR -0.02515786
  4.  
    > "gaussian")
  5.  
    [,1]
  6.  
    VaR -0.0241509
  7.  
    > "gaussian"
  8.  
    [,1]
  9.  
    VaR -0.03415703
  10.  
    > "historical")
  11.  
    [,1]
  12.  
    ES -0.03610873
  13.  
    > "gaussian")
  14.  
    [,1]
  15.  
    ES -0.03028617

如果第一个参数是矩阵,则每一列都可以视为投资组合中的资产。 

  1.  
    no weights passed in, assuming equal weighted portfolio
  2.  
    $MVaR
  3.  
    [,1]
  4.  
    [1,] 0.02209855
  5.  
     
  6.  
    $contribution
  7.  
    Convertible Arbitrage CTA Global
  8.  
    0.0052630876 -0.0001503125
  9.  
    Distressed Securities Emerging Markets
  10.  
    0.0047567783 0.0109935244
  11.  
    Equity Market Neutral
  12.  
    0.0012354711
  13.  
     
  14.  
    $pct_contrib_MVaR
  15.  
    Convertible Arbitrage CTA Global
  16.  
    0.238164397 -0.006801916
  17.  
    Distressed Securities Emerging Markets
  18.  
    0.215252972 0.497477204
  19.  
    Equity Market Neutral
  20.  
    0.055907342

 

风险价值的历史估计

这是用于风险价值的历史估计的简单函数的定义:

 
  1.  
    VaRhistorical <- function(returnVector, prob=.05,
  2.  
    notional=1, digits=2)
  3.  
    {
  4.  
    if(prob > .5) prob <- 1 - prob
  5.  
    ans <- -quantile(returnVector, prob) * notional
  6.  
    signif(ans, digits=digits)
  7.  
    }

 投资组合,例如:

  1.  
    > VaRhistorical(spxret11, notional=13e6)
  2.  
    5%
  3.  
    330000

损失期望值 :

  1.  
    EShistorical <- function(returnVector, prob=.05,
  2.  
    notional=1, digits=2)
  3.  
    {
  4.  
     

可以这样使用:

  1.  
    > EShistorical(spxret11, notional=13e6)
  2.  
    [1] 470000

因此,风险价值为  330,000,损失期望值为 470,000。

正态分布

稍后会有一个更好的版本(从统计意义上来说),但是这是一种假设正态分布来获得“风险价值”的简单方法:

用法如下:

  1.  
    > VaRnormalEqwt(spxret11, notional=13e6)
  2.  
    [1] 310000
  3.  
    > VaRnormalEqwt(spxret11, notional=13e6,
  4.  
    + expected.return=0)
  5.  
    [1] 310000

在这种情况下,计算损失期望值有点复杂,因为我们需要找到尾部的期望值。

  1.  
    ESnormalEqwt <- function(returnVector, prob=.05,
  2.  
    notional=1, expected.return=mean(returnVector),
  3.  
    digits=2)
  4.  
    {
  5.  
     
  6.  
     
  7.  
     
  8.  
     
  9.  
    ans <- -tailExp * notional
  10.  
    signif(ans, digits=digits)
  11.  
     

这个例子的结果是:

  1.  
    > ESnormalEqwt(spxret11, notional=13e6)
  2.  
    [1] 390000

一个更好的办法是用指数平滑得到的波动性:

  1.  
    VaRnormalExpsmo <- function(returnVector, prob=.05,
  2.  
    notional=1, expected.return=mean(returnVector),
  3.  
    lambda=.97, digits=2)
  4.  
    {
  5.  
     
  6.  
     
  7.  
     
  8.  
    signif(ans, digits=digits)
  9.  
     

其中pp.exponential.smooth取自“指数衰减模型”

  1.  
    > VaRnormalExpsmo(spxret11, notional=13e6)
  2.  
    [1] 340000

t分布

 

  1.  
    VaRtExpsmo <- function(returnVector, prob=.05,
  2.  
    notional=1, lambda=.97, df=7, digits=2)
  3.  
    {
  4.  
    if(prob > .5) prob <- 1 - prob
  5.  
     
  6.  
     
  7.  
     
  8.  
     

结果是:

 
  1.  
    > VaRtExpsmo(spxret11, notional=13e6)
  2.  
    2011-12-30
  3.  
    340000

 

拓端tecdat|R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计

参考文献

1.R语言基于ARMA-GARCH-VaR模型拟合和预测实证研究

2.R语言时变参数VAR随机模型

3.R语言时变参数VAR随机模型

4.R语言基于ARMA-GARCH过程的VAR拟合和预测

5.GARCH(1,1),MA以及历史模拟法的VaR比较

6.R语言时变参数VAR随机模型

7.R语言实现向量自动回归VAR模型

8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

9.R语言VAR模型的不同类型的脉冲响应分析

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 拓端tecdat|R语言VAR模型的不同类型的脉冲响应
    原文链接:http://tecdat.cn/?p=9384目录模型与数据估算值预测误差脉冲响应识别问题正交脉冲响应结构脉冲反应广义脉冲响应参考文献脉冲响应分析是采用向量自回归模型的计量经济学分析中的重要一步。它们的主要目的是描述模型变量对一个或多个变量的冲击的演化
    03-16
  • Visual Studio 编辑R语言环境搭建
    Visual Studio 编辑R语言环境搭建关于Visual Studio 编辑R语言环境搭建具体的可以看下面三个网址里的内容,我这里就讲两个问题,关于r包管理和换本地的r的服务。1.r包管理:Ctrl+72.R本地服务管理:Ctrl+9Visual Studio R官方帮助文档(中文): https://docs
    03-16
  • 拓端tecdat|R语言代写实现向量自回归VAR模型
    原文链接:http://tecdat.cn/?p=8478 澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。澳大利亚政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节支出。因此,零售商报告销售强劲,经济受到刺激。因此,收入增加了。VAR面临的批
    03-16
  • [译]用R语言做挖掘数据《五》 r语言数据挖掘简
    一、实验说明1. 环境登录无需密码自动登录,系统用户名shiyanlou,密码shiyanlou2. 环境介绍本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序:1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令2. GVim:非常好
    03-08
  • 拓端tecdat|Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load(file, DLLpath = DLLpath, ..
    拓端tecdat|Mac系统R语言升级后无法加载包报错
    问题重现:我需要安装R软件包stochvol,该软件包 仅适用于3.6.0版的R。因此,我安装了R(3.6.0 版本),并使用打开它 RStudio。但是现在  ,即使我成功 使用来 安装软件包,也无法加载任何库 。具体来说,我需要加载的库是stochvol  ,Rcpp和 caret
    03-08
  • 拓端数据tecdat|R语言k-means聚类、层次聚类、主成分(PCA)降维及可视化分析鸢尾花iris数据集
    拓端数据tecdat|R语言k-means聚类、层次聚类、
    原文链接:http://tecdat.cn/?p=22838 原文出处:拓端数据部落公众号问题:使用R中的鸢尾花数据集(a)部分:k-means聚类使用k-means聚类法将数据集聚成2组。 画一个图来显示聚类的情况使用k-means聚类法将数据集聚成3组。画一个图来显示聚类的情况(b)部分:
    03-08
  • 《R语言数据挖掘》读书笔记:七、离群点(异常值)检测
    《R语言数据挖掘》读书笔记:七、离群点(异常值
    第七章、异常值检测(离群点挖掘)概述:        一般来说,异常值出现有各种原因,比如数据集因为数据来自不同的类、数据测量系统误差而收到损害。根据异常值的检测,异常值与原始数据集中的常规数据显著不同。开发了多种解决方案来检测他们,其中包括
    03-08
  • 拓端数据tecdat|R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
    拓端数据tecdat|R语言中实现广义相加模型GAM和
    原文链接:http://tecdat.cn/?p=20882  1导言这篇文章探讨了为什么使用广义相加模型 是一个不错的选择。为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择。 2回归模型假设我们有一些带有两个属性Y和X的数据。如果它们是线性
    03-08
  • 拓端数据tecdat|R语言时间序列平稳性几种单位根检验(ADF,KPSS,PP)及比较分析
    拓端数据tecdat|R语言时间序列平稳性几种单位根
    原文链接:http://tecdat.cn/?p=21757 时间序列模型根据研究对象是否随机分为确定性模型和随机性模型两大类。随机时间序列模型即是指仅用它的过去值及随机扰动项所建立起来的模型,建立具体的模型,需解决如下三个问题模型的具体形式、时序变量的滞后期以及随
    03-08
  • 拓端tecdat|R语言代写基于copula的贝叶斯分层混合模型的诊断准确性研究
    拓端tecdat|R语言代写基于copula的贝叶斯分层混
    原文链接:http://tecdat.cn/?p=3060 在对诊断测试准确性的系统评价中,统计分析部分旨在估计测试的平均(跨研究)敏感性和特异性及其变异性以及其他测量。灵敏度和特异性之间往往存在负相关,这表明需要相关数据模型。由于用户,分析在统计上具有挑战性处理
    03-08
点击排行