调整后的实际波动率
Adjusted Realized Volatility
假设这些是 return(1000 行):
1-a
2-b
3-c
我想计算调整后的波动率:先下降 return 计算已实现的波动率,然后下降第二个并计算已实现的波动率等等,如果你有 n returns 您将有 n 个已实现波动率。
Volatility1 = b*b+c*c
Volatility2 = a*a+c*c
Volatility3 = a*a+b*b
我可以用 for 循环处理它,但是还有其他方法吗?
有意义吗?可能功能不对,但结构好像还可以。
波动率是标准差吗?
x <- rnorm(1000, sd=2)
vol <- sapply(2:length(x), function(i) {
sd(x[0:i])
})
你可以通过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
假设这些是 return(1000 行):
1-a
2-b
3-c
我想计算调整后的波动率:先下降 return 计算已实现的波动率,然后下降第二个并计算已实现的波动率等等,如果你有 n returns 您将有 n 个已实现波动率。
Volatility1 = b*b+c*c
Volatility2 = a*a+c*c
Volatility3 = a*a+b*b
我可以用 for 循环处理它,但是还有其他方法吗?
有意义吗?可能功能不对,但结构好像还可以。
波动率是标准差吗?
x <- rnorm(1000, sd=2)
vol <- sapply(2:length(x), function(i) {
sd(x[0:i])
})
你可以通过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