n_vars <- 10
n_obs <- 1000
data <- matrix(rnorm(n_obs * n_vars), nrow = n_obs, ncol = n_vars)
# 252-day rolling standard deviation
result <- roll_sd(data, 252)
# Equivalent to 'na.rm = TRUE'
result <- roll_sd(data, 252, min_obs = 1)
# Expanding window
result <- roll_sd(data, n_obs, min_obs = 1)
# Exponential decay
weights <- 0.9 ^ (251:0)
result <- roll_sd(data, 252, weights, min_obs = 1)
Run the code above in your browser using DataLab