调整后的已实现波动率

时间:2015-02-26 00:51:54

标签: r volatility

假设这些是返回(1000行):

1-a
2-b
3-c

我想计算调整后的波动率:下降第一次回报计算已实现的波动率,然后下降第二次并计算已实现的波动率等等。如果您有 n 回报,则将 n < / em>实现了波动性。

Volatility1 = b*b+c*c
Volatility2 = a*a+c*c
Volatility3 = a*a+b*b

我可以使用 for 循环来处理它,但还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

您可以通过sum(x*x)-x*x

有效地计算它
#dummy data
x <- rnorm(1000)
#vectorized
f1 <- function(x) sum(x*x)-x*x
#for loop 
f2 <- function(x){
    n <- length(x)
    rv <- rep(NA, n)
    s <- x*x
    for(i in 1:n)
    {rv[i]=sum(s[-i])}
    rv
}
rbenchmark::benchmark(f1(x), f2(x))[1:3]
   test replications elapsed
1 f1(x)          100    0.0
2 f2(x)          100    3.1

答案 1 :(得分:0)

有意义吗?也许功能是错误的,但结构似乎有效。

是波动率标准差吗?

            x <- rnorm(1000, sd=2)
            vol <- sapply(2:length(x), function(i) {
                sd(x[0:i])
            })