Estimation of rolling Value at Risk (VaR) using R

后端 未结 2 966
耶瑟儿~
耶瑟儿~ 2021-01-12 15:44

I need to perform rolling VaR estimation of daily stock returns. At first I did the following:

library(PerformanceAnalytics)
data(edhec)
sample<-edhec[,1:         


        
相关标签:
2条回答
  • 2021-01-12 16:05

    The problem is that sometimes there is no variation in your data for the 60-period window.

    R> no_var <- rollapply(sample2.xts, 60, sd, by.column=TRUE)
    R> any(no_var==0)
    [1] TRUE
    R> head(no_var[-(1:60),])
                      001034        001038 001055        001066 001109
    1984-03-26 -0.0003322471 -0.0001498238      0 -0.0111818465      0
    1984-03-27 -0.0003322471 -0.0001498238      0  0.0002076288      0
    1984-03-28 -0.0003322471 -0.0545102488      0  0.0092900768      0
    1984-03-29 -0.0199407074 -0.0565552432      0 -0.0183491390      0
    1984-03-30  0.0192762133 -0.0023488011      0  0.0000000000      0
    1984-04-02 -0.0003322471  0.0000000000      0  0.0560894683      0
    

    I've committed a patch to PerformanceAnalytics on R-Forge (r3525) to allow the NaN to pass through the reaonableness check.

    0 讨论(0)
  • 2021-01-12 16:11

    1) We can reproduce the warning using only VaR as follows:

    > VaR(R = edhec[seq(25, length=60), 5], p = .95, method = "modified", invert = TRUE)
    VaR calculation produces unreliable result (inverse risk) for column: 1 : -0.000203691774704274
        Equity Market Neutral
    VaR                    NA
    

    Try using a different method=.

    > VaR(R = edhec[seq(25, length=60), 5], p = .95, method = "gaussian", invert = TRUE)
        Equity Market Neutral
    VaR          -0.001499347
    

    2) With "gaussian" I still got warnings on the real data set but no errors. Try experimenting with the other "method" argument values that are available as well. See ?VaR .

    3) Note that by.column = TRUE can be omitted as it is the default.

    0 讨论(0)
提交回复
热议问题