Rolling Analysis

Share:

Description

A collection and description of functions to perform a rolling analysis. A rolling analysis is often required in building trading models.

The functions are:

rollFun Rolling or moving sample statistics,
rollVar Rolling or moving sample variance.

Usage

1
2
3
4
5
rollFun(x, n, trim = TRUE, na.rm = FALSE, FUN, ...)



rollVar(x, n = 9, trim = TRUE, unbiased = TRUE, na.rm = FALSE)

Arguments

FUN

the rolling function, arguments to this function can be passed through the ... argument.

n

an integer specifying the number of periods or terms to use in each rolling/moving sample.

na.rm

a logical flag: if TRUE, missing values in x will be removed before computation. The default is FALSE.

trim

a logical flag: if TRUE, the first n-1 missing values in the returned object will be removed; if FALSE, they will be saved in the returned object. The default is TRUE.

unbiased

a logical flag. If TRUE, the unbiased sample variance will be returned. The default is TRUE.

x

an univariate timeSeries object or a numeric vector.

...

additional arguments to be passed.

Value

The functions return a timeSeries object or a numeric vector, depending on the argument x.

rollMax returns the rolling sample maximum,
rollMin returns the rolling sample minimum,
rollMean returns the rolling sample mean, and
rollVar returns the biased/unbiased rolling sample variance.

Note, that the function rollFun always returns a numeric vector, independent of the argument x.

If you like to operate for x with rectangular objects, you have to call the functions columnwise within a loop.

Author(s)

Diethelm Wuertz for the Rmetrics R-port.

See Also

var.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
## Rolling Analysis:
   x = (1:10)^2
   x
   trim =  c(TRUE, TRUE, FALSE, FALSE)
   na.rm = c(TRUE, FALSE, TRUE, FALSE)
   for (i in 1:4)
     rollFun(x, 5, trim[i], na.rm[i], FUN = min)
   for (i in 1:4)
     rollFun(x, 5, trim[i], na.rm[i], FUN = max)
   for (i in 1:4)
     rollVar(x, 5, trim[i], unbiased = TRUE, na.rm[i])
   for (i in 1:4)
     rollVar(x, 5, trim[i], unbiased = FALSE, na.rm[i])