【问题标题】:How to use package TTR’s SMA function with weights?如何使用包 TTR 的 SMA 函数和权重?
【发布时间】:2018-08-05 00:03:48
【问题描述】:

我不明白 TTR SMA 函数如何处理权重。首先,wts和w有什么区别?然后,有一个我没想到的结果。

我想在 SMA 计算的每个位置使用一组线性权重,以便正在计算的当前值具有最高的权重,而第 n 个最远的值具有最低的权重。这是一个应该返回权重的示例,如果它们按照我假设的方式工作(我的示例提供了线性滤波器的脉冲函数):

t <- replicate(0, n = 12)
t[5] <- 1
weights <- c(0.25, 0.5, 0.75, 1.0)
SMA(t, n = 4, wts = weights)

但这给出了: NA NA NA 0.00 0.25 0.25 0.25 0.25 0.00 0.00 0.00 0.00

如果您使用一组 c(1,1,1,1) 的权重,得到的结果是相同的。我希望看到项目 5-8 为 1.0、0.75、0.5、0.25。我在互联网上找不到任何关于 SMA 如何计算加权 SMA 函数的解释。

【问题讨论】:

    标签: r smoothing weighted-average


    【解决方案1】:

    TTR 的 SMA 不使用权重(w 或 wts)。您可以将 w 或 wts 添加到 SMA 函数中,但正如您在以下检查中看到的那样,它不会被使用。

    identical(SMA(t, n = 4), SMA(t, n = 4, wts = weights))
    [1] TRUE
    

    wts 用于与WMA 一起使用。而w 旨在与VMA 一起使用。

    我同意文档在这一点上应该更清楚一点。 来自investopedia 的This pageWMA 的描述更加清晰。

    VMA 更像是一种自适应移动平均线,它为 EMA 公式添加了一种权重,如下所示。

    # parts from c code from TTR package
    d_ratio =  2/(n+1)
    EMA[i] = d_x[i] * d_ratio + d_result[i-1] * (1-d_ratio);
    VMA[i] = d_x[i] * d_w[i] * d_ratio + d_result[i-1] * (1-d_ratio*d_w[i]);
    

    看你对你想要什么的描述,你应该使用WMA函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多