拓端tecdat|R語言風險價值VaR(Value at Risk)和損失期望值ES(Expected shortfall)的估計


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

 

風險價值VaR和損失期望值ES是常見的風險度量。

首先明確:

  1. 時間范圍-我們展望多少天?
  2. 概率水平-我們怎么看尾部分布?

在給定時間范圍內的盈虧預測分布,示例如圖1所示。  

圖1:預測的損益分布 

給定概率水平的預測的分位數。

圖2:帶有分位數的預測損益分布 

超出分位數的尾部。

圖3:帶有分位數和尾部​​標記的預測損益分布 

方法

 

風險值(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)

 

投資組合方差計算

給定方差矩陣和權重向量的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

 

參考文獻

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模型的不同類型的脈沖響應分析


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM