Learn R Programming

SharpeR (version 1.3.0)

sr_vcov: Compute variance covariance of Sharpe Ratios.

Description

Computes the variance covariance matrix of sample Sharpe ratios.

Usage

sr_vcov(X,vcov.func=vcov,ope=1)

Arguments

X

an \(n \times p\) matrix of observed returns. It not a matrix, but a numeric of length \(n\), then it is coerced into a \(n \times 1\) matrix.

vcov.func

a function which takes an object of class lm, and computes a variance-covariance matrix.

ope

the number of observations per 'epoch'. For convenience of interpretation, The Sharpe ratio is typically quoted in 'annualized' units for some epoch, that is, 'per square root epoch', though returns are observed at a frequency of ope per epoch. The default value is 1, meaning the code will not attempt to guess what the observation frequency is, and no annualization adjustments will be made.

Value

a list containing the following components:

SR

a vector of (annualized) Sharpe ratios.

Ohat

a \(p \times p\) variance covariance matrix.

p

the number of assets.

Details

Given \(n\) contemporaneous observations of \(p\) returns streams, this function estimates the asymptotic variance covariance matrix of the vector of sample Sharpes, \(\left[\zeta_1,\zeta_2,\ldots,\zeta_p\right]\)

One may use the default method for computing covariance, via the vcov function, or via a 'fancy' estimator, like sandwich:vcovHAC, sandwich:vcovHC, etc.

This code first estimates the covariance of the \(2p\) vector of the vector \(x\) stacked on its Hadamard square, \(x^2\). This is then translated back to a variance covariance on the vector of sample Sharpe ratios via the Delta method.

References

Sharpe, William F. "Mutual fund performance." Journal of business (1966): 119-138. https://ideas.repec.org/a/ucp/jnlbus/v39y1965p119.html

Lo, Andrew W. "The statistics of Sharpe ratios." Financial Analysts Journal 58, no. 4 (2002): 36-52. https://www.ssrn.com/paper=377260

See Also

reannualize

sr-distribution functions, dsr

Other sr: as.sr(), confint.sr(), dsr(), is.sr(), plambdap(), power.sr_test(), predint(), print.sr(), reannualize(), se(), sr_equality_test(), sr_test(), sr_unpaired_test(), sr, summary.sr

Examples

Run this code
# NOT RUN {
X <- matrix(rnorm(1000*3),ncol=3)
colnames(X) <- c("ABC","XYZ","WORM")
Sigmas <- sr_vcov(X)
# make it fat tailed:
X <- matrix(rt(1000*3,df=5),ncol=3)
Sigmas <- sr_vcov(X)
# }
# NOT RUN {
if (require(sandwich)) {
Sigmas <- sr_vcov(X,vcov.func=vcovHC)
}
# }
# NOT RUN {
# add some autocorrelation to X
Xf <- filter(X,c(0.2),"recursive")
colnames(Xf) <- colnames(X)
Sigmas <- sr_vcov(Xf)
# }
# NOT RUN {
if (require(sandwich)) {
Sigmas <- sr_vcov(Xf,vcov.func=vcovHAC)
}
# }
# NOT RUN {
# should run for a vector as well
X <- rnorm(1000)
SS <- sr_vcov(X)

# }

Run the code above in your browser using DataLab