如何计算 R 中标准偏差的滚动 window?

How can compute rolling window for standard deviation in R?

我尝试下载股票价格并滚动计算标准差 window。我找到了图书馆 PerformanceAnalytics 但他们只有滚动 window 表示均值而不是标准差。

library("tseries")
library("zoo")
library("forecast")
library("FinTS")
library("rugarch")


AAL.data = get.hist.quote(instrument="AAL", start="2014-01-01",  end="2018-01-01", quote="AdjClose", provider="yahoo", compression="d", retclass="zoo")
plot(AAL.data, main = "AAL closing price", ylab = "Price (USD)", xlab = "Date")

#install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
chart.RollingMean(XOM.sr, width = 60, xaxis = TRUE, ylim = NULL)

试试这个:

library(zoo)
rollapplyr(1:10, 3, sd, fill = NA)
## [1] NA NA  1  1  1  1  1  1  1  1

有关详细信息,请参阅 ?rollapply

对于现在正在寻找这个的人,请使用 roll 包 (rdrr.io link) 的 roll_sd

                          expr        min         lq        mean   median        uq        max neval
 rollapply(STK, width = 5, sd) 34703.2817 37535.3761 40422.77272 38005.02 38357.489 53512.7018     5
               roll_sd(STK, 5)    18.9334    18.9973    23.90904    19.14    30.608    31.8665     5

这是一个完整的可重现示例。对于 TTR 包,您可以使用 runSD。它与 xts 集成得很好。 通常你会先计算 returns 然后是标准。偏差表示风险。

library(quantmod)
library(TTR)

AAPL = getSymbols("AAPL", auto.assign = FALSE)

returns = ROC(Ad(AAPL), n=1)[-1]

plot(runSD(returns, n=30), main='Rolling Std. Deviation (30 days)')