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

alexios ghalanos alexios at 4dscape.com
Fri Apr 25 14:15:04 CEST 2014


I suggest you take a break and consider that in order to help you, it is
required that you state ALL the assumptions and provide a complete
example. Since the book is not generally available, and you have told us
very little about the problem and its assumptions (other than a page and
example number), then you shouldn't expect much help.

Alexios

PS How did you come up with the numbers for mu_stress, variance_quiet
and variance_stress? From what I am told, the book example provides the
annualized values and you are required to calculate the 10-day VaR (so
you are required to rescale the numbers to their 10-day equivalents).

On 25/04/2014 11:23, Johannes Moser wrote:
> 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.
>>>
>



More information about the R-SIG-Finance mailing list