我不明白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 0.00 0.25 0.25 0.25 0.00 0.00 0.00
这与使用c(1,1,1,1)的一组权重时得到的结果相同。我希望看到第5-8项是1.0,0.75,0.5,0.25。我在互联网上找不到任何关于SMA是如何计算加权SMA函数的解释。
发布于 2018-08-05 00:03:49
TTR的SMA不使用权重(w或w)。您可以将w或wts添加到SMA函数,但不会使用它,正如您在下面的检查中所看到的那样。
identical(SMA(t, n = 4), SMA(t, n = 4, wts = weights))
[1] TRUEwts旨在与WMA一起使用。而w是用来和VMA一起使用的。
我确实同意文档在这一点上应该更清楚一些。来自投资百科的This page对WMA的描述更加清晰。
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函数
https://stackoverflow.com/questions/51678556
复制相似问题