【问题标题】:How can compute rolling window for standard deviation in R?如何计算 R 中标准差的滚动窗口?
【发布时间】:2018-04-21 23:43:14
【问题描述】:

我尝试下载股票价格并计算滚动窗口中的标准差。我找到了库PerformanceAnalytics,但它们只有平均值的滚动窗口而不是标准差。

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)

【问题讨论】:

  • 查看roll_sdroll_sdrRcppRoll

标签: r stock standard-deviation


【解决方案1】:

试试这个:

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

请参阅?rollapply 了解更多信息。

【讨论】:

    【解决方案2】:

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

                              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
    

    【讨论】:

      【解决方案3】:

      这是一个完整的可重现示例。您可以将 runSD 用于此 TTR 包。它与xts 很好地集成在一起。 通常,您将首先计算返回值,然后计算 std。偏离这一点来代表风险。

      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)')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-04
        • 1970-01-01
        • 1970-01-01
        • 2021-11-04
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多