Rollapply 回测风险价值

Rollapply for backtesting the value at risk

我想回测时间序列向量风险的经验(无条件)值:


x = rnorm(1000)
xt = diff(x)
quantile(xt,0.01)

所以我认为 R 中的 rollapply 函数可能会有帮助,因为我想滚动估计从时间 t 到结束时间 T 的分位数 a,通过一次观察滚动 window 100。

如果我编写以下代码:

a = rollapply(xt,width=100,quantile(xt,probs=c(0.01)))

我收到一个错误:

Error in match.fun(FUN) : 
  'quantile(xt, probs = c(0.01))' is not a function, character or symbol

我做错了什么?

另外:如何在一个图中绘制两个系列(历史估计和回测结果)?

将 x 转换为动物园系列 z,然后使用 diff、rollapply 和 plot,如图所示。 cbind.zoo 将对齐系列。请注意,rollapply 使用居中 windows。如果您想要右对齐 windows,请改用末尾带有 r 的 rollapplyr。如果你想在单个面板中添加 screen = 1 参数到 plot.

library(zoo)

set.seed(123)

x <- rnorm(1000)
z <- zoo(x)
zt <- diff(z)
a <- rollapply(zt, 100, quantile, probs = 0.01)
plot(cbind(z, zt, a))