【问题标题】:Adjusted Realized Volatility调整后的已实现波动率
【发布时间】:2015-02-26 00:51:54
【问题描述】:

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

1-a
2-b
3-c

我想计算调整后的波动率:删除第一个收益计算已实现波动率,然后删除第二个收益并计算已实现波动率等。如果您有 n 个收益,您将有 n 实现波动。

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

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

【问题讨论】:

  • Volatility3 = a*a+b*b,不是吗?
  • @Khashaa:是的,已编辑

标签: r volatility


【解决方案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

【讨论】:

  • 创意解决方案,但您使用循环。
  • f1 不使用任何循环。我将f2 包括在内只是为了比较。
【解决方案2】:

这有意义吗?可能是函数错了,但结构似乎有效。

波动率是标准差吗?

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

【讨论】:

  • 波动率不是标准差
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多