Two requirements should be made clear. First, the function
Return.calculate
assumes regular price data. In the example, we
downloaded monthly close prices. Prices can be for any time scale, such as
daily, weekly, monthly or annual, as long as the data consists of regular
observations. Irregular observations require time period scaling to be
comparable. Fortunately, to.period
in the xts
package, or aggregate.zoo
in the zoo
package
support management and conversion of irregular time series to regular time series.
Second, if corporate actions, dividends, or other adjustments such as time-
or money-weighting are to be taken into account, those calculations must be
made separately. This is a simple function that assumes fully adjusted close
prices as input. For the IBM timeseries in the example below, dividends and
corporate actions are not contained in the "close" price series, so we end
up with "price returns" instead of "total returns". This can lead to
significant underestimation of the return series over longer time periods.
To use adjusted returns, specify quote="AdjClose"
in
get.hist.quote
, which is found in package
tseries
, or use the Ad
function.
We have changed the default arguments and settings for method
from compound
and simple
to discrete
and log
and difference
to avoid confusion between the return type (discrete, log, difference)
and the chaining method (compound or arithmetic/simple). In most of the rest of PerformanceAnalytics
,
compound and simple are used to refer to the return chaining method which is used with the returns.
The default for this function is to use discrete returns, because most other package
functions use compound chaining by default.
Other method
argument formulations also work for clarity and backwards compatibility:
method='discrete'
has equivalent arguments simple
and arithmetic
method='log'
has equivalent argument compound
and continuous
method='difference'
has equivalent argument diff