backtest {backtest}R Documentation

Creating an Object of Class Backtest

Description

Conducts a backtest and returns the results as an object of class backtest.

Usage

backtest(x, in.var, ret.var, by.var = NULL, date.var = NULL,
 id.var = NULL, buckets = 5, universe = NULL, natural = FALSE)

Arguments

x a data frame containing the data to be analysed in the backtest. The details of what this data frame must contain are given below.
in.var a character vector which indicates the name of the column or columns in 'x' to be used as input variables.
ret.var a character vector which indicates the name of the column or columns in 'x' to be used as return variables.
by.var an optional character value, specifying a second variable in 'x' to be used for categorising the data. The details of how categories are created are given below.
id.var an optional character value which indicates the name of the column in 'x' containing a unique identifier for each observation. 'id.var' must be specified if 'natural' equals TRUE.
date.var an optional character vector which indicates the name of the column in 'x' containing values of class 'Date' for the observations. 'date.var' must be specified if 'natural' equals TRUE.
buckets an optional numeric vector which specifies how many quantiles to create according to 'in.var' and 'by.var'.
universe An optional expression for selecting a subset of 'x'. The details of how this expression may be constructed are given below.
natural An optional logical value. If 'TRUE', the 'summary()' method returns additional information and the backtest object may be plotted. The details of how a natural backtest differs from a pooled backtest are given below.

Details

Data frames for 'backtest' must, at a minimum, contain a column of class numeric to be referenced by the 'in.var' and 'ret.var' arguments.

The 'in.var' is the primary variable by which the backtest categorises observations. It must reference a numeric column in 'x'. Using the values in 'x', 'backtest' breaks the values into equal sized quantiles, or 'buckets'.

The 'by.var' is the secondary variable by which the backtest categorises observations. When specifying both 'in.var' and 'by.var', 'backtest' organises the observations into a 'n' by 'j' matrix where 'n' is the number of quantiles or categories created for the 'by.var' and 'j' is the number of quantiles created for the 'in.var'. By default, 'backtest' creates 5 quantiles.

If 'natural' is TRUE, the data and arguments must meet certain requirements. First, the frequency of the observations and 'ret.var' must be the same. Second, a id.var and date.var are required. Third, a texttt{by.var} is not allowed. Note that the code does not verify that the backtest is truly natural; backtest accepts the value passed by the user as valid.

Value

'backtest' returns an object of class backtest.
The functions show and summary are used to obtain and print a short description and longer summary of the results of the backtest. The accessor functions counts, marginals, mean, naCounts, and turnover extract different parts of the value returned by backtest.

Author(s)

Kyle Campbell kyle.w.campbell@williams.edu

See Also

backtest-class

Examples


data(starmine)

## running a backtest with 1 'in.var' and 1 'ret.var'

bt <- backtest(starmine, in.var = "smi", ret.var = "ret.0.1.m")
summary(bt)

## running a backtest with 2 'in.var' values, 1 'ret.var', and a 'by.var'

bt <- backtest(starmine, in.var = c("smi", "cap.usd"), ret.var =
"ret.0.1.m", by.var = "sector")
summary(bt)

## running a backtest with 1 'in.var', 1 'by.var', and 1 'ret.var'.
## Number of buckets changed from default of 5 to 4.  Change in number
## of buckets only affects the 'in.var' because the 'by.var' column in
## 'starmine' contains character data. For each value in this column
## there is a unique category.

bt <- backtest(starmine, in.var = "smi", by.var = "sector", ret.var =
"ret.0.1.m", buckets = 4)
summary(bt)

## running a backtest with 1 'in.var', multiple 'ret.var', and a
## universe restriction

bt <- backtest(starmine, in.var = "smi",
ret.var = c("ret.0.1.m", "ret.0.6.m", "ret.1.12.m"),
universe = starmine$sector == "HiTec")
summary(bt)

## running a natural backtest with 1 'in.var', multiple 'ret.var' and 10
##buckets

bt <- backtest(starmine, in.var = "smi", ret.var = "ret.0.1.m",
date.var = "date", id.var = "id", buckets = 10, natural = TRUE)
summary(bt)

## draws a plot of turnover

plot(bt, type = "turnover")

## draws a plot of monthly spreads

plot(bt, type = "return")

## draws a fanplot of returns

plot(bt, type = "cumreturn")


[Package backtest version 0.1-0 Index]