如何将TTR包装的SMA功能与砝码配合使用?

时间:2018-08-03 18:52:59

标签: r smoothing weighted-average

我不了解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)

但这给出了:     不适用不适用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。我无法在Internet上找到有关SMA如何计算加权SMA函数的任何解释。

1 个答案:

答案 0 :(得分:0)

TTR的SMA不使用权重(w或wts)。您可以将w或wts添加到SMA函数中,但是将不能使用,如下面的检查所示。

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

wts用于WMA。并且wVMA一起使用。

我同意在这一点上文档应该更加清晰。 来自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函数