MA function

Simple Moving Average

Simple Moving Average

The function computes a moving average of a vector.

MA(y, order, pad = NULL)

Arguments

  • y: a numeric vector
  • order: An integer. The order of the moving average. The function is defined such that order one returns y (see Examples).
  • pad: Defaults to NULL. If not NULL, all elements of the returned moving average with position smaller than order are replaced by the value of pad. Sensible values may be NA or 0.

Returns

Returns a vector of length length(y).

References

Gilli, M., Maringer, D. and Schumann, E. (2019) Numerical Methods and Optimization in Finance. 2nd edition. Elsevier. tools:::Rd_expr_doi("10.1016/C2017-0-01621-X")

Schumann, E. (2023) Financial Optimisation with R (NMOF Manual). https://enricoschumann.net/NMOF.htm#NMOFmanual

Author(s)

Enrico Schumann

Examples

MA(1:10, 3) MA(1:10, 3, pad = NA) y <- seq(1, 4, by = 0.3) z <- MA(y, 1) all(y == z) ### (typically) FALSE all.equal(y, z) ### should be TRUE ## 'Relative strength index' rsi <- function(y, t) { y <- diff(y) ups <- y + abs(y) downs <- y - abs(y) RS <- -MA(ups, t) / MA(downs, t) RS/(1 + RS) } x <- cumprod(c(100, 1 + rnorm(100, sd = 0.01))) par(mfrow = c(2,1)) plot(x, type = "l") plot(rsi(x, 14), ylim = c(0,1), type = "l")