【问题标题】:Calculating Value at Risk with performanceanalytics package使用性能分析包计算风险价值
【发布时间】:2017-11-13 18:55:07
【问题描述】:

我尝试计算 auf Stock Returns 列表的风险价值。有 1000 个观察值,但我想计算如下:

VaR for observation:

1 to 500
2 to 501
3 to 502
4 to 503 
and 500 to 999

如您所见,结果将是 500 次计算。

为了解决这个问题,我尝试使用带有for 循环的if 条件。

像这样:

if(x < 501 & y < 1000){for(i in KO.Returns){VaR(KO.Returns[x: y], p = 0.95, method = "historical")}}

如果我使用上述代码,我会收到以下错误代码:

VaR 计算对列产生不可靠的结果(反向风险) 1:

【问题讨论】:

    标签: r performanceanalytics risk-analysis


    【解决方案1】:

    我认为问题出在您的数据中。当您指定窗口时,历史 VaR 的计算会对数据进行排序并挑选出第 95 个百分位。有时您的数据在该百分位数中不会有负值,因此历史 VaR 是没有意义的(您的损失不能是正值,损失总是负的)。因此出现错误。

    我一直在尝试使用以下代码重现类似的错误:

    library(PerformanceAnalytics)
    
    data("edhec")
    data = edhec[, 5]
    
    valat = rollapply(data = data, width = 20,
                      FUN = function(x) VaR(x, p = 0.95, method = "historical"),
                      by.column = TRUE)
    valat 
    

    但是当我将置信度更改为p = 0.99 时,我不再收到错误消息。所以,也许你可以试着改变你的信心水平看看。

    另见thisthis

    【讨论】:

    • 感谢您的帮助。我尝试了不同的置信水平和方法。但它仍然不起作用。我还检查了我的数据在每个窗口中是否缺少负值。也没有用。
    猜你喜欢
    • 2016-10-03
    • 2013-11-09
    • 2015-09-01
    • 2020-11-28
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多