returns: Compute Returns

Description Usage Arguments Details Value Author(s) See Also Examples

View source: R/returns.R View source: R/returns.R

Description

Convert prices into returns.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
returns(x, ...)

## Default S3 method:
returns(x, t = NULL, period = NULL, complete.first = TRUE, pad = NULL,
        position = NULL, weights = NULL, rebalance.when = NULL,
        lag = 1, ...)

## S3 method for class 'zoo'
returns(x, period = NULL, complete.first = TRUE,
                      pad = NULL, position = NULL,
                      weights = NULL, rebalance.when = NULL, lag = 1, ...)

## S3 method for class 'p_returns'
print(x, ..., year.rows = TRUE, month.names = NULL,
                         zero.print = "0", plus = FALSE, digits = 1,
                         na.print = NULL)

## S3 method for class 'p_returns'
toLatex(object, ...,
       year.rows = TRUE, ytd = "YTD", month.names = NULL, 
       eol = "\\\\", stand.alone = FALSE)

## S3 method for class 'p_returns'
toHTML(x, ...,
    year.rows = TRUE, ytd = "YTD", month.names = NULL, 
    stand.alone = TRUE, table.style = NULL, table.class = NULL, 
    th.style = NULL, th.class = NULL,
    td.style = "text-align:right; padding:0.5em;", 
    td.class = NULL, tr.style = NULL, tr.class = NULL, browse = FALSE)

.returns(x, pad = NULL, lag)

Arguments

x

a numeric vector (possibly with a dim attribute; ie, a matrix) of prices. Can also be of class zoo, in which case argument t should be NULL.

t

timestamps. See argument "period".

period

Typically character; supported are "hour", "day", "month", "quarter", "year", "ann" (annualised), "ytd" (year-to-date), "mtd" (month-to-date), "itd" (inception-to-date) or a single year, such as "2012". The value of ‘period’ is used only when timestamp information is available: for instance, when t is not NULL or with zoo/xts objects.

All returns are computed as simple returns. They will only be annualised with option "ann"; they will not be annualised when the length of the time series is less than one year. To force annualising in such a case, use ‘ann!’. Annualisation can only work when the timestamp t can be coerced to class Date. The result will have an attribute is.annualised, which is a logical vector.

complete.first

logical. For monthly returns, should the first month (if incomplete) be used.

pad

either NULL (no padding of initial lost observation) or a value used for padding (reasonable values might be NA or 0)

position

numeric; the same length/dimension as x. This argument is currently ignored.

weights

numeric

rebalance.when

numeric

...

further arguments

year.rows

logical. If TRUE (the default), print monthly returns with one row per year.

zero.print

character. How to print zero values.

na.print

character. How to print NA values. (Not supported yet.)

plus

logical. Add a ‘+’ before positive numbers? Default is FALSE.

lag

The lag for computing returns. A positive integer, defaults to one; ignored for time-weighted returns or if t is supplied.

object

an object of class p_returns (‘period returns’)

month.names

character: names of months. Default is an abbreviated month name as provided by the locale. That may cause trouble, notably with toLatex, if such names contain non-ASCII characters: a safe choice is either the numbers 1 to 12, or the character vector month.abb, which lives in the base package.

digits

number of digits in table

ytd

header for YTD

eol

character

stand.alone

logical or character

table.class

character

table.style

character

th.class

character

th.style

character

td.class

character

td.style

character

tr.class

character

tr.style

character

browse

logical: open table in browser?

Details

returns is a generic function. It computes simple returns: current values divided by prior values minus one. The default method works for numeric vectors/matrices.

Holding-Period Returns

When a timestamp is available, returns can compute returns for specific calendar periods.

Portfolio Returns

returns may compute returns for a portfolio specified in weights. The portfolio is rebalanced at rebalance.when; the default is every period.

rebalance.when may either be integers or of the same class as a timestamp (e.g. Date).

Value

If called as returns(x): a numeric vector or matrix, possibly of class zoo.

If called with a period argument: an object of class "p_returns" (period returns), which is a numeric vector of returns with attributes t (timestamp) and period. Main use is to have methods that pretty-print such period returns; currently, there are methods for toLatex and toHTML.

Author(s)

Enrico Schumann

See Also

btest

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
x <- 101:105
returns(x)
returns(x, pad = NA)
returns(x, pad = NA, lag = 2)


## monthly returns
t <- seq(as.Date("2012-06-15"), as.Date("2012-12-31"), by = "1 day")
x <- seq_along(t) + 1000
returns(x, t = t, period = "month")
returns(x, t = t, period = "month", complete.first = FALSE)

### formatting
print(returns(x, t = t, period = "month"), plus = TRUE, digits = 0)

## returns per year (annualised returns)
returns(x, t = t, period = "ann")  ## less than one year, not annualised
returns(x, t = t, period = "ann!") ## less than one year, *but* annualised

is.ann <- function(x)
    attr(x, "is.annualised")

is.ann(returns(x, t = t, period = "ann"))   ## FALSE
is.ann(returns(x, t = t, period = "ann!"))  ## TRUE

enricoschumann/PMwR documentation built on June 30, 2018, 1:08 a.m.