Learn R Programming

PerformanceAnalytics (version 0.9.5)

sd.multiperiod: calculate a multiperiod or annualized Standard Deviation

Description

Standard Deviation of a set of observations $R_{a}$ is given by:

$\sigma = variance(R_{a}) \cr std=\sqrt{\sigma} \cr$

It should follow that the variance is not a linear function of the number of observations. To determine possible variance over multiple periods, it wouldn't make sense to multiply the single-period variance by the total number of periods: this could quickly lead to an absurd result where total variance (or risk) was greater than 100%. It follows then that the total variance needs to demonstrate a decreasing period-to-period increase as the number of periods increases. Put another way, the increase in incremental variance per additional period needs to decrease with some relationship to the number of periods. The standard accepted practice for doing this is to apply the inverse square law. To normalize standard deviation across multiple periods, we multiply by the square root of the number of periods we wish to calculate over. To annualize standard deviation, we multiply by the square root of the number of periods per year.

$$\sqrt{\sigma}\cdot\sqrt{periods}$$

Note that any multiperiod or annualized number should be viewed with suspicion if the number of observations is small.

Usage

sd.multiperiod(x, na.rm=FALSE, periods = 12, ...)
    sd.annualized(x, na.rm=FALSE, periods = 12, ...)
    StdDev.annualized(Ra, na.rm=FALSE, scale = 12, ...)
    StdDev(Ra)
    std(Ra)

Arguments

x, Ra
a vector, matrix, data frame, timeSeries or zoo object of asset returns
periods,scale
number of periods in a year (daily scale = 252, monthly scale = 12, quarterly scale = 4)
na.rm
TRUE/FALSE Remove NA's from the returns?
...
any other passthru parameters

Value

  • standard deviation value, scaled for multiple periods

See Also

sd http://wikipedia.org/wiki/inverse-square_law

Examples

Run this code
data(edhec)
    head(edhec[,6,drop=FALSE])
    sd.annualized(edhec[,6])
    # now for three periods:
    sd.multiperiod(edhec[,6],scale=3)

Run the code above in your browser using DataLab