[R-SIG-Finance] student t mixture VaR in R // imitate example 2.23 in C.Alexander: Market Risk IV

Johannes Moser jzmoser at gmail.com
Fri Apr 25 12:23:14 CEST 2014


Thanks a lot, Alexios!
I have corrected this issue. The result is the same, though.

I forgot to mention that the RUGARCH-package is required to run the code.

At the moment I try to find the error in either
- my own theoretical thoughts (e.g. confusing the scale parameter with 
the standard deviation)
- the implementation made by C.Alexander (on page 117 she writes in a 
footnote: "In general, if X has distribution F(x) and Y=aX, a being a 
constant, then y has distribution function a^(−1) * F(x)". Either I am 
completely burnout right now, or this must be "F(a^(−1)*x)" in the end. 
So maybe this is not just a typo, but also incorrectly implemented in 
the quite complicated EXCEL formula.)
- some EXCEL or R issue. I think her EXCEL syntax has been programmed in 
version 2003, but I`m running 2010.

Any help is appreciated a lot!



Am 25.04.2014 11:46, schrieb Alexios Ghalanos:
> A quick look at your code suggests that you should use "std" (student) not "sstd" (skew student) for distribution.
>
> Alexios
>
>> On 25 Apr 2014, at 09:49, Johannes Moser <jzmoser at gmail.com> wrote:
>>
>> Dear R community,
>>
>> in trying to set up a little simulation study I adapt the ideas found in
>> "Carol Alexander: Market Risk IV - Value at Risk Models" on page 111 ff.
>> and implement them in R.
>> This project is about student t mixture distributions and Value at Risk
>> / Expected Shortfall.
>>
>> The following code is my setup so far, and the syntax is calibrated to
>> resemble the Example 2.23 on page 118 in the mentioned book of
>> Alexander. There is a  EXCEL-file coming with the book and I noticed
>> that my results don`t match the results of the EXCEL implementation.
>>
>> e.g. my result for theta=0.001 is
>>
>> 0.0841052 (method 1) and
>>
>> 0.0842109 (method 2)
>> ... but the EXCEL-file coming with the book says that it was 0.1152
>>
>>
>> setting theta=0.01 gives
>>
>> 0.04493586 (method 1) and
>>
>> 0.04490717 (method 2)
>>
>> ... but the EXCEL-file coming with the book says that it was 0.0616
>>
>>
>> Maybe some of you guys have this book at hand and are able to verify and
>> hopefully find a solution for my worries.
>> Or even if you don`t have the book you might still be able to assess the
>> correctness of my approach and implementation?
>>
>>
>>
>>
>> ##################################################################################################
>> # SET UP MIXTURE INGREDIENTS (calibrate to C.Alexander Market Risk
>> Analysis IV Exercise 2.23)
>>
>> p_quiet <- 0.75
>> mu_quiet <- 0.0
>> mu_stress <- -0.0004
>> df_quiet <- 10
>> df_stress <- 5
>> variance_quiet <- 0.0126^2
>> variance_stress <- 0.0253^2
>> theta <- 0.001
>>
>>
>> # METHOD_1)   Backing out mixture VaR from implicit analytic formula:
>> find_quant <- function(quant) {
>>       (p_quiet*pdist(distribution = "sstd",
>> (quant-mu_quiet)/sqrt(variance_quiet)  , mu = 0, sigma = 1, shape =
>> df_quiet)
>>       + (1-p_quiet)*pdist(distribution = "sstd",
>> (quant-mu_stress)/sqrt(variance_stress)  , mu = 0, sigma = 1, shape =
>> df_stress) - theta)
>> }
>> bestquant <- uniroot(f = find_quant, interval = c(-5, 1))
>> t_mix_VaR1 <- -bestquant$root
>>
>>
>> # METHOD_2)   Estimating mixture VaR by simulation:
>> nsim <- 10000000
>> u_mix <- x <- 1*(runif(nsim) < p_quiet)
>> t_quiet <- rdist(distribution = "sstd", nsim  , mu = mu_quiet, sigma =
>> sqrt(variance_quiet), shape = df_quiet)
>> t_stress <- rdist(distribution = "sstd", nsim  , mu = mu_stress, sigma =
>> sqrt(variance_stress), shape = df_stress)
>> t_mixture <- u_mix*t_quiet + (1-u_mix)*t_stress
>> t_mix_VaR2 <- as.numeric(-quantile( t_mixture , probs=theta  ))
>>
>> # Compare results
>> t_mix_VaR1
>> t_mix_VaR2
>> ##################################################################################################
>>
>>
>>
>>
>> The EXCEL spreadsheet "EX_IV.2.23" in the workbook "Examples_IV.2.xls"
>> has been used and modified as follows:
>> 1) change the risk horizon to 1 day (so that there would be no scaling
>> and the autocorrelation doesn`t matter)
>> 2) if necessary change the significance level (1% or 0,1% in my example)
>> 3) press F11 to recalcualte the mixture parameters over the risk horizon
>> 4) apply EXCEL SOLVER to line C24 while allowing for changing cell C25
>> to get the t Mixture VaR
>>
>> Thanks a lot for any ideas or suggestions!
>> Johannes
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>     [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-SIG-Finance at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
>> -- Subscriber-posting only. If you want to post, subscribe first.
>> -- Also note that this is not the r-help list where general R questions should go.
>>

-- 
_________________________
Johannes Moser
Sophie-Charlotten-Str. 35
14059 Berlin
Tel: 0176 2171 2196



More information about the R-SIG-Finance mailing list