r-如何使用包装TTR的SMA功能与重量



我不明白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

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

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

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

CCD_ 3用于与CCD_ 4一起使用。并且CCD_ 5是指与CCD_ 6一起使用。

我确实同意文件在这一点上应该更清楚一点。investopedia的这一页对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功能

最新更新